users@jaxb.java.net

Mapping interfaces

From: Andrew Mansfield <AMansfie_at_globeop.com>
Date: Mon, 23 Feb 2009 14:25:07 -0000

Hi,

I have a problem that has me completely stumped. I have the following
class outline for a top level container for some runtime configuration
e.g.

<code>
public void setExporters(List<Exporter> exporters) {
                log.info("Adding exporters:"+exporters);
                this.exporters = exporters;
        }
        
        public void setImporters(List<Importer> importers) {
                log.info("Adding importers:"+importers);
                this.importers = importers;
        }
        
        public void setMessageStores(List<MessageStore> messageStores) {
                this.messageStores = messageStores;
        }
        
        @XmlElementWrapper(name="messageStores",namespace="")
        
@XmlElement(name="messageStore",type=PersistentMessageStore.class)
        public List<MessageStore> getMessageStores() {
                return messageStores;
        }
        
        @XmlElementWrapper(name="importers",namespace="")
        @XmlAnyElement
        public List<Importer> getImporters() {
                return importers;
        }
        
        @XmlElementWrapper(name="exporters",namespace="")
        @XmlAnyElement(lax=true)
        public List<Exporter> getExporters() {
                return exporters;
        }

</code>

The exporters and importers are never populated but the message stores
are. The funny thing is that the message store has elements in it that
use the @XmlAnyElement annotation in exactly the same format as
getImporters and getExporters and it works just fine. My debug
statements show the objects being recognised and unmarshalled. I have
followed the base rules and have all required classes in the JXBContext.
Any one have any ideas why importers and exporters are never
unmarshalled ?

Here is the schema that is generated.

<code>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="configuration" type="jaxbConfiguration"/>

  <xs:element name="fileSystemExporter" type="fileSystemExporter"/>

  <xs:element name="fileSystemImporter" type="fileSystemImporter"/>

  <xs:element name="genericMessageStoreHandler"
type="genericMessageStoreHandler"/>

  <xs:element name="kondorExporter" type="kondorExporter"/>

  <xs:element name="messageStore" type="persistentMessageStore"/>

  <xs:element name="mqExporter" type="jmsExporter"/>

  <xs:element name="mqImporter" type="jmsImporter"/>

  <xs:element name="swiftTransformer" type="swiftTransformer"/>

  <xs:element name="xmlTransformer" type="xmlTransformer"/>

  <xs:element name="xpathMessageStoreFilter"
type="xpathMessageStoreFilter"/>

  <xs:complexType name="jaxbConfiguration">
    <xs:sequence>
      <xs:element name="exporters" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:any processContents="lax" namespace="##other"
minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="persistentMessageStore">
    <xs:complexContent>
      <xs:extension base="abstractMessageStore">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="abstractMessageStore" abstract="true">
    <xs:complexContent>
      <xs:extension base="abstractModule">
        <xs:sequence>
          <xs:any processContents="lax" namespace="##other"/>
          <xs:element name="messageStoreHandlers" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="messageStoreHandler"
type="genericMessageStoreHandler" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="abstractModule" abstract="true">
    <xs:sequence>
      <xs:element name="enabled" type="xs:boolean"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="genericMessageStoreHandler">
    <xs:sequence>
      <xs:any processContents="lax" namespace="##other"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="scope" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="xpathMessageStoreFilter">
    <xs:sequence>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="xpathQueryString" type="xs:string"
minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="swiftTransformer">
    <xs:sequence>
      <xs:element name="messageFlowName" type="xs:string"
minOccurs="0"/>
      <xs:element name="messageIn" type="xs:string" minOccurs="0"/>
      <xs:element name="messageOut" type="xs:string" minOccurs="0"/>
      <xs:element name="name" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="xmlTransformer">
    <xs:complexContent>
      <xs:extension base="abstractXslTransformer">
        <xs:sequence>
          <xs:element name="name" type="xs:string"/>
          <xs:element name="xslSequence" type="xs:string"
nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="abstractXslTransformer" abstract="true">
    <xs:sequence/>
  </xs:complexType>

  <xs:complexType name="fileSystemImporter">
    <xs:complexContent>
      <xs:extension base="scheduledImporter">
        <xs:sequence>
          <xs:element name="deleteOriginalFile" type="xs:boolean"/>
          <xs:element name="filePattern" type="xs:string"/>
          <xs:element name="processedFolder" type="xs:string"/>
          <xs:element name="receiveFolder" type="xs:string"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="scheduledImporter" abstract="true">
    <xs:complexContent>
      <xs:extension base="abstractImporter">
        <xs:sequence>
          <xs:element name="concurrentListeners" type="xs:int"/>
          <xs:element name="fixedDelay" type="xs:long"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="abstractImporter" abstract="true">
    <xs:complexContent>
      <xs:extension base="abstractModule">
        <xs:sequence>
          <xs:element name="client" type="xs:string"/>
          <xs:element name="messageFormat" type="messageFormat"
minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="jmsImporter">
    <xs:complexContent>
      <xs:extension base="abstractImporter">
        <xs:sequence>
          <xs:element name="channel" type="xs:string" minOccurs="0"/>
          <xs:element name="concurrentConsumers" type="xs:int"/>
          <xs:element name="host" type="xs:string" minOccurs="0"/>
          <xs:element name="port" type="xs:int" minOccurs="0"/>
          <xs:element name="queueManager" type="xs:string"
minOccurs="0"/>
          <xs:element name="queueName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="fileSystemExporter">
    <xs:complexContent>
      <xs:extension base="scheduledExporter">
        <xs:sequence>
          <xs:element name="outputFileFolder" type="xs:string"
minOccurs="0"/>
          <xs:element name="outputFileNamePrefix" type="xs:string"
minOccurs="0"/>
          <xs:element name="outputFileNameSuffix" type="xs:string"
minOccurs="0"/>
          <xs:element name="sequenceNumber" type="xs:int"
minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="scheduledExporter" abstract="true">
    <xs:complexContent>
      <xs:extension base="abstractExporter">
        <xs:sequence>
          <xs:element name="concurrentListeners" type="xs:int"/>
          <xs:element name="fixedDelay" type="xs:long" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="abstractExporter" abstract="true">
    <xs:complexContent>
      <xs:extension base="abstractModule">
        <xs:sequence>
          <xs:element name="batchTrades" type="xs:boolean"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="jmsExporter">
    <xs:complexContent>
      <xs:extension base="scheduledExporter">
        <xs:sequence>
          <xs:element name="channel" type="xs:string" minOccurs="0"/>
          <xs:element name="host" type="xs:string" minOccurs="0"/>
          <xs:element name="port" type="xs:int" minOccurs="0"/>
          <xs:element name="queueManager" type="xs:string"
minOccurs="0"/>
          <xs:element name="queueName" type="xs:string" minOccurs="0"/>
          <xs:element name="targetClient" type="xs:int"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="kondorExporter">
    <xs:complexContent>
      <xs:extension base="fileSystemExporter">
        <xs:sequence>
          <xs:element name="client" type="xs:string" minOccurs="0"/>
          <xs:element name="insertDataFromMessage" type="xs:boolean"/>
          <xs:element name="kondorLoaderPropertyFile" type="xs:string"
minOccurs="0"/>
          <xs:element name="session" type="xs:string" minOccurs="0"/>
          <xs:element name="singleTradePerMessage" type="xs:boolean"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:simpleType name="messageFormat">
    <xs:restriction base="xs:string">
      <xs:enumeration value="GOCSV"/>
      <xs:enumeration value="GOML"/>
      <xs:enumeration value="CUSTOM"/>
      <xs:enumeration value="SWIFT"/>
      <xs:enumeration value="CONFIRM"/>
      <xs:enumeration value="BBG"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

</code>

Regards,

Andy



 
--------------------------------------------------------------------------
This email with all information contained herein or attached hereto may contain confidential and/or privileged information intended for the addressee(s) only. If you have received this email in error, please contact the sender and immediately delete this email in its entirety and any attachments thereto.
(W1)