/** * INTERNAL: */ public void addDefaultEventListener(MetadataEntityListener listener) { m_descriptor.getEventManager().addDefaultEventListener(listener); }
/** * INTERNAL: */ public void addEntityListenerEventListener(MetadataEntityListener listener) { m_descriptor.getEventManager().addEntityListenerEventListener(listener); }
if (! excludeDefaultListeners()) { for (int i = 0; i < getDefaultEventListeners().size(); i++) { DescriptorEventListener listener = (DescriptorEventListener) getDefaultEventListeners().get(i); notifyListener(listener, event); Vector entityListenerEventListeners = ((DescriptorEventManager) entityListenerEventManagers.get(index)).getEntityListenerEventListeners(); notifyListener(listener, event); DescriptorEventListener entityEventListener = ((DescriptorEventManager) entityEventManagers.get(index)).getEntityEventListener(); notifyListener(entityEventListener, event);
initializeEJB30EventManagers(); if (hasAnyListeners() || DescriptorEventListener.class.isAssignableFrom(getDescriptor().getJavaClass())) { setHasAnyEventListeners(true); if (getEventSelectors().elementAt(index) != null) { setHasAnyEventListeners(true); getEventMethods().setElementAt(findMethod(index), index); if (getDescriptor().isChildDescriptor()) { DescriptorEventManager parentEventManager = getDescriptor().getInheritancePolicy().getParentDescriptor().getEventManager(); if (getEventSelectors().elementAt(index) == null) { setHasAnyEventListeners(true); getEventSelectors().setElementAt(parentEventManager.getEventSelectors().elementAt(index), index); getEventMethods().setElementAt(parentEventManager.getEventMethods().elementAt(index), index);
entityListenerEventManagers = new Vector(); if (hasEntityEventListener()) { entityEventManagers.add(this); if (hasEntityListenerEventListeners()) { entityListenerEventManagers.add(this); ClassDescriptor currentDescriptor = getDescriptor(); boolean excludeEntityListeners = excludeSuperclassListeners(); if (eventManager.hasEntityEventListener()) { entityEventManagers.add(eventManager); if (eventManager.hasEntityListenerEventListeners()) { if (!excludeEntityListeners) { entityListenerEventManagers.add(eventManager); excludeEntityListeners = eventManager.excludeSuperclassListeners();
/** * INTERNAL: * Execute a descriptor event for the specified event code. */ protected void executeEvent(int eventCode, ObjectLevelModifyQuery query) { ClassDescriptor referenceDescriptor = getReferenceDescriptor(query.getObject().getClass(), query.getSession()); // PERF: Avoid events if no listeners. if (referenceDescriptor.getEventManager().hasAnyEventListeners()) { referenceDescriptor.getEventManager().executeEvent(new DescriptorEvent(eventCode, query)); } }
clonedDescriptor.getObjectBuilder().setDescriptor(clonedDescriptor); clonedDescriptor.setEventManager((DescriptorEventManager)getEventManager().clone()); clonedDescriptor.getEventManager().setDescriptor(clonedDescriptor);
/** * PUBLIC: * EJB 3.0 support for default listeners. */ public void addDefaultEventListener(DescriptorEventListener listener) { getDefaultEventListeners().addElement(listener); }
/** * INTERNAL: */ public boolean excludeSuperclassListeners() { return m_descriptor.getEventManager().excludeSuperclassListeners(); }
public void injectLifecycle(EntityManagerFactory entityManagerFactory, JpaGpsDevice device) throws JpaGpsDeviceException { CompassGpsInterfaceDevice gps = (CompassGpsInterfaceDevice) device.getGps(); if (eventListener == null) { eventListener = new TopLinkEssentialsEventListener(device); } EntityManager entityManager = (EntityManager) entityManagerFactory.createEntityManager(); Session session = entityManager.getServerSession(); entityManager.close(); Map descriptors = session.getDescriptors(); for (Object o : descriptors.values()) { ClassDescriptor classDescriptor = (ClassDescriptor) o; Class mappedClass = classDescriptor.getJavaClass(); // if we have a parent class that is mapped in JPA and in Compass, then don't add an event listner // since we will add it to the parent descriptor and it will notify this class as well if (classDescriptor.isChildDescriptor()) { Class parentClass = classDescriptor.getInheritancePolicy().getParentDescriptor().getJavaClass(); if (gps.hasMappingForEntityForMirror(parentClass, Cascade.ALL)) { classDescriptor.getEventManager().addListener(dummyEventListener); continue; } } if (gps.hasMappingForEntityForMirror(mappedClass, Cascade.ALL)) { classDescriptor.getDescriptorEventManager().addListener(eventListener); } } }
setCopyPolicy(new InstantiationCopyPolicy()); setInstantiationPolicy(new InstantiationPolicy()); setEventManager(new oracle.toplink.essentials.descriptors.DescriptorEventManager()); setQueryManager(new oracle.toplink.essentials.descriptors.DescriptorQueryManager());
/** * INTERNAL: * Execute a descriptor event for the specified event code. */ protected void executeEvent(int eventCode, ObjectLevelModifyQuery query) { ClassDescriptor referenceDescriptor = getReferenceDescriptor(query.getObject(), query.getSession()); // PERF: Avoid events if no listeners. if (referenceDescriptor.getEventManager().hasAnyEventListeners()) { referenceDescriptor.getEventManager().executeEvent(new oracle.toplink.essentials.descriptors.DescriptorEvent(eventCode, query)); } }
/** * Clones the attributes of the specified object. This is called only from unit of work. * The domainObject sent as parameter is always a copy from the parent of unit of work. */ public void populateAttributesForClone(Object original, Object clone, UnitOfWorkImpl unitOfWork) { // PERF: Avoid synchronized enumerator as is concurrency bottleneck. List mappings = getCloningMappings(); for (int index = 0; index < mappings.size(); index++) { ((DatabaseMapping)mappings.get(index)).buildClone(original, clone, unitOfWork); } // PERF: Avoid events if no listeners. if (getDescriptor().getEventManager().hasAnyEventListeners()) { oracle.toplink.essentials.descriptors.DescriptorEvent event = new oracle.toplink.essentials.descriptors.DescriptorEvent(clone); event.setSession(unitOfWork); event.setOriginalObject(original); event.setEventCode(DescriptorEventManager.PostCloneEvent); getDescriptor().getEventManager().executeEvent(event); } }
/** * INTERNAL: * Merge changes between the objects, this merge algorthim is dependent on the merge manager. */ public void mergeChangesIntoObject(Object target, ObjectChangeSet changeSet, Object source, MergeManager mergeManager) { for (Enumeration changes = changeSet.getChanges().elements(); changes.hasMoreElements();) { ChangeRecord record = (ChangeRecord)changes.nextElement(); //cr 4236, use ObjectBuilder getMappingForAttributeName not the Descriptor one because the // ObjectBuilder method is much more efficient. DatabaseMapping mapping = getMappingForAttributeName(record.getAttribute()); mapping.mergeChangesIntoObject(target, record, source, mergeManager); } // PERF: Avoid events if no listeners. if (getDescriptor().getEventManager().hasAnyEventListeners()) { oracle.toplink.essentials.descriptors.DescriptorEvent event = new oracle.toplink.essentials.descriptors.DescriptorEvent(target); event.setSession(mergeManager.getSession()); event.setOriginalObject(source); event.setChangeSet(changeSet); event.setEventCode(DescriptorEventManager.PostMergeEvent); getDescriptor().getEventManager().executeEvent(event); } }
/** * INTERNAL: * Merge the contents of one object into another, this merge algorthim is dependent on the merge manager. * This merge also prevents the extra step of calculating the changes when it is not required. * If 'cascadeOnly' is true, only foreign reference mappings are merged. */ public void mergeIntoObject(Object target, boolean isUnInitialized, Object source, MergeManager mergeManager, boolean cascadeOnly) { // cascadeOnly is introduced to optimize merge // for GF#1139 Cascade merge operations to relationship mappings even if already registered // PERF: Avoid synchronized enumerator as is concurrency bottleneck. Vector mappings = getDescriptor().getMappings(); for (int index = 0; index < mappings.size(); index++) { DatabaseMapping mapping = (DatabaseMapping)mappings.get(index); if(!cascadeOnly || mapping.isForeignReferenceMapping()){ mapping.mergeIntoObject(target, isUnInitialized, source, mergeManager); } } // PERF: Avoid events if no listeners. if (getDescriptor().getEventManager().hasAnyEventListeners()) { oracle.toplink.essentials.descriptors.DescriptorEvent event = new oracle.toplink.essentials.descriptors.DescriptorEvent(target); event.setSession(mergeManager.getSession()); event.setOriginalObject(source); event.setEventCode(DescriptorEventManager.PostMergeEvent); getDescriptor().getEventManager().executeEvent(event); } }
if (descriptor.getEventManager().hasAnyEventListeners() && shouldRiseEvent) { writeQuery.setDescriptor(descriptor); descriptor.getEventManager().executeEvent(new DescriptorEvent(DescriptorEventManager.PreWriteEvent, writeQuery)); descriptor.getEventManager().executeEvent(new DescriptorEvent(DescriptorEventManager.PreInsertEvent, writeQuery)); } else { descriptor.getEventManager().executeEvent(new DescriptorEvent(DescriptorEventManager.PreUpdateEvent, writeQuery));
/** * INTERNAL: * Register the working copy of a new object and its original. * The user must edit the working copy and the original is used to merge into the parent. * This mapping is kept both ways because lookup is required in both directions. */ protected void registerNewObjectClone(Object clone, Object original, ClassDescriptor descriptor) { // Check if the new objects should be cached. registerNewObjectInIdentityMap(clone, original); getNewObjectsCloneToOriginal().put(clone, original); getNewObjectsOriginalToClone().put(original, clone); // run prePersist callbacks if any logDebugMessage(clone, "register_new_for_persist"); if (descriptor.getEventManager().hasAnyEventListeners()) { oracle.toplink.essentials.descriptors.DescriptorEvent event = new oracle.toplink.essentials.descriptors.DescriptorEvent(clone); event.setEventCode(DescriptorEventManager.PrePersistEvent); event.setSession(this); descriptor.getEventManager().executeEvent(event); } }
if (getDescriptor().getEventManager().hasAnyEventListeners()) { event.setEventCode(DescriptorEventManager.PostBuildEvent); getDescriptor().getEventManager().executeEvent(event);
if (getDescriptor().getEventManager().hasAnyEventListeners()) { oracle.toplink.essentials.descriptors.DescriptorEvent event = new oracle.toplink.essentials.descriptors.DescriptorEvent(copy); event.setSession(policy.getSession()); event.setOriginalObject(original); event.setEventCode(DescriptorEventManager.PostCloneEvent); getDescriptor().getEventManager().executeEvent(event);
if (getDescriptor().getEventManager().hasAnyEventListeners()) { event.setEventCode(DescriptorEventManager.PostBuildEvent); getDescriptor().getEventManager().executeEvent(event);