gpt4 book ai didi

org.eclipse.persistence.oxm.mappings.XMLAnyCollectionMapping类的使用及代码示例

转载 作者:知者 更新时间:2024-03-18 17:14:40 28 4
gpt4 key购买 nike

本文整理了Java中org.eclipse.persistence.oxm.mappings.XMLAnyCollectionMapping类的一些代码示例,展示了XMLAnyCollectionMapping类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。XMLAnyCollectionMapping类的具体详情如下:
包路径:org.eclipse.persistence.oxm.mappings.XMLAnyCollectionMapping
类名称:XMLAnyCollectionMapping

XMLAnyCollectionMapping介绍

[英]Any collection XML mappings map an attribute that contains a heterogenous collection of objects to multiple XML elements. Unlike composite collection XML mappings, the referenced objects may be of different types (including String), and do not need to be related to each other through inheritance or a common interface. The corresponding object attribute should be generic enough for all possible application values. Note that each of the referenced objects (except String) must specify a default root element on their descriptor.

Any collection mappings are useful with the following XML schema constructs:

  • any
  • choice
  • substitution groups

Setting the XPath: TopLink XML mappings make use of XPath statements to find the relevant data in an XML document. The XPath statement is relative to the context node specified in the descriptor. The XPath may contain node type, path, and positional information. The XPath is specified on the mapping using the setXPath method. Note that for XML Any Collection Mappings the XPath is optional.

The following XPath statements may be used to specify the location of XML data relating to an object's name attribute:

XPathDescriptioncontact-methodsThe name information is stored in the contact-methods element.contact-methods/infoThe XPath statement may be used to specify any valid path.contact-methods[2]The XPath statement may contain positional information. In this case the contact information is stored in the second occurrence of the contact-methods element.

Mapping an element of type xs:anyType as an Any Collection Mapping:

XML Schema
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">   <xsd:element name="customer" type="customer-type"/>   <xsd:complexType name="customer-type">     <xsd:sequence>       <xsd:element name="contact-methods" type="xsd:anyType"/>     </xsd:sequence>   </xsd:complexType>   <xsd:element name="address">     <xsd:complexType>       <xsd:sequence>         <xsd:element name="street" type="xsd:string"/>         <xsd:element name="city" type="xsd:string"/>       </xsd:sequence>     </xsd:complexType>   </xsd:element>   <xsd:element name="phone-number" type="xsd:string"/> </xsd:schema>

Code Sample
XMLAnyCollectionMapping contactMethodsMapping = new XMLAnyCollectionMapping(); contactMethodsMapping.setAttributeName("contactMethods"); contactMethodsMapping.setXPath("contact-methods");

More Information: For more information about using the XML Any Collection Mapping, see the "Understanding XML Mappings" chapter of the Oracle TopLink Developer's Guide.
[中]任何集合XML映射都会将包含异构对象集合的属性映射到多个XML元素。与复合集合XML映射不同,被引用的对象可能具有不同的类型(包括字符串),并且不需要通过继承或公共接口相互关联。对于所有可能的应用程序值,相应的对象属性应该足够通用。请注意,每个被引用的对象(字符串除外)必须在其描述符上指定一个默认根元素。
任何集合映射都适用于以下XML架构构造:
*任何
*选择
*取代基
设置XPath:TopLink XML映射使用XPath语句在XML文档中查找相关数据。XPath语句与描述符中指定的上下文节点相关。XPath可能包含节点类型、路径和位置信息。XPath是使用setXPath方法在映射上指定的。请注意,对于任何XML集合映射,XPath都是可选的。
以下XPath语句可用于指定与对象名称属性相关的XML数据的位置:
XPathDescriptioncontact methods名称信息存储在contact methods元素中。联系人方法/infoxpath语句可用于指定任何有效路径。联系方式[2]XPath语句可能包含位置信息。在这种情况下,联系人信息存储在contact methods元素的第二个匹配项中。
将xs:anyType类型的元素映射为Any集合映射:
XML模式
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">   <xsd:element name="customer" type="customer-type"/>   <xsd:complexType name="customer-type">     <xsd:sequence>       <xsd:element name="contact-methods" type="xsd:anyType"/>     </xsd:sequence>   </xsd:complexType>   <xsd:element name="address">     <xsd:complexType>       <xsd:sequence>         <xsd:element name="street" type="xsd:string"/>         <xsd:element name="city" type="xsd:string"/>       </xsd:sequence>     </xsd:complexType>   </xsd:element>   <xsd:element name="phone-number" type="xsd:string"/> </xsd:schema>
代码示例
XMLAnyCollectionMapping contactMethodsMapping = new XMLAnyCollectionMapping(); contactMethodsMapping.setAttributeName("contactMethods"); contactMethodsMapping.setXPath("contact-methods");
更多信息:有关使用XML任意集合映射的更多信息,请参阅《Oracle TopLink开发人员指南》的“理解XML映射”一章。

代码示例

代码示例来源:origin: com.haulmont.thirdparty/eclipselink

protected void addOpenMappings() {
  XMLAnyCollectionMapping anyMapping = new XMLAnyCollectionMapping();
  anyMapping.setAttributeName(ANY_MAPPING_ATTRIBUTE_NAME);
  anyMapping.setGetMethodName(ANY_MAPPING_GET_METHOD_NAME);
  anyMapping.setSetMethodName(ANY_MAPPING_SET_METHOD_NAME);
  anyMapping.setUseXMLRoot(true);
  getXmlDescriptor().addMapping(anyMapping);
  XMLAnyAttributeMapping anyAttrMapping = new XMLAnyAttributeMapping();
  anyAttrMapping.setAttributeName("openContentPropertiesAttributes");
  anyAttrMapping.setGetMethodName("_getOpenContentPropertiesAttributesMap");
  anyAttrMapping.setSetMethodName("_setOpenContentPropertiesAttributesMap");
  getXmlDescriptor().addMapping(anyAttrMapping);
}

代码示例来源:origin: com.haulmont.thirdparty/eclipselink

public XMLAnyCollectionMapping() {
  this.containerPolicy = ContainerPolicy.buildDefaultPolicy();
  useXMLRoot = false;
  setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_NONE_AS_ELEMENT);
}

代码示例来源:origin: com.haulmont.thirdparty/eclipselink

ContainerPolicy cp = getContainerPolicy();
Object container = null;
if (reuseContainer) {
  Object currentObject = record.getCurrentObject();
  Object value = getAttributeAccessor().getAttributeValueFromObject(currentObject);
  container = value != null ? value : cp.containerInstance();
} else {
  if (isUnmappedContent(next)) {
    if ((next.getNodeType() == Node.TEXT_NODE) && this.isMixedContent()) {
      if (next.getNodeValue().trim().length() > 0) {
        objectValue = next.getNodeValue();
        objectValue = convertDataValueToObjectValue(objectValue, session, record.getUnmarshaller());
        cp.addInto(objectValue, container, session);
        referenceDescriptor = getDescriptor(nestedRecord, session, null);
        objectValue = buildObjectForNonXMLRoot(referenceDescriptor, getConverter(), query, record, nestedRecord, joinManager, session, next, container, cp);
      } else {
        String schemaType = ((Element) next).getAttributeNS(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, XMLConstants.SCHEMA_TYPE_ATTRIBUTE);
          try {
            QName qname = new QName(nestedRecord.getNamespaceURI(), nestedRecord.getLocalName());
            referenceDescriptor = getDescriptor(nestedRecord, session, qname);
          } catch (XMLMarshalException e) {
            referenceDescriptor = null;
        if (getKeepAsElementPolicy() == UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT || (referenceDescriptor == null && getKeepAsElementPolicy() == UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT)) {
          Object objVal = buildObjectNoReferenceDescriptor(record, getConverter(), session, next, null, null);

代码示例来源:origin: org.eclipse.persistence/org.eclipse.persistence.core

public Object valueFromRow(AbstractRecord row, JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, CacheKey cacheKey, AbstractSession executionSession, boolean isTargetProtected, Boolean[] wasCacheUsed) throws DatabaseException {
  XMLRecord record = (XMLRecord) row;
  if (getField() != null) {
    //Get the nested row represented by this field to build the collection from
    Object nested = record.get(getField());
    if (nested instanceof Vector) {
      nested = ((Vector) nested).firstElement();
    }
    if (!(nested instanceof XMLRecord)) {
      return null;
    }
    record = (XMLRecord) nested;
  }
  return buildObjectValuesFromDOMRecord((DOMRecord) record, executionSession, sourceQuery, joinManager);
}

代码示例来源:origin: org.eclipse.persistence/com.springsource.org.eclipse.persistence

public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session) throws DescriptorException {
  if (this.isReadOnly()) {
    return;
  Object attributeValue = this.getAttributeValueFromObject(object);
  Node root = record.getDOM();
  org.w3c.dom.Document doc = record.getDocument();
    root = XPathEngine.getInstance().create((XMLField) getField(), record.getDOM(), session);
    DOMRecord rootRecord = new DOMRecord(root);
    rootRecord.setSession(session);
  ContainerPolicy cp = this.getContainerPolicy();
  ArrayList childNodes = getUnmappedChildNodes(record.getDOM().getChildNodes());
  Object iter = cp.iteratorFor(attributeValue);
  int childNodeCount = 0;
  while (cp.hasNext(iter) && (childNodeCount < childNodes.size())) {
    Object element = cp.next(iter, session);
    if(this.getConverter() != null) {
      element = getConverter().convertObjectValueToDataValue(element, session, record.getMarshaller());
    if (usesXMLRoot() && (element instanceof XMLRoot)) {
      xmlRootField = new XMLField();
      wasXMLRoot = true;
      DOMRecord nestedRecord = (DOMRecord) buildCompositeRow(element, session, referenceDescriptor, row, xmlRootField, element, wasXMLRoot);
      if (nestedRecord != null) {
        if (nestedRecord.getDOM() != nextChild) {

代码示例来源:origin: org.eclipse.persistence/com.springsource.org.eclipse.persistence

ContainerPolicy cp = getContainerPolicy();
Object container = null;
if (reuseContainer) {
  Object currentObject = record.getCurrentObject();
  Object value = getAttributeAccessor().getAttributeValueFromObject(currentObject);
  container = value != null ? value : cp.containerInstance();
} else {
  if (isUnmappedContent(next)) {
    if ((next.getNodeType() == Node.TEXT_NODE) && this.isMixedContent()) {
      if (next.getNodeValue().trim().length() > 0) {
        objectValue = next.getNodeValue();
        if(getConverter() != null) {
          objectValue = getConverter().convertDataValueToObjectValue(objectValue, session, record.getUnmarshaller());
        referenceDescriptor = getDescriptor(nestedRecord, session, null);
        objectValue = buildObjectForNonXMLRoot(referenceDescriptor, getConverter(), query, record, nestedRecord, joinManager, session, next, container, cp);
      } else {
        String schemaType = ((Element) next).getAttributeNS(XMLConstants.SCHEMA_INSTANCE_URL, XMLConstants.SCHEMA_TYPE_ATTRIBUTE);
          try {
            QName qname = new QName(nestedRecord.getNamespaceURI(), nestedRecord.getLocalName());
            referenceDescriptor = getDescriptor(nestedRecord, session, qname);
          } catch (XMLMarshalException e) {
            referenceDescriptor = null;
        if ((referenceDescriptor != null) && (getKeepAsElementPolicy() != UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT)) {
          buildObjectAndWrapInXMLRoot(referenceDescriptor, getConverter(), query, record, nestedRecord, joinManager, session, next, container, cp);
        } else if ((referenceDescriptor == null) && (getKeepAsElementPolicy() == UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT)) {

代码示例来源:origin: org.eclipse.persistence/com.springsource.org.eclipse.persistence

descriptor.addMapping(allMapping);
XMLAnyCollectionMapping orderedAttributesMapping = new XMLAnyCollectionMapping();
orderedAttributesMapping.setAttributeName("orderedAttributes");
descriptor.addMapping(orderedAttributesMapping);

代码示例来源:origin: com.haulmont.thirdparty/eclipselink

public SDOChangeSummaryType(SDOTypeHelper sdoTypeHelper) {
  super(SDOConstants.SDO_URL, SDOConstants.CHANGESUMMARY, sdoTypeHelper);
  setInstanceClass(ChangeSummary.class);
  xmlDescriptor.setJavaClass(SDOChangeSummary.class);
  xmlDescriptor.setSequencedObject(false);
  
  XMLDirectMapping loggingMapping = new XMLDirectMapping();
  loggingMapping.setAttributeName("loggingMapping");
  loggingMapping.setXPath("@logging");
  loggingMapping.setNullValue(Boolean.TRUE);
  xmlDescriptor.addMapping(loggingMapping);
  XMLCompositeDirectCollectionMapping createdMapping = new XMLCompositeDirectCollectionMapping();
  createdMapping.setAttributeName("createdXPaths");
  createdMapping.setXPath("@create");
  createdMapping.useCollectionClass(ArrayList.class);
  ((XMLField)createdMapping.getField()).setUsesSingleNode(true);
  xmlDescriptor.addMapping(createdMapping);
  XMLCompositeDirectCollectionMapping deletedMapping = new XMLCompositeDirectCollectionMapping();
  deletedMapping.setAttributeName("deletedXPaths");
  deletedMapping.setXPath("@delete");
  deletedMapping.useCollectionClass(ArrayList.class);
  ((XMLField)deletedMapping.getField()).setUsesSingleNode(true);
  xmlDescriptor.addMapping(deletedMapping);
  XMLAnyCollectionMapping aChangeMapping = new XMLAnyCollectionMapping();
  aChangeMapping.setAttributeName("modifiedDoms");
  aChangeMapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT);
  aChangeMapping.useCollectionClass(ArrayList.class);
  xmlDescriptor.addMapping(aChangeMapping);
}

代码示例来源:origin: com.haulmont.thirdparty/eclipselink

nr.put(SERVICE_NAMESPACE_PREFIX, tns);
nr.setDefaultNamespaceURI(tns);
XMLAnyCollectionMapping parametersMapping = new XMLAnyCollectionMapping();
parametersMapping.setAttributeName("parameters");
parametersMapping.setAttributeAccessor(new AttributeAccessor() {
  Project oxProject;
  DBWSAdapter dbwsAdapter;
parametersMapping.setKeepAsElementPolicy(KEEP_UNKNOWN_AS_ELEMENT);
invocationDescriptor.addMapping(parametersMapping);
oxProject.addDescriptor(invocationDescriptor);

代码示例来源:origin: org.eclipse.persistence/org.eclipse.persistence.core

mappingsList.addAll(getChoiceElementMappings().values());
if(isAny){
  anyMapping = new XMLAnyCollectionMapping();
  anyMapping.setMixedContent(false);
  anyMapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT);
  anyMapping.setUseXMLRoot(true);
  mappingsList.add(anyMapping);

代码示例来源:origin: org.eclipse.persistence/org.eclipse.persistence.core

boolean wasXMLRoot = false;
if (usesXMLRoot() && (element instanceof XMLRoot)) {
  wasXMLRoot = true;
  xmlRootField = new XMLField();
  writeSimpleValue(xmlRootField, element, originalObject, record, doc, root, wasXMLRoot, session);
} else if (element instanceof org.w3c.dom.Node) {
  Node importedCopy = doc.importNode((Node) element, true);
  XMLDescriptor referenceDescriptor = (XMLDescriptor) session.getDescriptor(element.getClass());
  if (referenceDescriptor == null) {
    writeSimpleValue(xmlRootField, element, originalObject, record, doc, root, wasXMLRoot, session);
    return;
  DOMRecord nestedRecord = (DOMRecord) buildCompositeRow(element, session, referenceDescriptor, row, xmlRootField, originalObject, wasXMLRoot);
  if (nestedRecord != null) {
    root.appendChild(nestedRecord.getDOM());

代码示例来源:origin: org.eclipse.persistence/org.eclipse.persistence.sdo

addMappingToOwner(false, indexToAdd);
} else if (isNameCollision()) {
  xmlMapping = new XMLAnyCollectionMapping();
  xmlMapping.setAttributeName(getName());
  addMappingToOwner(true, indexToAdd);

代码示例来源:origin: org.eclipse.persistence/org.eclipse.persistence.core

@Override
public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session, WriteType writeType) throws DescriptorException {
  if (this.isReadOnly()) {
    return;
  Object attributeValue = this.getAttributeValueFromObject(object);
  Node root = record.getDOM();
  org.w3c.dom.Document doc = record.getDocument();
    root = XPathEngine.getInstance().create((XMLField) getField(), record.getDOM(), session);
    DOMRecord rootRecord = new DOMRecord(root);
    rootRecord.setSession(session);
  ContainerPolicy cp = this.getContainerPolicy();
  ArrayList childNodes = getUnmappedChildNodes(record.getDOM().getChildNodes());
  Object iter = cp.iteratorFor(attributeValue);
  int childNodeCount = 0;
    while (cp.hasNext(iter) && (childNodeCount < childNodes.size())) {
      Object element = cp.next(iter, session);
      element = convertObjectValueToDataValue(element, session, record.getMarshaller());
      Object originalObject = element;
      Node nextChild = null;
      if (usesXMLRoot() && (element instanceof XMLRoot)) {
        xmlRootField = new XMLField();
        wasXMLRoot = true;
        DOMRecord nestedRecord = (DOMRecord) buildCompositeRow(element, session, referenceDescriptor, row, xmlRootField, element, wasXMLRoot);
        if (nestedRecord != null) {

代码示例来源:origin: org.eclipse.persistence/org.eclipse.persistence.core

descriptor.addMapping(allMapping);
XMLAnyCollectionMapping orderedAttributesMapping = new XMLAnyCollectionMapping();
orderedAttributesMapping.setAttributeName("orderedAttributes");
descriptor.addMapping(orderedAttributesMapping);

代码示例来源:origin: org.eclipse.persistence/org.eclipse.persistence.sdo

public SDOChangeSummaryType(SDOTypeHelper sdoTypeHelper) {
  super(SDOConstants.SDO_URL, SDOConstants.CHANGESUMMARY, sdoTypeHelper);
  setInstanceClass(ChangeSummary.class);
  xmlDescriptor.setJavaClass(SDOChangeSummary.class);
  xmlDescriptor.setSequencedObject(false);
  XMLDirectMapping loggingMapping = new XMLDirectMapping();
  loggingMapping.setAttributeName("loggingMapping");
  loggingMapping.setXPath("@logging");
  loggingMapping.setNullValue(Boolean.TRUE);
  xmlDescriptor.addMapping(loggingMapping);
  XMLCompositeDirectCollectionMapping createdMapping = new XMLCompositeDirectCollectionMapping();
  createdMapping.setAttributeName("createdXPaths");
  createdMapping.setXPath("@create");
  createdMapping.useCollectionClass(ArrayList.class);
  ((XMLField)createdMapping.getField()).setUsesSingleNode(true);
  xmlDescriptor.addMapping(createdMapping);
  XMLCompositeDirectCollectionMapping deletedMapping = new XMLCompositeDirectCollectionMapping();
  deletedMapping.setAttributeName("deletedXPaths");
  deletedMapping.setXPath("@delete");
  deletedMapping.useCollectionClass(ArrayList.class);
  ((XMLField)deletedMapping.getField()).setUsesSingleNode(true);
  xmlDescriptor.addMapping(deletedMapping);
  XMLAnyCollectionMapping aChangeMapping = new XMLAnyCollectionMapping();
  aChangeMapping.setAttributeName("modifiedDoms");
  aChangeMapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT);
  aChangeMapping.useCollectionClass(ArrayList.class);
  xmlDescriptor.addMapping(aChangeMapping);
}

代码示例来源:origin: org.eclipse.persistence/org.eclipse.persistence.dbws

nr.put(SERVICE_NAMESPACE_PREFIX, tns);
nr.setDefaultNamespaceURI(tns);
XMLAnyCollectionMapping parametersMapping = new XMLAnyCollectionMapping();
parametersMapping.setAttributeName("parameters");
parametersMapping.setAttributeAccessor(new AttributeAccessor() {
  Project oxProject;
  DBWSAdapter dbwsAdapter;
parametersMapping.setKeepAsElementPolicy(KEEP_UNKNOWN_AS_ELEMENT);
invocationDescriptor.addMapping(parametersMapping);
oxProject.addDescriptor(invocationDescriptor);

代码示例来源:origin: com.haulmont.thirdparty/eclipselink

mappingsList.addAll(getChoiceElementMappings().values());
if(isAny){        	
  anyMapping = new XMLAnyCollectionMapping();
  anyMapping.setMixedContent(false);
  anyMapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT);
  anyMapping.setUseXMLRoot(true);
  mappingsList.add(anyMapping);

代码示例来源:origin: com.haulmont.thirdparty/eclipselink

boolean wasXMLRoot = false;
if (usesXMLRoot() && (element instanceof XMLRoot)) {
  wasXMLRoot = true;
  xmlRootField = new XMLField();
  writeSimpleValue(xmlRootField, element, originalObject, record, doc, root, wasXMLRoot, session);
} else if (element instanceof org.w3c.dom.Node) {
  Node importedCopy = doc.importNode((Node) element, true);
  XMLDescriptor referenceDescriptor = (XMLDescriptor) session.getDescriptor(element.getClass());
  if (referenceDescriptor == null) {
    writeSimpleValue(xmlRootField, element, originalObject, record, doc, root, wasXMLRoot, session);
    return;
  DOMRecord nestedRecord = (DOMRecord) buildCompositeRow(element, session, referenceDescriptor, row, xmlRootField, originalObject, wasXMLRoot);
  if (nestedRecord != null) {
    root.appendChild(nestedRecord.getDOM());

代码示例来源:origin: com.haulmont.thirdparty/eclipselink

addMappingToOwner(false, indexToAdd);
} else if (isNameCollision()) {
  xmlMapping = new XMLAnyCollectionMapping();
  xmlMapping.setAttributeName(getName());
  addMappingToOwner(true, indexToAdd);

代码示例来源:origin: com.haulmont.thirdparty/eclipselink

public Object valueFromRow(AbstractRecord row, JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, CacheKey cacheKey, AbstractSession executionSession, boolean isTargetProtected, Boolean[] wasCacheUsed) throws DatabaseException {
  XMLRecord record = (XMLRecord) row;
  if (getField() != null) {
    //Get the nested row represented by this field to build the collection from
    Object nested = record.get(getField());
    if (nested instanceof Vector) {
      nested = ((Vector) nested).firstElement();
    }
    if (!(nested instanceof XMLRecord)) {
      return null;
    }
    record = (XMLRecord) nested;
  }
  return buildObjectValuesFromDOMRecord((DOMRecord) record, executionSession, sourceQuery, joinManager);
}

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com