public String getFieldType() { return getInternal().getTypeName(); }
private Object getHierarchicalMappedChild(AbstractMemberMetaData mmd, ObjectProvider sm) { Collection<Object> coll = getHierarchicalMappedChildren(mmd.getTypeName(), mmd.getMappedBy(), null, sm); if (coll.iterator().hasNext()) { return coll.iterator().next(); } return null; }
/** * Initialize this JavaTypeMapping with the given DatastoreAdapter for the given metadata. * @param mmd FieldMetaData for the field to be mapped (if any) * @param table The datastore container storing this mapping (if any) * @param clr the ClassLoaderResolver */ public void initialize(AbstractMemberMetaData mmd, Table table, ClassLoaderResolver clr) { initialize(mmd, table, clr, mmd.getEmbeddedMetaData(), mmd.getTypeName(), ObjectProvider.EMBEDDED_PC); }
public <Y> SingularAttribute<? super X, Y> getVersion(Class<Y> cls) { String verFieldName = (cmd.getVersionMetaData() != null ? cmd.getVersionMetaData().getFieldName() : null); if (verFieldName != null) { AbstractMemberMetaData verMmd = cmd.getMetaDataForMember(verFieldName); if (cls.isAssignableFrom(verMmd.getType())) { return (SingularAttribute<? super X, Y>) attributes.get(verFieldName); } throw new IllegalArgumentException("Version is not of specified type (" + cls.getName() + "). Should be " + verMmd.getTypeName()); } return null; }
public <Y> SingularAttribute<? super X, Y> getId(Class<Y> cls) { if (cmd.getNoOfPrimaryKeyMembers() > 1) { throw new IllegalArgumentException("More than 1 PK field, so use getIdClassAttributes()"); } int pkPosition = cmd.getPKMemberPositions()[0]; AbstractMemberMetaData mmd = cmd.getMetaDataForManagedMemberAtAbsolutePosition(pkPosition); if (cls.isAssignableFrom(mmd.getType())) { return (SingularAttribute) attributes.get(mmd.getName()); } else { throw new IllegalArgumentException("PK member is not of specified type (" + cls.getName() + "). Should be " + mmd.getTypeName()); } }
if (fields[i].getType().isPrimitive()) String wrapperTypeName = ClassUtils.getWrapperTypeNameForPrimitiveTypeName(fields[i].getTypeName()); visitor.visitFieldInsn(Opcodes.GETSTATIC, wrapperTypeName.replace('.', '/'), "TYPE", "Ljava/lang/Class;"); visitor.visitLdcInsn(fields[i].getTypeName()); visitor.visitMethodInsn(Opcodes.INVOKESTATIC, enhancer.getClassMetaData().getFullClassName().replace('.', '/'),
mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitFieldInsn(Opcodes.GETFIELD, className_ASM, mmd.getName(), ASMUtils.getTypeDescriptorForType(mmd.getTypeName())); if (mmd.getType() == long.class) mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, mmd.getTypeName().replace('.', '/'), "hashCode", "()I");
throw new NucleusUserException("We do not support retrieving values of type " + mmd.getTypeName() + " as an ARRAY." + " Member=" + mapping.getMemberMetaData().getFullFieldName());
protected String getTypeNameForField(AbstractMemberMetaData mmd) { AbstractClassMetaData fieldCmd = classEnhancer.getMetaDataManager().getMetaDataForClass(mmd.getType(), classEnhancer.getClassLoaderResolver()); String fieldTypeName = mmd.getTypeName(); if (fieldCmd != null && fieldCmd.getIdentityType() == IdentityType.APPLICATION) { fieldTypeName = fieldCmd.getObjectidClass(); } return fieldTypeName; }
boolean isBoolean = mmd.getTypeName().equals("boolean"); String getterName = ClassUtils.getJavaBeanGetterName(mmd.getName(), isBoolean); String jdoGetterName = ASMClassEnhancer.MN_GetterPrefix + mmd.getName();
private AbstractMemberMetaData getMemberMetaDataForTuples(AbstractClassMetaData acmd, List<String> tuples) { AbstractMemberMetaData ammd = acmd.getMetaDataForMember(tuples.get(0)); if (ammd == null || tuples.size() == 1) { return ammd; } // more than one tuple, so it must be embedded data String parentFullClassName = acmd.getFullClassName(); for (String tuple : tuples.subList(1, tuples.size())) { EmbeddedMetaData emd = ammd.getEmbeddedMetaData(); if (emd == null) { throw new NucleusFatalUserException( query.getSingleStringQuery() + ": Can only reference properties of a sub-object if " + "the sub-object is embedded."); } DatastoreTable parentTable = getStoreManager().getDatastoreClass(parentFullClassName, getClassLoaderResolver()); parentFullClassName = ammd.getTypeName(); AbstractMemberMetaData parentField = (AbstractMemberMetaData) emd.getParent(); EmbeddedMapping embeddedMapping = (EmbeddedMapping) parentTable.getMappingForFullFieldName(parentField.getFullFieldName()); ammd = findMemberMetaDataWithName(tuple, embeddedMapping); if (ammd == null) { break; } } return ammd; }
AbstractMemberMetaData lastMmd = embMmds.get(embMmds.size()-1); ClassLoaderResolver clr = ec.getClassLoaderResolver(); AbstractClassMetaData embCmd = ec.getMetaDataManager().getMetaDataForClass(lastMmd.getTypeName(), clr); int[] embMmdPosns = embCmd.getAllMemberPositions(); for (int i=0;i<embMmdPosns.length;i++)
private Object lookupParent(AbstractMemberMetaData mmd, JavaTypeMapping mapping, boolean allowNullParent) { Key parentKey = datastoreEntity.getParent(); if (parentKey == null) { if (!allowNullParent) { String childClass = getObjectProvider().getClassMetaData().getFullClassName(); throw new NucleusFatalUserException("Field " + mmd.getFullFieldName() + " should be able to " + "provide a reference to its parent but the entity does not have a parent. " + "Did you perhaps try to establish an instance of " + childClass + " as " + "the child of an instance of " + mmd.getTypeName() + " after the child had already been " + "persisted?"); } else { return null; } } return mapping.getObject(ec, parentKey, NOT_USED); }
throw new NucleusException("Field " + mmd.getFullFieldName() + " cannot be persisted because type=" + mmd.getTypeName() + " with relation type " + mmd.getRelationType(clr) + " is not supported for this datastore"); throw new NucleusException("Field " + mmd.getFullFieldName() + " cannot be persisted because type=" + mmd.getTypeName() + " is not supported for this datastore");
referencedTable = storeMgr.getDatastoreClass(mmd.getTypeName(), clr); if (referencedTable != null)
@Override public Object fetch() { RelationType relType = mmd.getRelationType(clr); if (relType == RelationType.ONE_TO_ONE_UNI || relType == RelationType.ONE_TO_ONE_BI) { Set<String> objectClasses = LDAPUtils.getObjectClassesForClass(effectiveClassMetaData); if (objectClasses.isEmpty()) { // embedded into the current entry return fetchEmbedded(); } // embedded as child-entry return fetchFromChild(); } else if (relType == RelationType.ONE_TO_MANY_UNI || relType == RelationType.ONE_TO_MANY_BI) { if (mmd.hasCollection()) { Class instanceType = mmd.getType(); instanceType = org.datanucleus.store.types.SCOUtils.getContainerInstanceType(instanceType, mmd.getOrderMetaData() != null); Collection<Object> coll = fetchFromChildren(instanceType); return SCOUtils.wrapSCOField(op, fieldNumber, coll, true); } } // TODO Localise this throw new NucleusException("Cant obtain value for field " + mmd.getFullFieldName() + " since type=" + mmd.getTypeName() + " is not supported for this datastore"); }
throw new NucleusException("Field " + mmd.getFullFieldName() + " cannot be persisted because type=" + mmd.getTypeName() + " with relation type " + mmd.getRelationType(clr) + " is not supported for this datastore");
String fieldTypeName = mmd.getTypeName(); if (mmd.getFieldTypes() != null && mmd.getFieldTypes().length == 1)
ClassLoaderResolver clr) DatastoreClass referencedTable = storeMgr.getDatastoreClass(mmd.getTypeName(), clr); if (referencedTable == null)
throw new NucleusException("Cant obtain value for field " + mmd.getFullFieldName() + " since type=" + mmd.getTypeName() + " is not supported for this datastore");