2 count of Illegal Annotation Exception

java, jaxb, xml

Solution

From the JavaDoc for @XmlType:

propOrder

All of the JavaBean properties being mapped to XML Schema elements must be listed.

You need to add the `CustomerFullAddress` property to the `propOrder` for `Customer`.

Problem

I have a Customer and CustomerFullAddress class and i am using JAXB to try to produce an XML file ``` <Customer CustomerID="GREAL"> <CompanyName>Great Lakes Food Market</CompanyName> <ContactName>Howard Snyder</ContactName> <ContactTitle>Marketing Manager</ContactTitle> <Phone>(503) 555-7555</Phone> <FullAddress> <Address>2732 Baker Blvd.</Address> <City>Eugene</City> <Region>OR</Region> <PostalCode>97403</PostalCode> <Country>USA</Country> </FullAddress> </Customer> ``` The Customer Class looks like below (Its not a full implementation) ``` package org.abc.customers; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name = "customer") @XmlType (propOrder = { "companyName", "contactName", "contactTitle", "phone" }) public class Customer { *@XmlElement(name = "customerfulladdress") private CustomerFullAddress custAdd;* private String companyName; private String contactName; private String contactTitle; private int phone; public CustomerFullAddress getCustAddress() { return custAdd; } public void setCustAddress(CustomerFullAddress custAdd) { this.custAdd = custAdd; } ... ``` While the CustomerFullAddress is ``` package org.abc.customers; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name = "customerfulladdress") //If you want you can define the order in which the fields are written //Optional @XmlType(propOrder = { "address", "city", "region", "postalCode", "country" }) public class CustomerFullAddress { private String address; ... public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } ..... } ``` and the error is Exception in thread "main" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions Property custAdd is present but not specified in @XmlType.propOrder this problem is related to the following location: at private org.abc.customers.CustomerFullAddress org.abc.customers.Customer.custAdd at org.abc.customers.Customer Property custAddress is present but not specified in @XmlType.propOrder this problem is related to the following location: at public org.abc.customers.CustomerFullAddress org.abc.customers.Customer.getCustAddress() at org.abc.customers.Customer Thanks for having a look!

Original source