jaxb jaxb2-basics xjb jaxb2-simplify-plugin

El complemento JAXB Simplify aún se puede usar?



jaxb2-basics xjb (1)

Descargo de responsabilidad: soy el autor del plugin Simplify, que forma parte de JAXB2 Basics .

El plugin y el proyecto están bien y vivos, pero mi servidor de documentación muere de vez en cuando. No tengo recursos para mantener un hosting propio, así que moveré todos mis proyectos a GitHub.

Puede encontrar el proyecto básico de JAXB2 aquí:

https://github.com/highsource/jaxb2-basics

La documentación aún no se ha movido, pero aquí hay un enlace a uno de los proyectos de prueba que lo usan:

https://github.com/highsource/jaxb2-basics/tree/master/tests/issues

A continuación se muestra un fragmento del esquema que utiliza la personalización simplify:as-element-property :

<xs:complexType name="gh1" mixed="true"> <xs:sequence> <xs:element name="a" type="xs:string"> <xs:annotation> <xs:appinfo> <simplify:as-element-property/> </xs:appinfo> </xs:annotation> </xs:element> <xs:element name="b" type="xs:int"/> </xs:sequence> </xs:complexType>

Volveré a poner el servidor en línea en unas horas.

Por favor, publique su esquema / personalización para que lo verifiquemos. El problema que tienes es probablemente que hayas puesto la personalización en el lugar equivocado. Esto a veces es difícil de entender.

Actualizar

Este error:

"Unsupported binding namespace "http://jaxb2-commons.dev.java.net/basic/simplify". Perhaps you meant "http://jaxb.dev.java.net/plugin/code-injector"?"

Significa que el complemento falta o no está activado. Supongo que usas maven-jaxb2-plugin . Luego, asegúrese de tener jaxb2-basics como complemento JAXB2 y también incluye el -Xsimplify . Aquí hay una muestra :

<plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <configuration> <extension>true</extension> <args> <arg>-Xsimplify</arg> </args> <plugins> <plugin> <groupId>org.jvnet.jaxb2_commons</groupId> <artifactId>jaxb2-basics</artifactId> </plugin> </plugins> </configuration> </plugin>

A continuación, su error original "no se puede cumplir con esta ... personalización" puede estar relacionado con DONDE coloca la personalización. Lo has colocado en el elemento (que es lo que yo también haría).

Pero en algunos casos, XJC lee estas personalizaciones de otros componentes de esquema. En su caso, intente colocar la personalización en xs:choice lugar.

Si el error persiste, presente un problema en GitHub proporcionando el esquema mínimo que reproduce el error. Me ocuparé de eso entonces.

Actualización 2

El servidor vuelve a estar en línea, pero ahora he trasladado la documentación del complemento JAXB2 Simplify a GitHub:

https://github.com/highsource/jaxb2-basics/wiki/JAXB2-Simplify-Plugin

Actualización 3

La solución final con la versión 0.9.1 está bosquejada aquí:

https://github.com/highsource/jaxb2-basics/issues/3

Personaliza la clase con:

<simplify:property name="type2OrType3"> <simplify:as-element-property/> </simplify:property>

Ejemplo .

Intenté la solución de la pregunta aquí JAXB Simplify plugin vs * .xjb .

pero falló con la siguiente excepción

"el compilador no pudo cumplir con esta simplificación: la personalización como elemento de propiedad. Está unida a un lugar incorrecto, o es inconsistente con otras vinculaciones".

este es el enlace de personalización que utilicé

<jaxb:bindings node="//xs:complexType[@name=''Op'']//xs:choice/xs:element[@name=''Time'']"> <simplify:as-element-property/> </jaxb:bindings>

No se puede acceder a la página de confluencia de los complementos jaxb simplify, por lo que ¿alguien ha utilizado este complemento y puede dar un ejemplo, por favor?

Aquí está mi esquema actualizado según la respuesta

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.amadeus.com/APT/FOM/00" targetNamespace="http://www.amadeus.com/APT/FOM/00" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify" jaxb:extensionBindingPrefixes="simplify"> ... ... <xs:complexType> <xs:sequence> <xs:choice minOccurs="1" maxOccurs="1"> <xs:element name="Time" type="xs:dateTime" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:appinfo> <simplify:as-element-property /> </xs:appinfo> </xs:annotation> </xs:element> ... ... </xs:choice> ...

Obtuve la excepción durante la compilación de maven como "espacio de nombres vinculante no compatible" http://jaxb2-commons.dev.java.net/basic/simplify ". Quizás quisiste decir" http://jaxb.dev.java.net/plugin " / code-injector "?"