/** * Accessor for the element type stored in this Collection/Set/List. * @return Name of element type. */ public String getElementType() { return mmd.getCollection().getElementType(); }
public String getXMLForMetaData(CollectionMetaData collmd, String prefix, String indent) { StringBuilder str = new StringBuilder(); str.append(prefix).append("<collection element-type=\"").append(collmd.getElementType()).append("\""); if (collmd.isEmbeddedElement()) { str.append(" embedded-element=\"").append(collmd.isEmbeddedElement()).append("\""); } if (collmd.isDependentElement()) { str.append(" dependent-element=\"").append(collmd.isDependentElement()).append("\""); } if (collmd.isSerializedElement()) { str.append(" serialized-element=\"").append(collmd.isSerializedElement()).append("\""); } str.append(">\n"); // Add extensions processExtensions(collmd.getExtensions(), str, prefix, indent); str.append(prefix).append("</collection>\n"); return str.toString(); }
/** * Accessor for whether the element is a persistable(serialised) * @return Whether the element is PC and is serialised */ public boolean isSerialisedElementPC() { if (mmd.getCollection() != null && mmd.getCollection().isSerializedElement() && mmd.getCollection().elementIsPersistent()) { return true; } return false; }
/** * Accessor for whether the element is embedded into this table. * This can be an embedded persistable, or an embedded simple type * @return Whether the element is embedded. */ public boolean isEmbeddedElement() { if (mmd.getCollection() != null && mmd.getCollection().isSerializedElement()) { // Serialised takes precedence return false; } else if (mmd.getCollection() != null && mmd.getCollection().isEmbeddedElement()) { return true; } return false; }
Class type = optional ? clr.classForName(mmd.getCollection().getElementType()) : mmd.getType(); Object value = getValueFromCellOfType(mapping, 0, cell, type); value = optional ? (value != null ? Optional.of(value) : Optional.empty()) : value; Class memberType = optional ? clr.classForName(mmd.getCollection().getElementType()) : mmd.getType(); AbstractClassMetaData memberCmd = ec.getMetaDataManager().getMetaDataForClass(memberType, clr); try if (components != null) AbstractClassMetaData elementCmd = mmd.getCollection().getElementClassMetaData(ec.getClassLoaderResolver()); for (int i=0;i<components.length;i++) Collection newColl = QueryUtils.orderCandidates((List)coll, clr.classForName(mmd.getCollection().getElementType()), mmd.getOrderMetaData().getOrdering(), ec, clr); if (newColl.getClass() != coll.getClass()) if (components != null) AbstractClassMetaData elementCmd = mmd.getCollection().getElementClassMetaData(ec.getClassLoaderResolver()); array = Array.newInstance(mmd.getType().getComponentType(), components.length); for (int i=0;i<components.length;i++)
ClassLoaderResolver clr = stmt.getQueryGenerator().getClassLoaderResolver(); AbstractMemberMetaData mmd = collExpr.getJavaTypeMapping().getMemberMetaData(); AbstractClassMetaData elemCmd = mmd.getCollection().getElementClassMetaData(clr); CollectionTable joinTbl = (CollectionTable)storeMgr.getTable(mmd); if (elemIsUnbound) elemType = mmd.getCollection().getElementType(); if (!mmd.getCollection().isEmbeddedElement()) DatastoreClass elemTbl = storeMgr.getDatastoreClass(mmd.getCollection().getElementType(), clr); JavaTypeMapping ownerMapping = null; if (mmd.getMappedBy() != null) if (!elemType.equals(mmd.getCollection().getElementType()))
type = clr.classForName(mmd.getCollection().getElementType()); optional = true; if (mmd.getCollection().isSerializedElement()) AbstractClassMetaData elemCmd = mmd.getCollection().getElementClassMetaData(clr); if (elemCmd == null) Collection newColl = QueryUtils.orderCandidates((List)coll, clr.classForName(mmd.getCollection().getElementType()), mmd.getOrderMetaData().getOrdering(), ec, clr); if (newColl.getClass() != coll.getClass())
/** * * Gets the class metadata for a member's type. For collections, get the metadata for the type parameter * * @param ammd The member whose class metadata you want to retrieve * @param clr the classloader resolver to use * @param mdm the metadata manager to use * @return the class metadata object for the given member */ public static AbstractClassMetaData getMemberElementClassMetaData(AbstractMemberMetaData ammd, ClassLoaderResolver clr, MetaDataManager mdm) { if (ammd.getCollection() != null) { return ammd.getCollection().getElementClassMetaData(clr, mdm); } else if (ammd.getMap() != null) { return ammd.getMap().getValueClassMetaData(clr, mdm); } else { return mdm.getMetaDataForClass(ammd.getType(), clr); } }
boolean serialised = ((mmd.hasCollection() && mmd.getCollection().isSerializedElement()) || (mmd.hasArray() && mmd.getArray().isSerializedElement())); boolean embeddedPC = (mmd.hasCollection() && mmd.getCollection().elementIsPersistent() && mmd.getCollection().isEmbeddedElement()) || (mmd.getElementMetaData() != null && mmd.getElementMetaData().getEmbeddedMetaData() != null); boolean elementPC = ((mmd.hasCollection() && mmd.getCollection().elementIsPersistent()) || (mmd.hasArray() && mmd.getArray().elementIsPersistent())); boolean embedded = true; if (mmd.hasCollection()) embedded = mmd.getCollection().isEmbeddedElement(); if (mmd.hasCollection()) elementCls = clr.classForName(mmd.getCollection().getElementType());
if (mmd.getCollection().isDependentElement()) if (mmd.getCollection().isDependentElement()) Class elementType = clr.classForName(mmd.getCollection().getElementType()); for (Object object : attributeValues)
if (ammd.hasCollection() && ammd.getCollection().isSerializedElement()) { throw new InvalidMetaDataException(GAE_LOCALISER, "AppEngine.MetaData.CollectionWithSerializedElementInvalid", ammd.getFullFieldName()); relationClass = clr.classForName(ammd.getCollection().getElementType()); } else if (ammd.getArray() != null) { relationClass = clr.classForName(ammd.getArray().getElementType());
public Boolean getDependentElement() { return getInternal().isDependentElement(); }
public Object remove(ObjectProvider ownerOP, int index, int currentSize) { Object element = get(ownerOP, index); if (indexedList) { // Remove the element at this position removeAt(ownerOP, index, currentSize); } else { // Ordered list doesn't allow indexed removal so just remove the element internalRemove(ownerOP, element, currentSize); } // TODO This does delete of element, yet internalRemove/removeAt also do boolean dependent = ownerMemberMetaData.getCollection().isDependentElement(); if (ownerMemberMetaData.isCascadeRemoveOrphans()) { dependent = true; } if (dependent && !ownerMemberMetaData.getCollection().isEmbeddedElement()) { if (!contains(ownerOP, element)) { // Delete the element if it is dependent and doesn't have a duplicate entry in the list ownerOP.getExecutionContext().deleteObjectInternal(element); } } return element; }
if (mmd.getCollection() != null && mmd.getCollection().isSerializedElement()) AbstractClassMetaData elemCmd = mmd.getCollection().getElementClassMetaData(storeMgr.getNucleusContext().getClassLoaderResolver(null)); if (elemCmd != null && elemCmd.isEmbeddedOnly())
public Boolean getSerializedElement() { return getInternal().isSerializedElement(); }
boolean dependent = collmd.isDependentElement(); if (ownerMemberMetaData.isCascadeRemoveOrphans()) if (dependent && !collmd.isEmbeddedElement() && !collmd.isSerializedElement())
boolean elementPC = (mmd.hasCollection() && mmd.getCollection().elementIsPersistent()); Class elementClass = clr.classForName(getElementType()); if (isSerialisedElement() || isEmbeddedElementPC() || (isEmbeddedElement() && !elementPC) || ClassUtils.isReferenceType(elementClass)) if (mmd.getCollection().getElementClassMetaData(clr).getIdentityType() != IdentityType.APPLICATION)
contmd = new CollectionMetaData(); contmd.setParent(mmd); CollectionMetaData collmd = (CollectionMetaData) contmd; collmd.setElementType(elementTypeStr.toString()); if (!StringUtils.isWhitespace(embeddedElement)) collmd.setEmbeddedElement(Boolean.valueOf(embeddedElement)); collmd.setSerializedElement(Boolean.valueOf(serializedElement)); collmd.setDependentElement(Boolean.valueOf(dependentElement));
if (mmd.getCollection().elementIsPersistent())
contmd = new CollectionMetaData(); ((CollectionMetaData)contmd).setElementType(elementType);