You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Paul Jutten (JIRA)" <ji...@apache.org> on 2010/12/02 16:49:15 UTC
[jira] Created: (CXF-3161) Marshalling object fails with JAXB and
CXF, throws nullpointerexception
Marshalling object fails with JAXB and CXF, throws nullpointerexception
-----------------------------------------------------------------------
Key: CXF-3161
URL: https://issues.apache.org/jira/browse/CXF-3161
Project: CXF
Issue Type: Bug
Components: JAXB Databinding
Environment: Windows XP; Eclipse 3.5.2; jaxb-api-2.2.1; jaxb-impl-2.2.1;
Reporter: Paul Jutten
The following methods are included in the generated objectfactory:
{code:title=ObjectFactory.java|borderStyle=solid}
@XmlElementDecl(namespace = "http://test.nl/voertuigen", name = "kleur")
public JAXBElement<KleurType> createKleur(KleurType value)
{
return new JAXBElement<KleurType>(_Kleur_QNAME, KleurType.class, null, value);
}
@XmlElementDecl(namespace = "http://test.nl/voertuigen", name = "kleur", scope = BusType.class)
public JAXBElement<MetallicKleurType> createBusTypeKleur(MetallicKleurType value)
{
return new JAXBElement<MetallicKleurType>(_Kleur_QNAME, MetallicKleurType.class, BusType.class, value);
}
{code}
Both methods have the same namespace and name, the createBusTypeKleur method also has a scope (in @XmlElementDecl). KleurType and MetallicKleurType are enums.
When I marshall the BusType object with CXF, a nullpinterexception is thrown.
The BusType class looks like this:
{code:title=BusType.java|borderStyle=solid}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "busType", propOrder = {"kleur"})
public class BusType
{
XmlElementRef(name = "kleur", namespace = "http://test.nl/voertuigen", type = JAXBElement.class)
protected JAXBElement<MetallicKleurType> kleur;
public JAXBElement<MetallicKleurType> getKleur()
{
return kleur;
}
public void setKleur(JAXBElement<MetallicKleurType> value)
{
this.kleur = (value);
}
}
{code}
When the method createKleur in the ObjectFactory class has a scope too, or the names in the @XmlAccessorType are different, no exceptions will be thrown.
I have attached the source code (as small Eclipse project).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (CXF-3161) Marshalling object fails with JAXB and
CXF, throws nullpointerexception
Posted by "Paul Jutten (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-3161?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul Jutten updated CXF-3161:
-----------------------------
Attachment: JaxBProject.zip
The source code, run TestClient as Java Application.
> Marshalling object fails with JAXB and CXF, throws nullpointerexception
> -----------------------------------------------------------------------
>
> Key: CXF-3161
> URL: https://issues.apache.org/jira/browse/CXF-3161
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Environment: Windows XP; Eclipse 3.5.2; jaxb-api-2.2.1; jaxb-impl-2.2.1;
> Reporter: Paul Jutten
> Attachments: JaxBProject.zip
>
>
> The following methods are included in the generated objectfactory:
> {code:title=ObjectFactory.java|borderStyle=solid}
> @XmlElementDecl(namespace = "http://test.nl/voertuigen", name = "kleur")
> public JAXBElement<KleurType> createKleur(KleurType value)
> {
> return new JAXBElement<KleurType>(_Kleur_QNAME, KleurType.class, null, value);
> }
> @XmlElementDecl(namespace = "http://test.nl/voertuigen", name = "kleur", scope = BusType.class)
> public JAXBElement<MetallicKleurType> createBusTypeKleur(MetallicKleurType value)
> {
> return new JAXBElement<MetallicKleurType>(_Kleur_QNAME, MetallicKleurType.class, BusType.class, value);
> }
> {code}
> Both methods have the same namespace and name, the createBusTypeKleur method also has a scope (in @XmlElementDecl). KleurType and MetallicKleurType are enums.
> When I marshall the BusType object with CXF, a nullpinterexception is thrown.
> The BusType class looks like this:
> {code:title=BusType.java|borderStyle=solid}
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlType(name = "busType", propOrder = {"kleur"})
> public class BusType
> {
> XmlElementRef(name = "kleur", namespace = "http://test.nl/voertuigen", type = JAXBElement.class)
> protected JAXBElement<MetallicKleurType> kleur;
> public JAXBElement<MetallicKleurType> getKleur()
> {
> return kleur;
> }
> public void setKleur(JAXBElement<MetallicKleurType> value)
> {
> this.kleur = (value);
> }
> }
> {code}
> When the method createKleur in the ObjectFactory class has a scope too, or the names in the @XmlAccessorType are different, no exceptions will be thrown.
> I have attached the source code (as small Eclipse project).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] [Resolved] (CXF-3161) Marshalling object fails with JAXB and
CXF, throws nullpointerexception
Posted by "Daniel Kulp (Resolved) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-3161?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp resolved CXF-3161.
------------------------------
Resolution: Not A Problem
Fix Version/s: Invalid
Assignee: Daniel Kulp
The JAXBElement<MetallicKleurType> kleur that is set into the BusType object needs to have it's scope set so that the lookup within JAXB runtime can find the correct kleur element handler. Ideally, use the ObjectFactory.createBusTypeKleur method, but adding the BusType.class class to the constructor would work.
In anycase, this isn't a CXF bug at all. At best, it could be logged with JAXB to have them produce a better error message or handle scoping better.
> Marshalling object fails with JAXB and CXF, throws nullpointerexception
> -----------------------------------------------------------------------
>
> Key: CXF-3161
> URL: https://issues.apache.org/jira/browse/CXF-3161
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Environment: Windows XP; Eclipse 3.5.2; jaxb-api-2.2.1; jaxb-impl-2.2.1;
> Reporter: Paul Jutten
> Assignee: Daniel Kulp
> Fix For: Invalid
>
> Attachments: JaxBProject.zip
>
>
> The following methods are included in the generated objectfactory:
> {code:title=ObjectFactory.java|borderStyle=solid}
> @XmlElementDecl(namespace = "http://test.nl/voertuigen", name = "kleur")
> public JAXBElement<KleurType> createKleur(KleurType value)
> {
> return new JAXBElement<KleurType>(_Kleur_QNAME, KleurType.class, null, value);
> }
> @XmlElementDecl(namespace = "http://test.nl/voertuigen", name = "kleur", scope = BusType.class)
> public JAXBElement<MetallicKleurType> createBusTypeKleur(MetallicKleurType value)
> {
> return new JAXBElement<MetallicKleurType>(_Kleur_QNAME, MetallicKleurType.class, BusType.class, value);
> }
> {code}
> Both methods have the same namespace and name, the createBusTypeKleur method also has a scope (in @XmlElementDecl). KleurType and MetallicKleurType are enums.
> When I marshall the BusType object with CXF, a nullpinterexception is thrown.
> The BusType class looks like this:
> {code:title=BusType.java|borderStyle=solid}
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlType(name = "busType", propOrder = {"kleur"})
> public class BusType
> {
> XmlElementRef(name = "kleur", namespace = "http://test.nl/voertuigen", type = JAXBElement.class)
> protected JAXBElement<MetallicKleurType> kleur;
> public JAXBElement<MetallicKleurType> getKleur()
> {
> return kleur;
> }
> public void setKleur(JAXBElement<MetallicKleurType> value)
> {
> this.kleur = (value);
> }
> }
> {code}
> When the method createKleur in the ObjectFactory class has a scope too, or the names in the @XmlAccessorType are different, no exceptions will be thrown.
> I have attached the source code (as small Eclipse project).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira