Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-users] @XmlValue and @XmlJoinNode usage

Hey,

I'm trying to enable xml validation using moxy, which works alright. Except that displaying a bunch of inter-referenced objects on the same document means using the @XmlKey and @XmlJoinNode annotations (since ids can and definitely will collide, so xs:id is out of question).
And came across this:

Exception Description: The property or field key must be an attribute because another field or property is annotated with XmlValue.
 - with linked exception:
[Exception [EclipseLink-50010] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.JAXBException
Exception Description: The property or field key must be an attribute because another field or property is annotated with XmlValue.]
	at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:832)
	at org.eclipse.persistence.jaxb.JAXBContext.<init>(JAXBContext.java:143)
	at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:142)
	at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:129)
	at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:93)
	at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:83)
	...
Caused by: Exception [EclipseLink-50010] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.JAXBException
Exception Description: The property or field key must be an attribute because another field or property is annotated with XmlValue.
	at org.eclipse.persistence.exceptions.JAXBException.propertyOrFieldShouldBeAnAttribute(JAXBException.java:233)
	at org.eclipse.persistence.jaxb.compiler.AnnotationsProcessor.finalizeProperties(AnnotationsProcessor.java:763)
	at org.eclipse.persistence.jaxb.compiler.AnnotationsProcessor.processClassesAndProperties(AnnotationsProcessor.java:237)
	at org.eclipse.persistence.jaxb.compiler.Generator.<init>(Generator.java:147)
	at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:829)
	... 17 more

but, it IS an attribute:
public class VOEntryType {
    @XmlJoinNode(referencedXmlPath = "@id", xmlPath = "@id")
    public Opcion key; 

    @XmlValue
    public Integer value;
}

(Yep, entrytype, because this is being used in an Adapter from map to list)

Now, trying annotating it like this (which looks weird):

   @XmlAttribute
   @XmlJoinNode(referencedXmlPath = "@id", xmlPath = "@id")
    public Opcion key;

Gets me a different exception (which without looking much into the code I guess is because there's a two/n-pass process going on, in which the xmlpath kind of annotations come last):

java.lang.NullPointerException
	at org.eclipse.persistence.jaxb.compiler.SchemaGenerator.buildSchemaComponentsForXPath(SchemaGenerator.java:1018)
	at org.eclipse.persistence.jaxb.compiler.SchemaGenerator.addXmlJoinNodesToSchema(SchemaGenerator.java:2036)
	at org.eclipse.persistence.jaxb.compiler.SchemaGenerator.addToSchemaType(SchemaGenerator.java:434)
	at org.eclipse.persistence.jaxb.compiler.SchemaGenerator.populateSchemaTypes(SchemaGenerator.java:549)
	at org.eclipse.persistence.jaxb.compiler.SchemaGenerator.generateSchema(SchemaGenerator.java:146)
	at org.eclipse.persistence.jaxb.compiler.SchemaGenerator.generateSchema(SchemaGenerator.java:132)
	at org.eclipse.persistence.jaxb.compiler.Generator.generateSchemaFiles(Generator.java:209)
	at org.eclipse.persistence.jaxb.JAXBContext.generateSchema(JAXBContext.java:242)
	at org.eclipse.persistence.jaxb.JAXBContext.generateSchema(JAXBContext.java:215)
	...

So, the question is, is using an @XmlValue in conjunction with a @XmlJoinNode annotation possible / are there any workarounds?

p.s.: eclipselink-2.3.2.v20111125-r10461


Back to the top