private MetaDataManager getMetaDataManager() { return getExecutionContext().getMetaDataManager(); }
private Object getTransformedValueFromParamValue(Object paramValue, ExecutionContext executionContext) { AbstractClassMetaData acmd = executionContext.getMetaDataManager().getMetaDataForClass(paramValue.getClass(), executionContext.getClassLoaderResolver()); if (acmd != null && paramValue instanceof PersistenceCapable) { return getIdFromObject((PersistenceCapable) paramValue, acmd).toString(); } else if (paramValue instanceof Collection<?>) { return new CollectionParameter((Collection<?>) paramValue); } else { return paramValue; } }
private Object getTransformedValueFromParamValue(Object paramValue, ExecutionContext executionContext) { AbstractClassMetaData acmd = executionContext.getMetaDataManager().getMetaDataForClass(paramValue.getClass(), executionContext.getClassLoaderResolver()); if (acmd != null && paramValue instanceof PersistenceCapable) { return getIdFromObject((PersistenceCapable) paramValue, acmd).toString(); } else if (paramValue instanceof Collection<?>) { return new CollectionParameter((Collection<?>) paramValue); } else { return paramValue; } }
private void addToParentKeyMap(KeyRegistry keyRegistry, Object childValue, Key key, ExecutionContext ec, String expectedType, boolean checkForPolymorphism) { boolean throwException = getStoreManager().getBooleanProperty("datanucleus.appengine.throwExceptionOnUnexpectedPolymorphism", true); if (checkForPolymorphism && !throwException) { // Override the throw of an exception for something that is illogical (to me) checkForPolymorphism = false; } // TODO Remove this check when we dump the old storageVersion. We're storing the Key of the other object // in the owner; there are no remote FKs with the latest storageVersion so why should this check be here? if (checkForPolymorphism && childValue != null && !childValue.getClass().getName().equals(expectedType)) { AbstractClassMetaData acmd = ec.getMetaDataManager().getMetaDataForClass(childValue.getClass(), ec.getClassLoaderResolver()); if (!MetaDataUtils.isNewOrSuperclassTableInheritanceStrategy(acmd)) { throw new UnsupportedOperationException( "Received a child of type " + childValue.getClass().getName() + " for a field of type " + expectedType + ". Unfortunately polymorphism in relationships is only supported for the " + "superclass-table inheritance mapping strategy."); } } keyRegistry.registerParentKeyForOwnedObject(childValue, key); }
private static boolean keyKindIsValid(String kind, AbstractMemberMetaData pkMemberMetaData, Class<?> cls, Key key, ExecutionContext ec, boolean allowSubclasses) { if (key.getKind().equals(kind)) { return true; } if (!allowSubclasses) { return false; } MetaDataManager mdm = ec.getMetaDataManager(); // see if the key kind is a subclass of the requested kind String[] subclasses = mdm.getSubclassesForClass(cls.getName(), true); if (subclasses != null) { for (String subclass : subclasses) { AbstractClassMetaData subAcmd = mdm.getMetaDataForClass(subclass, ec.getClassLoaderResolver()); if (key.getKind().equals(determineKind(subAcmd, ec))) { return true; } } } return false; }
/** * Convenience method to return a managed (POJO) object for the provided Entity for the EntityManager. * @param entity The entity * @param em The EntityManager * @param cls The POJO class being represented here * @return The POJO */ public Object getJPAFromEntity(Entity entity, EntityManager em, Class cls) { ExecutionContext ec = ((JPAEntityManager)em).getExecutionContext(); ClassLoaderResolver clr = ec.getClassLoaderResolver(); AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(cls, clr); return EntityUtils.entityToPojo(entity, cmd, clr, ec, false, ec.getFetchPlan()); } }
/** * Convenience method to return a managed (POJO) object for the provided Entity for the PersistenceManager. * @param entity The entity * @param pm The PersistenceManager * @param cls The POJO class being represented here * @return The POJO */ public Object getJDOFromEntity(Entity entity, PersistenceManager pm, Class cls) { ExecutionContext ec = ((JDOPersistenceManager)pm).getExecutionContext(); ClassLoaderResolver clr = ec.getClassLoaderResolver(); AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(cls, clr); return EntityUtils.entityToPojo(entity, cmd, clr, ec, false, ec.getFetchPlan()); } }
public static Key getKeyForObject(Object pc, ExecutionContext ec) { AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(pc.getClass(), ec.getClassLoaderResolver()); if (cmd.getIdentityType() == IdentityType.DATASTORE) { OID oid = (OID)ec.getApiAdapter().getIdForObject(pc); if (oid == null) { // Not yet persistent, so return null return null; } Object keyValue = oid.getKeyValue(); return EntityUtils.getPkAsKey(keyValue, cmd, ec); } else { // TODO Cater for composite identity Object internalPk = ec.getApiAdapter().getTargetKeyForSingleFieldIdentity(ec.getApiAdapter().getIdForObject(pc)); if (internalPk == null) { // Not yet persistent, so return null return null; } return EntityUtils.getPkAsKey(internalPk, ec.getMetaDataManager().getMetaDataForClass(pc.getClass(), ec.getClassLoaderResolver()), ec); } }
public void persist(JSONObject obj) { // TODO This is flawed persistence since it doesn't handle value-generation etc that the StateManager provides AbstractClassMetaData acmd = ec.getMetaDataManager().getMetaDataForClass(getType(obj), ec.getClassLoaderResolver()); ctx.getStoreManager().getPersistenceHandler().insertObject(new JsonAPIObjectProvider(ec, acmd, obj)); }
public void deleteObject(JSONObject id) { AbstractClassMetaData acmd = ec.getMetaDataManager().getMetaDataForClass(getType(id), ec.getClassLoaderResolver()); JsonAPIObjectProvider op = new JsonAPIObjectProvider(ec, acmd, id); ctx.getStoreManager().getPersistenceHandler().deleteObject(op); }
/** * @see DatastoreIdentityKeyTranslator for an explanation of how this is useful. * * Supported translations: * <ul> * <li>When the pk field is a Long you can give us a Long, an encoded key string, or a Key.</li> * <li>When the pk field is an unencoded String you can give us an unencoded String, an encoded String, or a Key.</li> * <li>When the pk field is an encoded String you can give us an unencoded String, an encoded String, or a Key.</li> * </ul> */ public static Object idToInternalKey(ExecutionContext ec, Class<?> cls, Object val, boolean allowSubclasses) { AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(cls, ec.getClassLoaderResolver()); String kind = determineKind(cmd, ec); AbstractMemberMetaData pkMemberMetaData = cmd.getMetaDataForManagedMemberAtAbsolutePosition(cmd.getPKMemberPositions()[0]); return idToInternalKey(kind, pkMemberMetaData, cls, val, ec, allowSubclasses); }
AbstractClassMetaData cmd = PersistenceUtils.getMemberElementClassMetaData(mmd, forceQuery.getExecutionContext().getClassLoaderResolver(), forceQuery.getExecutionContext().getMetaDataManager()); PropertySymbol ps = new PropertySymbol(expr.getAlias(),
AbstractClassMetaData cmd = PersistenceUtils.getMemberElementClassMetaData(mmd, forceQuery.getExecutionContext().getClassLoaderResolver(), forceQuery.getExecutionContext().getMetaDataManager()); PropertySymbol ps = new PropertySymbol(expr.getAlias(),
public JSONObject findObject(JSONObject id) { AbstractClassMetaData acmd = ec.getMetaDataManager().getMetaDataForClass(getType(id), ec.getClassLoaderResolver()); JsonAPIObjectProvider op = new JsonAPIObjectProvider(ec, acmd, id); ctx.getStoreManager().getPersistenceHandler().fetchObject(op, acmd.getAllMemberPositions()); return (JSONObject) op.getObject(); }
private void appendMappedByExpression(ExpressionBuilderHelper h, InvokeExpression expr) { TupleName fieldName = getMappedExpression(h, expr); /** * The key is defined by @MapKey on the Map field and defaulted to "id" */ String columnToAdd = "id"; AbstractClassMetaData acmd = fieldName.getTuple().size() > 1 ? ec.getMetaDataManager() .getMetaDataForClass(h.compilation.getSymbolTable().getSymbol(fieldName.getShortNamePrefix()) .getValueType(), ec.getClassLoaderResolver()) : h.acmd; AbstractMemberMetaData ammd = acmd.getMetaDataForMember(fieldName.getShortName()); if (ammd.getKeyMetaData() != null) { AbstractClassMetaData cmd = PersistenceUtils.getMemberElementClassMetaData(ammd, ec.getClassLoaderResolver(), ec.getMetaDataManager()); if (cmd != null) { TableImpl joinedTable = ((ForceStoreManager) ec.getStoreManager()).getTable(cmd); ColumnImpl col = joinedTable.getColumnByJavaName(ammd.getKeyMetaData().getMappedBy()); if (col != null) { columnToAdd = col.getFieldName(); } } } h.sb.append(columnToAdd); }
private void appendMappedByExpression(ExpressionBuilderHelper h, InvokeExpression expr) { TupleName fieldName = getMappedExpression(h, expr); /** * The key is defined by @MapKey on the Map field and defaulted to "id" */ String columnToAdd = "id"; AbstractClassMetaData acmd = fieldName.getTuple().size() > 1 ? ec.getMetaDataManager() .getMetaDataForClass(h.compilation.getSymbolTable().getSymbol(fieldName.getShortNamePrefix()) .getValueType(), ec.getClassLoaderResolver()) : h.acmd; AbstractMemberMetaData ammd = acmd.getMetaDataForMember(fieldName.getShortName()); if (ammd.getKeyMetaData() != null) { AbstractClassMetaData cmd = PersistenceUtils.getMemberElementClassMetaData(ammd, ec.getClassLoaderResolver(), ec.getMetaDataManager()); if (cmd != null) { TableImpl joinedTable = ((ForceStoreManager) ec.getStoreManager()).getTable(cmd); ColumnImpl col = joinedTable.getColumnByJavaName(ammd.getKeyMetaData().getMappedBy()); if (col != null) { columnToAdd = col.getFieldName(); } } } h.sb.append(columnToAdd); }
cmd = ec.getMetaDataManager().getMetaDataForClass(symbol.getValueType(), ec.getClassLoaderResolver()); exprMetaData.setClassMetaData(cmd);
AbstractClassMetaData cmd = PersistenceUtils.getMemberElementClassMetaData(ammd, forceQuery.getExecutionContext().getClassLoaderResolver(), forceQuery.getExecutionContext().getMetaDataManager());
cmd = ec.getMetaDataManager().getMetaDataForClass(symbol.getValueType(), ec.getClassLoaderResolver()); exprMetaData.setClassMetaData(cmd);
<T> List<T> toPojoResult(final ExecutionContext ec, Class<T> cls, Iterable<Entity> queryResultIterable, Cursor endCursor) { final ClassLoaderResolver clr = ec.getClassLoaderResolver(); final AbstractClassMetaData acmd = ec.getMetaDataManager().getMetaDataForClass(cls, clr); Utils.Function<Entity, Object> func = new Utils.Function<Entity, Object>() { public Object apply(Entity from) {