public void addChoiceElement(String xpath, Class elementType) { XMLField field = new XMLField(xpath); addChoiceElement(field, elementType); }
public void useCollectionClass(Class concreteContainerClass) { this.setContainerPolicy(ContainerPolicy.buildPolicyFor(concreteContainerClass)); }
public void addChoiceElement(XMLField sourceField, Class elementType, XMLField targetField) { getFieldToClassMappings().put(sourceField, elementType); this.fieldToClassNameMappings.put(sourceField, elementType.getName()); if (classToFieldMappings.get(elementType) == null) { classToFieldMappings.put(elementType, sourceField); } addChoiceElementMapping(sourceField, elementType, targetField); }
public void addChoiceElement(List<XMLField> srcFields, String elementTypeName, List<XMLField> tgtFields) { for(XMLField sourceField:srcFields) { this.fieldToClassNameMappings.put(sourceField, elementTypeName); } if (getClassNameToSourceFieldsMappings().get(elementTypeName) == null) { getClassNameToSourceFieldsMappings().put(elementTypeName, srcFields); } addChoiceElementMapping(srcFields, elementTypeName, tgtFields); }
public void addChoiceElement(List<XMLField> srcFields, Class elementType, List<XMLField> tgtFields) { for(XMLField sourceField:srcFields) { getFieldToClassMappings().put(sourceField, elementType); this.fieldToClassNameMappings.put(sourceField, elementType.getName()); } if (getClassToSourceFieldsMappings().get(elementType) == null) { getClassToSourceFieldsMappings().put(elementType, srcFields); } addChoiceElementMapping(srcFields, elementType, tgtFields); }
public void preInitialize(AbstractSession session) throws DescriptorException { getAttributeAccessor().setIsWriteOnly(this.isWriteOnly()); getAttributeAccessor().setIsReadOnly(this.isReadOnly()); super.preInitialize(session); Iterator<XMLMapping> mappings = getChoiceElementMappings().values().iterator(); while(mappings.hasNext()){ DatabaseMapping nextMapping = (DatabaseMapping)mappings.next(); nextMapping.setAttributeName(this.getAttributeName()); if(nextMapping.getAttributeAccessor() == temporaryAccessor){ nextMapping.setAttributeAccessor(getAttributeAccessor()); } nextMapping.setDescriptor(getDescriptor()); nextMapping.preInitialize(session); } }
@Override public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session, WriteType writeType) throws DescriptorException { if(this.isReadOnly()) { return; Object attributeValue = getAttributeValueFromObject(object); List<XMLEntry> nestedRows = new ArrayList<XMLEntry>(); XMLRecord record = (XMLRecord)row; ContainerPolicy cp = getContainerPolicy(); Object iterator = cp.iteratorFor(attributeValue); if(null != iterator) { while(cp.hasNext(iterator)) { Object value = cp.next(iterator, session); value = convertObjectValueToDataValue(value, session, record.getMarshaller()); NodeValue associatedNodeValue = null; XMLField associatedField = null; String namespaceUri = rootValue.getNamespaceURI(); fieldValue = rootValue.getObject(); associatedField = getFieldForName(localName, namespaceUri); if(associatedField == null) { associatedField = getClassToFieldMappings().get(fieldValue.getClass()); associatedField = getClassToFieldMappings().get(value.getClass()); ((DOMRecord)row).put(getFields(), nestedRows);
XMLChoiceCollectionMapping xmlChoiceMapping = new XMLChoiceCollectionMapping(); xmlChoiceMapping.setAttributeName(attributeName); copyAccessorToMapping(jaxbMapping, xmlChoiceMapping); xmlChoiceMapping.setProperties(jaxbMapping.getProperties()); xmlChoiceMapping.addChoiceElement(compositeMapping.getXPath(), Link.class); xmlChoiceMapping.addChoiceElement(compositeMapping.getXPath(), refDesc.getJavaClass()); xmlChoiceMapping.setContainerPolicy(jaxbMapping.getContainerPolicy()); xmlChoiceMapping.setConverter(new XMLJavaTypeConverter(Class.forName(adapterClassName, true, cl))); jaxbDescriptor.removeMappingForAttributeName(jaxbMapping.getAttributeName()); jaxbDescriptor.addMapping(xmlChoiceMapping);
public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session) throws DescriptorException { Object attributeValue = getAttributeValueFromObject(object); List<XMLEntry> nestedRows = new ArrayList<XMLEntry>(); XMLRecord record = (XMLRecord)row; ContainerPolicy cp = getContainerPolicy(); Object iterator = cp.iteratorFor(attributeValue); while(cp.hasNext(iterator)) { String namespaceUri = rootValue.getNamespaceURI(); fieldValue = rootValue.getObject(); associatedField = getFieldForName(localName, namespaceUri); if(associatedField == null) { associatedField = getClassToFieldMappings().get(fieldValue.getClass()); associatedField = getClassToFieldMappings().get(value.getClass()); nestedRows.add(entry); ((DOMRecord)row).put(getFields(), nestedRows);
private DatabaseMapping buildXMLChoiceCollectionMapping(String mappingUri) { XMLChoiceCollectionMapping mapping = new XMLChoiceCollectionMapping(); mapping.setAttributeName(getName()); mapping.useCollectionClass(ListWrapper.class); //First add XPath for this property String xPath = getQualifiedXPath(mappingUri, getType().isDataType()); mapping.addChoiceElement(xPath, getType().getImplClass()); //For each substitutable property, create the xpath and add it. Iterator<SDOProperty> properties = this.getSubstitutableElements().iterator(); while(properties.hasNext()) { SDOProperty nextProp = properties.next(); xPath = nextProp.getQualifiedXPath(mappingUri, nextProp.getType().isDataType(), getContainingType()); mapping.addChoiceElement(xPath, nextProp.getType().getImplClass()); } return mapping; }
descriptor.addMapping(sessionFile); XMLChoiceCollectionMapping operationsMapping = new XMLChoiceCollectionMapping(); operationsMapping.setAttributeName("operations"); operationsMapping.setAttributeAccessor(new AttributeAccessor() { public Object getAttributeValueFromObject(Object object) { return ((XRServiceModel)object).getOperationsList(); operationsMapping.addChoiceElement("insert", InsertOperation.class); operationsMapping.addChoiceElement("query", QueryOperation.class); operationsMapping.addChoiceElement("update", UpdateOperation.class); operationsMapping.addChoiceElement("delete", DeleteOperation.class); operationsMapping.addChoiceElement("batch-sql-query", BatchQueryOperation.class); descriptor.addMapping(operationsMapping); return descriptor;
public void setChoiceFieldToClassAssociations(ArrayList associations) { if(associations.size() > 0) { for(Object next:associations) { XMLChoiceFieldToClassAssociation<Converter, XMLField> association = (XMLChoiceFieldToClassAssociation)next; this.addChoiceElement(association.getXmlField(), association.getClassName()); if(association.getConverter() != null) { this.addConverter(association.getXmlField(), association.getConverter()); } } } }
mappingsList.addAll(getChoiceElementMappings().values()); for(XMLMapping next:getChoiceElementMappingsByClass().values()) { if(!(mappingsList.contains(next))) { mappingsList.add(next); ((AbstractCompositeDirectCollectionMapping)nextMapping).setValueConverter(converter); ((AbstractCompositeDirectCollectionMapping)nextMapping).setContainerPolicy(getContainerPolicy()); }else if(nextMapping.isAbstractCompositeCollectionMapping()){ if(converter != null){ ((AbstractCompositeCollectionMapping)nextMapping).setConverter(converter); ((AbstractCompositeCollectionMapping)nextMapping).setContainerPolicy(getContainerPolicy()); } else if(nextMapping instanceof XMLBinaryDataCollectionMapping) { ((XMLBinaryDataCollectionMapping)nextMapping).setContainerPolicy(getContainerPolicy()); if(converter != null) { ((XMLBinaryDataCollectionMapping)nextMapping).setValueConverter(converter); ((XMLAnyCollectionMapping)nextMapping).setContainerPolicy(getContainerPolicy()); if(converter != null && converter instanceof XMLConverter) { ((XMLAnyCollectionMapping)nextMapping).setConverter((XMLConverter)converter); ((XMLCollectionReferenceMapping)nextMapping).setContainerPolicy(getContainerPolicy()); ((XMLCollectionReferenceMapping)nextMapping).setReuseContainer(true);
public void initialize(AbstractSession session) throws DescriptorException { super.initialize(session); if (this.fieldToClassMappings.size() == 0) { this.convertClassNamesToClasses(((XMLConversionManager) session.getDatasourcePlatform().getConversionManager()).getLoader()); Iterator<XMLMapping> mappings = getChoiceElementMappings().values().iterator(); while(mappings.hasNext()){ DatabaseMapping nextMapping = (DatabaseMapping)mappings.next(); ((AbstractCompositeDirectCollectionMapping)nextMapping).setValueConverter(converter); ((AbstractCompositeDirectCollectionMapping)nextMapping).setContainerPolicy(getContainerPolicy()); }else{ if(converter != null){ ((AbstractCompositeCollectionMapping)nextMapping).setConverter(converter); ((AbstractCompositeCollectionMapping)nextMapping).setContainerPolicy(getContainerPolicy());
mapping = new XMLChoiceCollectionMapping(); initializeXMLContainerMapping((ChoiceCollectionMapping) mapping, property.getType().isArray()); JavaClass collectionType = property.getType(); if(isCollection){ XMLChoiceCollectionMapping xmlChoiceCollectionMapping = (XMLChoiceCollectionMapping) mapping; xmlChoiceCollectionMapping.setIsAny(true);
private void initializeNodeValue() { XMLMapping xmlMapping = xmlChoiceCollectionMapping.getChoiceElementMappings().get(xmlField); if(xmlMapping instanceof XMLCompositeDirectCollectionMapping) { choiceElementNodeValue = new XMLCompositeDirectCollectionMappingNodeValue((XMLCompositeDirectCollectionMapping)xmlMapping); } else { choiceElementNodeValue = new XMLCompositeCollectionMappingNodeValue((XMLCompositeCollectionMapping)xmlMapping); } }
public void addChoiceElement(XMLField field, String elementTypeName) { this.fieldToClassNameMappings.put(field, elementTypeName); addChoiceElementMapping(field, elementTypeName); }
public ChoiceCollectionMapping generateChoiceCollectionMapping(Property property, Descriptor descriptor, NamespaceInfo namespace) { ChoiceCollectionMapping mapping = new XMLChoiceCollectionMapping(); initializeXMLContainerMapping(mapping, property.getType().isArray()); initializeXMLMapping((XMLChoiceCollectionMapping)mapping, property);
public Vector<DatabaseField> getFields() { if(fields == null || fields.size() == 0) { fields = this.collectFields(); } return this.fields; }
public boolean marshal(XPathFragment xPathFragment, MarshalRecord marshalRecord, Object object, AbstractSession session, NamespaceResolver namespaceResolver) { Object value = xmlChoiceCollectionMapping.getAttributeValueFromObject(object); if(value == null) { return false; } ContainerPolicy cp = getContainerPolicy(); Object iterator = cp.iteratorFor(value); if (cp.hasNext(iterator)) { XPathFragment groupingFragment = marshalRecord.openStartGroupingElements(namespaceResolver); marshalRecord.closeStartGroupingElements(groupingFragment); } else { return false; } while(cp.hasNext(iterator)) { Object nextValue = cp.next(iterator, session); marshalSingleValue(xPathFragment, marshalRecord, object, nextValue, session, namespaceResolver, ObjectMarshalContext.getInstance()); } return true; }