My application needs to deserialize the <AttributeProviders> DTO resulting from the GET /pap/attribute.providers. After registering an attribute provider of mine, though, the deserialization fails with the error
Caused by: org.glassfish.jaxb.runtime.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Non è presente alcun ObjectFactory con un @XmlElementDecl per l'elemento {urn:oasis:names:tc:xacml:3.0:core:schema:wd-17}PolicyIdReference.
this problem is related to the following location:
at private final java.util.List oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyIdentifierList.policyIdReferencesAndPolicySetIdReferences
at oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyIdentifierList
at private final oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyIdentifierList oasis.names.tc.xacml._3_0.core.schema.wd_17.Result.policyIdentifierList
at oasis.names.tc.xacml._3_0.core.schema.wd_17.Result
at private final java.util.List oasis.names.tc.xacml._3_0.core.schema.wd_17.Response.results
at oasis.names.tc.xacml._3_0.core.schema.wd_17.Response
Non è presente alcun ObjectFactory con un @XmlElementDecl per l'elemento {urn:oasis:names:tc:xacml:3.0:core:schema:wd-17}PolicySetIdReference.
this problem is related to the following location:
at private final java.util.List oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySet.policySetsAndPoliciesAndPolicySetIdReferences
at oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySet
The attribute provider has been developed following the guide: https://authzforce-ce-fiware.readthedocs.io/en/latest/UserAndProgrammersGuide.html#making-an-attribute-provider.
After some digging it looks like jaxb:generate builds another oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory that, depending on the order of the dependencies in my pom.xml, superseeds the correct located in the org.ow2.authzforce:authzforce-ce-xacml-model.
I've tried a number of approches, from setting the episodes to manually removing the unwanted ObjectFactory but I'm unable to find what I think is the proper solution: set the jaxb-maven-plugin in such a way to avoid generating that file.
Am I missing something?
I'm posting the binding.xjb and the relevant portion of the pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- JAXB version must be 3.0 for jaxb-maven-plugin 4.x -->
<jaxb:bindings jaxb:version="3.0" xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:globalBindings generateMixedExtensions="true" fixedAttributeAsConstantProperty="true">
<xjc:simple />
</jaxb:globalBindings>
</jaxb:bindings>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
[...]
<properties>
<compiler-plugin.version>3.14.0</compiler-plugin.version>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<skipITs>true</skipITs>
<surefire-plugin.version>3.5.4</surefire-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.ow2.authzforce</groupId>
<artifactId>authzforce-ce-core-pdp-api</artifactId>
<version>22.0.0</version>
<scope>provided</scope>
</dependency>
[...]
<build>
<plugins>
[...]
<plugin>
<groupId>org.jvnet.jaxb</groupId>
<artifactId>jaxb-maven-plugin</artifactId>
<version>4.0.0</version>
<configuration>
<!-- debug=true will generate JAXBDebug class. More info: https://github.com/highsource/maven-jaxb2-plugin/wiki/Miscellaneous -->
<debug>false</debug>
<strict>false</strict>
<verbose>true</verbose>
<removeOldOutput>true</removeOldOutput>
<extension>true</extension>
<useDependenciesAsEpisodes>true</useDependenciesAsEpisodes>
<catalog>src/main/jaxb/catalog.xml</catalog>
<bindingDirectory>src/main/jaxb</bindingDirectory>
<schemaDirectory>src/main/resources</schemaDirectory>
<!-- If you wish to use extensions, for exemple Value Constructor -->
<!--
<args>
<arg>-Xvalue-constructor</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb</groupId>
<artifactId>jaxb-plugins</artifactId>
<version>4.0.0</version>
</plugin>
</plugins>
-->
</configuration>
<executions>
<execution>
<id>jaxb-generate-compile-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
My application needs to deserialize the
<AttributeProviders>DTO resulting from theGET /pap/attribute.providers. After registering an attribute provider of mine, though, the deserialization fails with the errorThe attribute provider has been developed following the guide: https://authzforce-ce-fiware.readthedocs.io/en/latest/UserAndProgrammersGuide.html#making-an-attribute-provider.
After some digging it looks like
jaxb:generatebuilds anotheroasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactorythat, depending on the order of the dependencies in mypom.xml, superseeds the correct located in theorg.ow2.authzforce:authzforce-ce-xacml-model.I've tried a number of approches, from setting the episodes to manually removing the unwanted
ObjectFactorybut I'm unable to find what I think is the proper solution: set the jaxb-maven-plugin in such a way to avoid generating that file.Am I missing something?
I'm posting the
binding.xjband the relevant portion of thepom.xml:binding.xjbpom.xml