2013-10-24 7 views
5

Ich habe Probleme mit benutzerdefinierten JavaTypes für WSDLs, wo mehrere Schemas vorhanden sind. Die Bindungen funktionieren für die Schemas mit dem angegebenen Namespace, aber die Kompilierung schlägt für die Schemas ohne den Namespace fehl.Benutzerdefinierte Analyse- und Druckmethoden für WSDLs mit mehreren Schemas

ist dies die bindings.xml Datei:

<jaxb:bindings version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
      xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:common="urn:my:ns"> 
<jaxb:globalBindings generateElementProperty="false"> 
    <jaxb:serializable uid="1"/> 
    <jaxb:javaType name="java.util.Date" xmlType="xs:date" 
        parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDate" 
        printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDate"/> 
    <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime" 
        parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" 
        printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/> 
    <jaxb:javaType name="java.util.UUID" xmlType="common:uuid" 
        parseMethod="my.package.UuidConverter.parse" 
        printMethod="my.package.UuidConverter.print"/> 
</jaxb:globalBindings> 
</jaxb:bindings> 

Ich bin cxf-CODEGEN-Plugin

die Fehlermeldung mit: undefined einfacher Typ

Ist es möglich, Ignoriere die UUID-Bindung, wenn urn: my: ns in einem der Schemas nicht vorhanden ist? Oder ist es möglich, diese Bindung mit einer anderen Methode zu archivieren?

+0

Sind Sie sicher, dass Ihnen keine Bindung für einen anderen einfachen Typ fehlt, von dem die fehlerhaften Schemata abhängen? Mit anderen Worten, sie hängen vielleicht nicht von "common: uuid" ab, aber könnten sie von einem anderen einfachen Typ abhängen, den Sie verpasst haben? – J0e3gan

+1

@ J0e3gan Nein, ich denke nicht, und ich verifizierte, indem ich den benutzerdefinierten Parser/Drucker ein- und ausschaltete. – Vegard

Antwort

1

Ich glaube nicht, dass es möglich ist, die UUID Bindung, wie Sie beschreiben, zu ignorieren; und ich bin mir nicht sicher, ob ich dem, was Sie meinen, folge, indem ich frage, ob es möglich ist, diese Bindung zu archivieren, aber ich spüre, dass es nicht so ist.

UUID wird normalerweise in xs:string als discussed in the Java forums konvertiert. JAX-B documentation bestätigt diese Zuordnung auch. (Suchen Sie einfach nach UUID in der verknüpften Dokumentationsseite.)

Betrachten wir etwas Ähnliches statt:

<jaxb:bindings version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
      xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<jaxb:globalBindings generateElementProperty="false"> 
    <jaxb:serializable uid="1"/> 
    <jaxb:javaType name="java.util.Date" xmlType="xs:date" 
        parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDate" 
        printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDate"/> 
    <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime" 
        parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" 
        printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/> 
    <jaxb:javaType name="java.util.UUID" xmlType="xs:string" 
        parseMethod="my.package.UuidConverter.parse" 
        printMethod="my.package.UuidConverter.print"/> 
</jaxb:globalBindings> 
</jaxb:bindings> 

Wenn Sie immer noch Probleme haben, sollten Sie diese related SO answer.

+2

Ich glaube nicht, dass das so funktionieren wird, wie ich es möchte, der Grund dafür ist, dass Ihr Beispiel alle Instanzen von {http://www.w3.org/2001/XMLSchema}string analysieren wird, was ich will um einen Parser für {urn: my: ns} uuid zu erstellen. Mein ursprüngliches Beispiel funktioniert gut, wenn es in einem einzelnen Schema mit {urn: my: ns} uuid vorhanden ist. – Vegard

+1

@Vegard, danke für die Klärung. Entschuldigung, dass ich mit etwas Spezifischerem nicht helfen konnte. – J0e3gan

+1

Danke dafür. Funktioniert auch bei mir mit der joda Klasse 'DateTime' – vikingsteve

Verwandte Themen