protected ClassDescriptor buildExpressionBuilderDescriptor() { XMLDescriptor descriptor = new XMLDescriptor(); descriptor.setJavaClass(ExpressionBuilder.class); descriptor.setDefaultRootElement("base-expression"); descriptor.getInheritancePolicy().setParentClass(Expression.class); return descriptor; }
protected XMLDescriptor buildAttachmentDescriptor() { XMLDescriptor descriptor = new XMLDescriptor(); descriptor.setJavaClass(Attachment.class); XMLDirectMapping mimeType = new XMLDirectMapping(); mimeType.setAttributeName("mimeType"); mimeType.setXPath("mime-type/text()"); descriptor.addMapping(mimeType); return descriptor; }
/** * INTERNAL: */ private static XMLDescriptor buildPUPropertyDescriptor(NamespaceResolver resolver) { XMLDescriptor descriptor = new XMLDescriptor(); descriptor.setNamespaceResolver(resolver); descriptor.setJavaClass(SEPersistenceUnitProperty.class); descriptor.addDirectMapping("name", "@name"); descriptor.addDirectMapping("value", "@value"); return descriptor; }
protected ClassDescriptor buildIgnoreNewElementsOrderingPolicyConfigDescriptor() { XMLDescriptor descriptor = new XMLDescriptor(); descriptor.setJavaClass(IgnoreNewElementsOrderingPolicyConfig.class); descriptor.getInheritancePolicy().setParentClass(NodeOrderingPolicyConfig.class); return descriptor; }
if (this.hasInheritance()) { ((org.eclipse.persistence.internal.oxm.QNameInheritancePolicy) this.getInheritancePolicy()).setNamespaceResolver(this.getNamespaceResolver()); if(schemaReference != null && schemaReference.getSchemaContext() != null && (schemaReference.getType() == XMLSchemaReference.COMPLEX_TYPE || schemaReference.getType() == XMLSchemaReference.SIMPLE_TYPE) && getDefaultRootElementType() == null){ if(hasInheritance() && isChildDescriptor()){ XMLField parentField = ((XMLDescriptor)getInheritancePolicy().getParentDescriptor()).getDefaultRootElementField(); setDefaultRootElementType(schemaReference.getSchemaContextAsQName(getNamespaceResolver())); setDefaultRootElementType(schemaReference.getSchemaContextAsQName(getNamespaceResolver())); if (shouldBeReadOnly() && (!session.getDefaultReadOnlyClasses().contains(getJavaClass()))) { session.getDefaultReadOnlyClasses().add(getJavaClass()); if (isInitialized(INITIALIZED) || isInvalid()) { return; setInitializationStage(INITIALIZED); if (isChildDescriptor()) { ClassDescriptor parentDescriptor = getInheritancePolicy().getParentDescriptor(); parentDescriptor.initialize(session); if(parentDescriptor.hasEventManager()) { getEventManager(); for (Enumeration mappingsEnum = getMappings().elements(); mappingsEnum.hasMoreElements();) { DatabaseMapping mapping = (DatabaseMapping) mappingsEnum.nextElement(); validateMappingType(mapping);
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, XMLDescriptor referenceDescriptor, AbstractRecord parentRow, DatabaseField field, Object originalObject, boolean wasXMLRoot) { if ((field == null) && (referenceDescriptor != null) && (referenceDescriptor.getDefaultRootElement() != null)) { field = referenceDescriptor.buildField(referenceDescriptor.getDefaultRootElement()); } if ((field != null) && (referenceDescriptor != null)) { ((XMLRecord) parentRow).setLeafElementType(referenceDescriptor.getDefaultRootElementType()); XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); boolean addXsiType = shouldAddXsiType(((XMLRecord) parentRow).getMarshaller(), referenceDescriptor, originalObject, wasXMLRoot); XMLRecord child = (XMLRecord) objectBuilder.createRecordFor(attributeValue, (XMLField) field, (XMLRecord) parentRow, this); child.setNamespaceResolver(((XMLRecord) parentRow).getNamespaceResolver()); objectBuilder.buildIntoNestedRow(child, attributeValue, session, addXsiType); return child; } return null; }
if (xmlDescriptor.hasInheritance()) { unmarshalRecord = new UnmarshalRecord((TreeObjectBuilder)xmlDescriptor.getObjectBuilder()); unmarshalRecord.setUnmarshalNamespaceResolver(unmarshalNamespaceResolver); unmarshalRecord.setAttributes(atts); unmarshalRecord.setXMLReader(parentRecord.getXMLReader()); Class classValue = xmlDescriptor.getInheritancePolicy().classFromRow(unmarshalRecord, session); if (classValue == null) { QName leafElementType = xmlDescriptor.getDefaultRootElementType(); Object indicator = xmlDescriptor.getInheritancePolicy().getClassIndicatorMapping().get(leafElementType); if(indicator != null) { classValue = (Class)indicator; if (Modifier.isAbstract(xmlDescriptor.getJavaClass().getModifiers())) { throw DescriptorException.missingClassIndicatorField((XMLRecord) unmarshalRecord, xmlDescriptor.getInheritancePolicy().getDescriptor()); unmarshalRecord = (UnmarshalRecord)xmlDescriptor.getObjectBuilder().createRecord(session); unmarshalRecord.setParentRecord(parentRecord); unmarshalRecord.setUnmarshaller(parentRecord.getUnmarshaller());
XMLDescriptor xmlDescriptor = (XMLDescriptor) project.getAliasDescriptors().get(descriptorAlias); if (null != xmlDescriptor) { if (null == xmlDescriptor.getDefaultRootElement()) { xmlDescriptor.setDefaultRootElement(xmlNameTransformer.transformRootElementName(xmlDescriptor.getJavaClass().getName())); xmlDescriptor.setResultAlwaysXMLRoot(false);
TreeObjectBuilder objectBuilder = (TreeObjectBuilder) descriptor.getObjectBuilder(); String defaultRootElementString = descriptor.getDefaultRootElement(); if (!wasXMLRoot && (defaultRootElementString == null)) { AbstractSessionLog.getLog().log(SessionLog.WARNING, "marshal_warning_null_document_root_element", new Object[] { Helper.getShortClassName(this.getClass()), descriptor }); String uri = descriptor.getNonNullNamespaceResolver().resolveNamespacePrefix(rootFragment.getPrefix()); rootFragment.setNamespaceURI(uri); marshalRecord.setLeafElementType(descriptor.getDefaultRootElementType()); getXPathNode().startElement(marshalRecord, rootFragment, object, session, descriptor.getNonNullNamespaceResolver(), objectBuilder, objectValue); String typeValue = descriptor.getSchemaReference().getSchemaContext(); addTypeAttribute(descriptor, marshalRecord, typeValue);
if (isXmlDescriptor() && !wasXMLRoot) { XMLDescriptor xmlDescriptor = (XMLDescriptor)getDescriptor(); if ((xmlDescriptor.getDefaultRootElementType() != null) && (xmlDescriptor.getSchemaReference() != null)) { XMLSchemaReference xmlRef = xmlDescriptor.getSchemaReference(); if ((xmlRef.getType() == 1) && xmlRef.isGlobalDefinition()) { QName ctx = xmlRef.getSchemaContextAsQName(xmlDescriptor.getNamespaceResolver()); if (ctx != null) { if (!ctx.equals(xmlDescriptor.getDefaultRootElementType())) { row.add(xmlDescriptor.getInheritancePolicy().getClassIndicatorField(), xmlRef.getSchemaContext().substring(1));
public SDOOpenSequencedType(SDOTypeHelper sdoTypeHelper) { super(SDOConstants.ORACLE_SDO_URL, "OpenSequencedType", sdoTypeHelper); this.xmlDescriptor.setNamespaceResolver(new NamespaceResolver()); this.xmlDescriptor.setInstantiationPolicy(new TypeInstantiationPolicy(this)); setInstanceClass(OpenSequencedType.class); javaImplClass = OpenSequencedTypeImpl.class; xmlDescriptor.setJavaClass(javaImplClass); setMixed(true); setSequenced(true); setOpen(true); setFinalized(true); }
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, AbstractRecord parentRow) { XMLDescriptor referenceDescriptor = (XMLDescriptor) session.getDescriptor(attributeValue.getClass()); if ((referenceDescriptor != null) && (referenceDescriptor.getDefaultRootElement() != null)) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); return objectBuilder.buildRow(attributeValue, session, referenceDescriptor.buildField(referenceDescriptor.getDefaultRootElement()), (XMLRecord) parentRow); } return null; }
/** * Indicates if a complex type with simple content is to be generated. This is true when * the given descriptor has more than one mapping. It is assumed that isSimple(desc) * will return true for the given descriptor, and that the descriptor will contain at most * one direct with a 'text()' xpath, and any additional mappings are attribute mappings. * * @param desc * @return */ protected boolean isComplexTypeWithSimpleContentRequired(XMLDescriptor desc) { return desc.getMappings().size() > 1 ? true : false; }
/** * Return the descriptor from the list whose java class matches * javaClass. If none exists null will be returned. * * @param javaClass * @param descriptors * @return */ protected XMLDescriptor getDescriptorByClass(Class javaClass, List<XMLDescriptor> descriptors) { for (XMLDescriptor xDesc : descriptors) { if (xDesc.getJavaClass() != null && xDesc.getJavaClass() == javaClass) { return xDesc; } } return null; }
public void addObjectToCache(Object obj, Node node, XMLMapping selfRecordMapping) { // Can't process non-element nodes if (node.getNodeType() != Node.ELEMENT_NODE) { return; } AbstractSession session = context.getSession(obj); XMLDescriptor xmlDescriptor = (XMLDescriptor)session.getDescriptor(obj); DOMRecord row = new DOMRecord((Element)node); row.setSession(session); Vector pk = xmlDescriptor.getObjectBuilder().extractPrimaryKeyFromRow(row, session); if (xmlDescriptor.shouldPreserveDocument() || xmlDescriptor.getPrimaryKeyFieldNames().size() > 0) { if ((pk == null) || (pk.size() == 0)) { pk = new Vector(); pk.addElement(new WeakObjectWrapper(obj)); } CacheKey key = session.getIdentityMapAccessorInstance().acquireDeferredLock(pk, xmlDescriptor.getJavaClass(), xmlDescriptor); if ((xmlDescriptor).shouldPreserveDocument()) { key.setRecord(row); } key.setObject(obj); key.releaseDeferredLock(); } }
protected void setNamespaceResolverOnDescriptors() { for (Iterator descriptors = getDescriptors().values().iterator(); descriptors.hasNext();) { XMLDescriptor descriptor = (XMLDescriptor)descriptors.next(); descriptor.setNamespaceResolver(ns); } } }
public Node getNodeForObject(Object obj) { AbstractSession session = context.getSession(obj); XMLDescriptor xmlDescriptor = (XMLDescriptor)session.getDescriptor(obj); if(xmlDescriptor.shouldPreserveDocument()) { Vector pk = xmlDescriptor.getObjectBuilder().extractPrimaryKeyFromObject(obj, session); if ((pk == null) || (pk.size() == 0)) { pk = new Vector(); pk.addElement(new WeakObjectWrapper(obj)); } CacheKey cacheKey = session.getIdentityMapAccessorInstance().getCacheKeyForObject(pk, xmlDescriptor.getJavaClass(), xmlDescriptor); if(cacheKey != null && cacheKey.getRecord() != null) { return ((DOMRecord)cacheKey.getRecord()).getDOM(); } } return null; }
/** * INTERNAL: * @param type a type to become this Type's base Type. */ public void addBaseType(SDOType type) { if (!this.getBaseTypes().contains(type)) { getBaseTypes().add(type); updateSubtypes(type); if(!(type.isDataType() && (type.getQName().getNamespaceURI() == SDOConstants.SDO_URL || type.getQName().getNamespaceURI() == SDOConstants.SDOJAVA_URL))) { type.getSubTypes().add(this); } if (type.isOpen() && this.isOpen()) { //don't want any mappings on this descriptor DatabaseMapping anyCollectionMapping = getXmlDescriptor().getMappingForAttributeName(ANY_MAPPING_ATTRIBUTE_NAME); getXmlDescriptor().getMappings().remove(anyCollectionMapping); DatabaseMapping anyAttrMapping = getXmlDescriptor().getMappingForAttributeName("openContentPropertiesAttributes"); getXmlDescriptor().getMappings().remove(anyAttrMapping); } //int increaseBy = type.getProperties().size(); //increaseIndices(increaseBy); } }
final QName defaultRootElementType = ((XMLDescriptor) descriptor.getValue()).getDefaultRootElementType();
private String getQualifiedName(SDODataObject currentObject) { String qualifiedName = null; // check if we are at the root - no containmentProperty if (currentObject.getContainmentProperty() == null) { // get ns (without name) from type/schemaReference/schemaContext = "/ns0:PurchaseOrderType" //qualifiedName = ((SDOType)currentObject.getType()).getXmlDescriptor().getNamespaceResolver().resolveNamespaceURI(uri); // property id's do not match - don't use //qualifiedName += ((SDOXSDHelper)currentObject.getHelperContext().getXSDHelper()).getGlobalProperty(uri, currentObject.getType().getName() , true); // hack: get 2nd table name // get ns:name from the ns=nsr(value==uri) name=, or 2nd entry in xmlDescriptor->table[] qualifiedName = currentObject.getType().getXmlDescriptor().getDefaultRootElement(); } else { qualifiedName = getXPathForProperty(currentObject.getContainmentProperty()); } return qualifiedName; }