public static void addEntityExtraData(Object entity, Object extraData) { DataContext dc = get(); if (dc != null && dc.entityExtraDataMap != null) dc.entityExtraDataMap.put(entity, extraData); }
public static void publish(PublishMode publishMode) { DataContext dc = get(); if (dc != null && dc.dataDispatcher != null && !dc.dataUpdates.isEmpty() && !dc.published && (publishMode == PublishMode.MANUAL || (dc.publishMode.equals(publishMode)))) { log.debug("Publish %s data updates with mode %s", dc.dataUpdates.size(), dc.publishMode); dc.dataDispatcher.publish(dc.getUpdates()); // Publish can be called only once but we have to keep the updates until the end of a GraniteDS request dc.published = true; } }
private static Object getChange(EntityPersister persister, Session session, String entityName, Serializable id, Object entity) { Number version = (Number)persister.getVersion(entity); String uid = getUid(persister, entity); if (uid == null) return null; Object change = null; for (EntityUpdate du : DataContext.get().getDataUpdates()) { if (du.entity instanceof Change) { if (du.type == EntityUpdateType.UPDATE && ((Change)du.entity).getClassName().equals(entityName) && ((Change)du.entity).getId().equals(id)) { change = du.entity; break; } } else if (du.entity.getClass().getName().equals(entityName) && id.equals(persister.getIdentifier(entity, (SessionImplementor)session))) { change = du.entity; break; } } if (change == null) { change = new Change(entityName, id, version, uid); DataContext.addUpdate(EntityUpdateType.UPDATE, change, entity, 1); } else if (change instanceof Change) ((Change)change).updateVersion(version); return change; }
@Override public IInvocationResult postCall(ServiceInvocationContext context, Object result, String componentName, Class<?> componentClass) { List<ContextUpdate> results = new ArrayList<ContextUpdate>(); DataContext dataContext = DataContext.get(); Object[][] updates = dataContext != null ? dataContext.getUpdates() : null; InvocationResult ires = new InvocationResult(result, results); if (componentName != null || componentClass != null) { Set<Class<?>> componentClasses = findComponentClasses(componentName, componentClass, null); if (isBeanAnnotationPresent(componentClasses, context.getMethod().getName(), context.getMethod().getParameterTypes(), BypassTideMerge.class)) ires.setMerge(false); } ires.setUpdates(updates); return ires; }
public static Object getEntityExtraData(Object entity) { DataContext dc = get(); return dc != null && dc.entityExtraDataMap != null ? dc.entityExtraDataMap.get(entity) : null; }
DataContext dataContext = DataContext.get(); Object[][] updates = dataContext != null ? dataContext.getUpdates() : null; ires.setUpdates(updates);
public static boolean handleExclude(Object entity) { if (entity == null || DataContext.get() == null) return true; if (!entity.getClass().isAnnotationPresent(ExcludeFromDataPublish.class)) return false; ExcludeFromDataPublish exclude = entity.getClass().getAnnotation(ExcludeFromDataPublish.class); if (exclude.value() == ExcludeMode.CHANGES) DataContext.addUpdate(EntityUpdateType.REFRESH, entity.getClass(), entity.getClass()); return true; } }
DataContext dataContext = DataContext.get(); Object[][] updates = dataContext != null ? dataContext.getUpdates() : null; ires.setUpdates(updates);
public static void addUpdate(EntityUpdateType type, Object entity, Object source, int priority) { DataContext dc = get(); if (dc != null && dc.dataDispatcher != null) { if (entity instanceof Class<?>) entity = ((Class<?>)entity).getName(); for (EntityUpdate update : dc.dataUpdates) { if (update.type.equals(type) && update.entity.equals(entity)) { if (update.priority < priority) update.priority = priority; return; } } dc.dataUpdates.add(new EntityUpdate(type, entity, source, priority)); dc.updates = null; } }
public static void observe() { DataContext dc = get(); if (dc != null && dc.dataDispatcher != null) { log.debug("Observe data updates"); dc.dataDispatcher.observe(); } }
return invocationContext.proceed(); boolean shouldRemoveContextAtEnd = DataContext.get() == null; boolean shouldInitContext = shouldRemoveContextAtEnd || DataContext.isNull(); boolean onCommit = false;
DataContext.get().setDataUpdatePostprocessor(dataUpdatePostprocessor);