public EJBSelectBridge(EntityContainer container, Schema schema, JDBCQueryMetaData metadata, QueryCommand command) { this.schema = schema; this.metadata = metadata; this.command = command; Class type = metadata.getMethod().getReturnType(); if(Collection.class.isAssignableFrom(type)) { returnType = COLLECTION; } else { returnType = SINGLE; } tm = container.getTransactionManager(); syncBeforeSelect = !container.getBeanMetaData().getContainerConfiguration().getSyncOnCommitOnly(); }
public JDBCSelectorBridge(JDBCStoreManager manager, JDBCQueryMetaData queryMetaData) { this.queryMetaData = queryMetaData; this.manager = manager; EntityContainer container = manager.getContainer(); tm = container.getTransactionManager(); syncBeforeSelect = !container.getBeanMetaData().getContainerConfiguration().getSyncOnCommitOnly(); }
syncOnCommitOnly = containerConfig.getSyncOnCommitOnly();
EntityEnterpriseContext instance = (EntityEnterpriseContext)mi.getEnterpriseContext(); boolean syncOnCommitOnly = metaData.getContainerConfiguration().getSyncOnCommitOnly(); Transaction tx = mi.getTransaction();
private Object findSingleObject(Transaction tx, Method method, Object[] args, EntityEnterpriseContext instance, GenericEntityObjectFactory factory) throws Exception { if(method.getName().equals("findByPrimaryKey")) { if(args[0] == null) throw new IllegalArgumentException("findByPrimaryKey called with null argument."); if(metaData.getContainerConfiguration().getCommitOption() != ConfigurationMetaData.B_COMMIT_OPTION) { Object key = instance.getCacheKey(); if(key == null) { key = ((EntityCache)instanceCache).createCacheKey(args[0]); } if(instanceCache.isActive(key)) { return factory.getEntityEJBObject(key); } } } else if(!metaData.getContainerConfiguration().getSyncOnCommitOnly()) { EntityContainer.synchronizeEntitiesWithinTransaction(tx); } return getPersistenceManager().findEntity(method, args, instance, factory); }
EntityEnterpriseContext instance = (EntityEnterpriseContext)mi.getEnterpriseContext(); boolean syncOnCommitOnly = metaData.getContainerConfiguration().getSyncOnCommitOnly(); Transaction tx = mi.getTransaction();
public void remove(Invocation mi) throws RemoteException, RemoveException { // synchronize entities with the datastore before the bean is removed // this will write queued updates so datastore will be consistent before removal Transaction tx = mi.getTransaction(); if (!getBeanMetaData().getContainerConfiguration().getSyncOnCommitOnly()) synchronizeEntitiesWithinTransaction(tx); // Get the persistence manager to do the dirty work EntityEnterpriseContext ctx = (EntityEnterpriseContext)mi.getEnterpriseContext(); getPersistenceManager().removeEntity(ctx); final Object pk = ctx.getId(); AccessController.doPrivileged(new PrivilegedAction<Object>() { public Object run() { removeTimerService(pk); return null; } }); // We signify "removed" with a null id // There is no need to synchronize on the context since all the threads reaching here have // gone through the InstanceInterceptor so the instance is locked and we only have one thread // the case of reentrant threads is unclear (would you want to delete an instance in reentrancy) ctx.setId(null); removeCount++; }