2013-12-10 18 views
8

Kennen Sie ein gutes JAXB-Plugin, das Builder-Musterklassen für die generierten JAXB-Klassen generiert hat? Das Erstellen einer Domäne mit JAXB-generierten Klassen ist sehr unangenehm. Ich habe ein Plugin gesehen, das jemand 2010 zurückgeschrieben hat, aber es verwendet nicht das neueste Maven-Plugin jaxb2-maven-plugin, und es erfordert auch, dass Sie Bindungen für jeden Schematyp angeben, der nicht robust ist.Gibt es ein JAXB Plugin, das Builder generiert?

+0

Meinst du, die Klasse ObjectFactory zu generieren? –

+1

Wenn 'jaxb-fluent-api' irgendwie mit' cxf-xjc-plugin' konfiguriert werden könnte, dann wäre es vielleicht eine großartige Lösung, aber ich bin mir nicht sicher, ob das überhaupt möglich ist. Ansonsten hört es sich so an, als wären Sie bereits über retepTools gestolpert: http://blog.retep.org/2010/05/18/implementing-builders-with-jaxb-generated-objects/2/ – pulkitsinghal

+0

Dieses Plugin erzeugt unveränderlich Klassen und optional Builder - https://github.com/sabomichal/immutable-xjc – miso

Antwort

3

Der folgende Ausschnitt aus einer pom.xml Datei verwendet Maven cxf-xjc-plugin die JAXB-Klassen zu generieren und nutzt auch jaxb-fluent-api tack-on fluent interfaces ... die sind nicht gerade ein kompletter Erbauer auf ihrem eigenen ... aber ich denke, Sie lassen Platz, damit Leute in diese Richtung annehmbar vorwärtskommen.

 <!-- Used to generate source code based on XSD (schema) file --> 
     <!-- http://cxf.apache.org/cxf-xjc-plugin.html --> 
     <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-xjc-plugin</artifactId> 
      <version>2.7.7</version> 
      <configuration> 
       <extensions> 
        <extension>net.java.dev.jaxb2-commons:jaxb-fluent-api:2.1.8</extension> 
       </extensions> 
      </configuration> 
      <executions> 
       <execution> 
        <id>generate-xsd-sources</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>xsdtojava</goal> 
        </goals> 
        <configuration> 
         <sourceRoot>${basedir}/target/generated-sources/cxf-xjc/</sourceRoot> 
         <xsdOptions> 
          <xsdOption> 
           <xsd>${basedir}/src/main/wsdl/your.xsd</xsd> 
           <packagename>com.your.package.name</packagename> 
           <extensionArgs> 
            <extensionArg>-Xfluent-api</extensionArg> 
           </extensionArgs> 
          </xsdOption> 
         </xsdOptions> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
6

Ja, es gibt jetzt ein Plugin, um fließende Builder für JAXB-generierte Klassen zu generieren. Es gibt ein GitHub Projekt auf

https://github.com/mklemm/jaxb2-rich-contract-plugin

Es enthält ein paar nützliche JAXB Plugins. Sie können Quelle und Binärdateien von Github, oder erhalten Maven Artefakte von The Central Repository

Hope dies hilft. Wenn Sie irgendwelche Fragen haben, fragen Sie mich einfach, ich bin derjenige, der es angefangen hat.

+0

Kann ich das Plugin verwenden, um Builder zu generieren, wenn Klassen von dtd generiert werden? – mejas

+0

Obwohl bisher niemand versucht zu haben scheint, würde ich annehmen, dass es NICHT mit einer DTD funktioniert. –