protected void postBuildAttributesIntoWorkingCopyCloneEvent(Object clone, AbstractRecord databaseRow, ObjectBuildingQuery query, UnitOfWorkImpl unitOfWork, boolean forRefresh) { // Need to run post build or refresh selector, currently check with the query for this, // I'm not sure which should be called it case of refresh building a new object, currently refresh is used... DescriptorEvent event = new DescriptorEvent(clone); event.setQuery(query); event.setSession(unitOfWork); event.setDescriptor(this.descriptor); event.setRecord(databaseRow); if (forRefresh) { event.setEventCode(DescriptorEventManager.PostRefreshEvent); } else { event.setEventCode(DescriptorEventManager.PostBuildEvent); //fire a postBuildEvent then the postCloneEvent unitOfWork.deferEvent(event); event = new DescriptorEvent(clone); event.setQuery(query); event.setSession(unitOfWork); event.setDescriptor(this.descriptor); event.setRecord(databaseRow); //bug 259404: ensure postClone is called for objects built directly into the UnitOfWork //in this case, the original is the clone event.setOriginalObject(clone); event.setEventCode(DescriptorEventManager.PostCloneEvent); } unitOfWork.deferEvent(event); }
event.setSession(cloningSession); event.setOriginalObject(original); event.setDescriptor(descriptor); event.setEventCode(DescriptorEventManager.PostCloneEvent); cloningSession.deferEvent(event);
protected void postBuildAttributesIntoWorkingCopyCloneEvent(Object clone, AbstractRecord databaseRow, ObjectBuildingQuery query, UnitOfWorkImpl unitOfWork, boolean forRefresh) { // Need to run post build or refresh selector, currently check with the query for this, // I'm not sure which should be called it case of refresh building a new object, currently refresh is used... DescriptorEvent event = new DescriptorEvent(clone); event.setQuery(query); event.setSession(unitOfWork); event.setDescriptor(this.descriptor); event.setRecord(databaseRow); if (forRefresh) { event.setEventCode(DescriptorEventManager.PostRefreshEvent); } else { event.setEventCode(DescriptorEventManager.PostBuildEvent); //fire a postBuildEvent then the postCloneEvent unitOfWork.deferEvent(event); event = new DescriptorEvent(clone); event.setQuery(query); event.setSession(unitOfWork); event.setDescriptor(this.descriptor); event.setRecord(databaseRow); //bug 259404: ensure postClone is called for objects built directly into the UnitOfWork //in this case, the original is the clone event.setOriginalObject(clone); event.setEventCode(DescriptorEventManager.PostCloneEvent); } unitOfWork.deferEvent(event); }
/** * 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, CacheKey cacheKey, Object clone, Integer refreshCascade, AbstractSession cloningSession) { List mappings = getCloningMappings(); int size = mappings.size(); if (this.descriptor.hasFetchGroupManager() && this.descriptor.getFetchGroupManager().isPartialObject(original)) { FetchGroupManager fetchGroupManager = this.descriptor.getFetchGroupManager(); for (int index = 0; index < size; index++) { DatabaseMapping mapping = (DatabaseMapping)mappings.get(index); if (fetchGroupManager.isAttributeFetched(original, mapping.getAttributeName())) { mapping.buildClone(original, cacheKey, clone, refreshCascade, cloningSession); } } } else { for (int index = 0; index < size; index++) { ((DatabaseMapping)mappings.get(index)).buildClone(original, cacheKey, clone, refreshCascade, cloningSession); } } // PERF: Avoid events if no listeners. if (this.descriptor.getEventManager().hasAnyEventListeners()) { DescriptorEvent event = new DescriptorEvent(clone); event.setSession(cloningSession); event.setOriginalObject(original); event.setDescriptor(descriptor); event.setEventCode(DescriptorEventManager.PostCloneEvent); cloningSession.deferEvent(event); } }
event.getSession().startOperationProfile(SessionProfiler.DescriptorEvent); event.setDescriptor(getDescriptor()); notifyListeners(event); notifyEJB30Listeners(event);
event.getSession().startOperationProfile(SessionProfiler.DescriptorEvent); event.setDescriptor(getDescriptor()); notifyListeners(event); notifyEJB30Listeners(event);
event.getSession().startOperationProfile(SessionProfiler.DescriptorEvent); event.setDescriptor(getDescriptor()); notifyListeners(event); notifyEJB30Listeners(event);