Class cls = om.getClassLoaderResolver().classForName("org.datanucleus.jpa.beanvalidation.BeanValidatorHandler"); Constructor constructor = cls.getConstructor(new Class[]{ObjectManager.class}); return (CallbackHandler) constructor.newInstance(new Object[]{om});
@Override public Object merge(Object entity) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("JPA Merge: - entity: " + entity); } if (entity instanceof PersistenceCapable) { PersistenceCapable pc = (PersistenceCapable) entity; if (pc.jdoIsDetached() && pc.jdoGetObjectId() == null) { throw new IllegalArgumentException("Detached entity with null id cannot be merged."); } // Read id from entity StateManager sm = om.findStateManager(entity); if (sm != null) { // This path is taken by all merge() calls. // We need to isolate merge() calls that were made to Transient object instead of Detached objects AbstractClassMetaData acmd = om.getMetaDataManager() .getMetaDataForClass(entity.getClass(), om.getClassLoaderResolver()); Object id = ForceQueryUtils.getIdFromObject(pc, acmd); if (id != null) { if (sm instanceof ForceJPAStateManagerImpl) { sm.initialiseForDetached(pc, id, sm.getVersion(pc)); entity = sm.getObject(); } } } } return super.merge(entity); }
@Override public Object merge(Object entity) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("JPA Merge: - entity: " + entity); } if (entity instanceof PersistenceCapable) { PersistenceCapable pc = (PersistenceCapable) entity; if (pc.jdoIsDetached() && pc.jdoGetObjectId() == null) { throw new IllegalArgumentException("Detached entity with null id cannot be merged."); } // Read id from entity StateManager sm = om.findStateManager(entity); if (sm != null) { // This path is taken by all merge() calls. // We need to isolate merge() calls that were made to Transient object instead of Detached objects AbstractClassMetaData acmd = om.getMetaDataManager() .getMetaDataForClass(entity.getClass(), om.getClassLoaderResolver()); Object id = ForceQueryUtils.getIdFromObject(pc, acmd); if (id != null) { if (sm instanceof ForceJPAStateManagerImpl) { sm.initialiseForDetached(pc, id, sm.getVersion(pc)); entity = sm.getObject(); } } } } return super.merge(entity); }
/** * Method added to allow a StateManager to be injected into a transient object * so that we can track which fields have been touched. Then if the user calls * <code>merge()</code> on that transient object we can copy the fields over to a detached * object and call <code>merge()</code> on it. If the user called persist instead, we simply * discard this injected StateManager and proceed as usual. * * @param pc PersistenceCapable */ public void injectStateManagerIntoTransient(PersistenceCapable pc) { AbstractClassMetaData acmd = om.getMetaDataManager().getMetaDataForClass(pc.getClass(), om.getClassLoaderResolver()); ForceJPAStateManagerImpl sm = new ForceJPAStateManagerImpl(om, acmd); sm.initialiseForHollowPreConstructed(null, pc); om.putObjectIntoCache(sm); if (acmd.hasVersionStrategy()) { // This is not the right value but we need something to pacify DataNucleus. // We require that the user set a valid version before calling merge sm.setVersion(EPOCH_TIME); } }
final ClassLoaderResolver clr = om.getClassLoaderResolver();
/** * Method added to allow a StateManager to be injected into a transient object * so that we can track which fields have been touched. Then if the user calls * <code>merge()</code> on that transient object we can copy the fields over to a detached * object and call <code>merge()</code> on it. If the user called persist instead, we simply * discard this injected StateManager and proceed as usual. * * @param pc PersistenceCapable */ public void injectStateManagerIntoTransient(PersistenceCapable pc) { AbstractClassMetaData acmd = om.getMetaDataManager().getMetaDataForClass(pc.getClass(), om.getClassLoaderResolver()); ForceJPAStateManagerImpl sm = new ForceJPAStateManagerImpl(om, acmd); sm.initialiseForHollowPreConstructed(null, pc); om.putObjectIntoCache(sm); if (acmd.hasVersionStrategy()) { // This is not the right value but we need something to pacify DataNucleus. // We require that the user set a valid version before calling merge sm.setVersion(EPOCH_TIME); } }
if (fmd == null) enumType = om.getClassLoaderResolver().classForName(type); if (roleForField == MAPPING_COLLECTION_ELEMENT) enumType = om.getClassLoaderResolver().classForName(fmd.getCollection().getElementType()); enumType = om.getClassLoaderResolver().classForName(fmd.getArray().getElementType()); enumType = om.getClassLoaderResolver().classForName(fmd.getMap().getKeyType()); enumType = om.getClassLoaderResolver().classForName(fmd.getMap().getValueType()); if (fmd == null) enumType = om.getClassLoaderResolver().classForName(type); if (roleForField == MAPPING_COLLECTION_ELEMENT) enumType = om.getClassLoaderResolver().classForName(fmd.getCollection().getElementType()); enumType = om.getClassLoaderResolver().classForName(fmd.getArray().getElementType()); enumType = om.getClassLoaderResolver().classForName(fmd.getMap().getKeyType()); enumType = om.getClassLoaderResolver().classForName(fmd.getMap().getValueType());
/** * * @param clr * @param conf */ public BeanValidatorHandler(ObjectManager om) { ValidatorFactory factory; conf = om.getOMFContext().getPersistenceConfiguration(); clr = om.getClassLoaderResolver(); if (conf.hasProperty("javax.persistence.validation.factory")) { //create from javax.persistence.validation.factory if given factory = (ValidatorFactory) conf.getProperty("javax.persistence.validation.factory"); } else { factory = Validation.buildDefaultValidatorFactory(); } validator = factory.usingContext().traversableResolver(new JPATraversalResolver(om)).getValidator(); }
ClassLoaderResolver clr = om.getClassLoaderResolver(); try
/** * Determine if the Bean Validation provider is allowed to reach the property state * @param traversableObject object hosting <code>traversableProperty</code> or null if <code>validateValue</code> is * called * @param traversableProperty the traversable property. * @param rootBeanType type of the root object passed to the Validator. * @param pathToTraversableObject path from the root object to <code>traversableObject</code> (using the path * specification defined by Bean Validator). * @param elementType either <code>FIELD</code> or <code>METHOD</code>. * @return <code>true</code> if the Bean Validation provider is allowed to reach the property state, * <code>false</code> otherwise. */ public boolean isReachable(Object traversableObject, Path.Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType) { AbstractClassMetaData acmd = om.getMetaDataManager().getMetaDataForClass(traversableObject.getClass(), om.getClassLoaderResolver()); if (acmd == null) { return false; } int fieldNumber = acmd.getMetaDataForMember(traversableProperty.getName()).getAbsoluteFieldNumber(); boolean loaded = om.getApiAdapter().isLoaded(om.findStateManager(traversableObject).getObjectProvider(), fieldNumber); if (loaded) { return true; } return false; } }
assertEntity(entityClass); AbstractClassMetaData acmd = om.getMetaDataManager().getMetaDataForClass(entityClass, om.getClassLoaderResolver()); if (acmd == null)
assertEntity(entityClass); AbstractClassMetaData acmd = om.getMetaDataManager().getMetaDataForClass(entityClass, om.getClassLoaderResolver()); if (acmd == null)
ClassLoaderResolver clr = om.getClassLoaderResolver(); QueryMetaData qmd = om.getMetaDataManager().getMetaDataForQuery(null, clr, queryName); if (qmd == null) try resultClass = om.getClassLoaderResolver().classForName(resultClassName); internalQuery.setResultClass(resultClass); return new JPAQuery(this, internalQuery, qmd.getLanguage());
ClassLoaderResolver clr = om.getClassLoaderResolver(); QueryMetaData qmd = om.getMetaDataManager().getMetaDataForQuery(null, clr, queryName); if (qmd == null) try resultClass = om.getClassLoaderResolver().classForName(resultClassName); jpoxQuery.setResultClass(resultClass); return new JPAQuery(this, jpoxQuery, qmd.getLanguage());
om.getMetaDataManager().getMetaDataForClass(entity.getClass(), om.getClassLoaderResolver()); if (lock == LockModeType.OPTIMISTIC || lock == LockModeType.OPTIMISTIC_FORCE_INCREMENT && cmd.getVersionMetaData() == null)
/** * Method to return a query for the specified Criteria Query. * @param criteriaQuery The Criteria query * @return The JPA query to use */ public <T> TypedQuery<T> createQuery(CriteriaQuery<T> criteriaQuery) { CriteriaQueryImpl<T> criteria = (CriteriaQueryImpl<T>)criteriaQuery; String jpqlString = criteria.toString(); TypedQuery<T> query = null; QueryCompilation compilation = criteria.getCompilation(om.getMetaDataManager(), om.getClassLoaderResolver()); if (criteria.getResultType() != null && criteria.getResultType() != compilation.getCandidateClass()) { query = createQuery(jpqlString, criteria.getResultType()); } else { query = createQuery(jpqlString); } org.datanucleus.store.query.Query internalQuery = ((JPAQuery)query).getInternalQuery(); if (compilation.getExprResult() == null) { // If the result was "Object(e)" or "e" then this is meaningless so remove internalQuery.setResult(null); } internalQuery.setCompilation(compilation); return query; }