¿Por qué funciona el ejemplo A, mientras que el ejemplo B arroja una excepción "JAXB anotación se coloca en un método que no es una propiedad JAXB"?¿Por qué JAXB no permite anotaciones en getters que todos extraen de la misma variable miembro?
Estoy usando JAX-WS con Spring MVC.
Ejemplo A
package com.casanosa2.permissions;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(name = "FooXMLMapper")
public class FooXMLMapper implements IFoo {
@XmlElement
private final boolean propA;
@XmlElement
private final boolean propB;
public FooMapper(IFoo foo) {
propA = foo.getPropA()
propB = foo.getPropB()
}
public FooMapper() {
propA = false;
propB = false;
}
@Override
public boolean getPropA() {
return propA;
}
@Override
public boolean getPropB() {
return propB;
}
}
Ejemplo B
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(name = "FooXMLMapper")
public class FooXMLMapper {
private final IFoo foo;
public FooMapper() {
foo = new IFoo() {
@Override
public boolean getPropA() {
return false;
}
@Override
public boolean getPropB() {
return false;
}
};
}
public FooXMLMapper(IFoo foo) {
this.foo = foo;
}
@XmlElement
public boolean getPropA() {
return foo.getPropA();
}
@XmlElement
public boolean getPropB() {
return foo.getPropB();
}
}
Bernard usa propiedad como el tipo de acceso, por lo que solo debe verificarse el método get/set. –
Tenías razón, al agregar XmlAccessType.NONE lo solucionó. Ahora no tengo que tener variables de miembro tontas que dupliquen datos que ya tengo. :) –
XmlAccessType.NONE funcionará, pero no es correcto. NINGUNO significa solo mapear lo que está explícitamente anotado. Si usa FIELD o PROPERTY, puede aprovechar el incumplimiento. Sigo creyendo que su problema implicó especificar el acceso a PROPERTY pero anotar campos. –