But a choice does not require elements to be in a certain order whereas a
sequence does. Here is how I changed from a choice to a sequence (notice the
propOrder attribute of the @XmlType annotation. I am not sure if i did it
correctly or not, could you please confirm if the below is the correct way
of doing it
Here is the original xsd :
<!-- **************************************************** -->
<xsd:complexType name="faces-configType">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="application"
type="javaee:faces-config-applicationType"/>
<xsd:element name="factory"
type="javaee:faces-config-factoryType"/>
. . . . . . . . .
. . . . . . . . .
<xsd:element name="faces-config-extension"
type="javaee:faces-config-extensionType"
minOccurs="0"
maxOccurs="unbounded"/>
</xsd:choice>
. . . . . . . . .
</xsd:complexType>
<!-- **************************************************** -->
Here is what I changed it to:-
<!-- **************************************************** -->
<xsd:complexType name="faces-configType">
<xsd:sequence >
<xsd:element name="application"
type="javaee:faces-config-applicationType"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="factory"
type="javaee:faces-config-factoryType"
minOccurs="0" maxOccurs="unbounded"/>
. . . . . . . . .
. . . . . . . . .
<xsd:element name="faces-config-extension"
type="javaee:faces-config-extensionType"
minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<!-- **************************************************** -->
And here is the final output of FacesConfigType.java
<!-- **************************************************** -->
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "faces-configType", propOrder = {
"application",
"factory",
"component",
"converter",
"managedBean",
"navigationRule",
"referencedBean",
"renderKit",
"lifecycle",
"validator",
"facesConfigExtension"
})
public class FacesConfigType {
protected List<FacesConfigApplicationType> application;
protected List<FacesConfigFactoryType> factory;
protected List<FacesConfigComponentType> component;
protected List<FacesConfigConverterType> converter;
@XmlElement(name = "managed-bean")
protected List<FacesConfigManagedBeanType> managedBean;
@XmlElement(name = "navigation-rule")
protected List<FacesConfigNavigationRuleType> navigationRule;
@XmlElement(name = "referenced-bean")
protected List<FacesConfigReferencedBeanType> referencedBean;
@XmlElement(name = "render-kit")
protected List<FacesConfigRenderKitType> renderKit;
protected List<FacesConfigLifecycleType> lifecycle;
protected List<FacesConfigValidatorType> validator;
@XmlElement(name = "faces-config-extension")
protected List<FacesConfigExtensionType> facesConfigExtension;
<!-- **************************************************** -->
On Fri, Jun 20, 2008 at 1:57 PM, Dain Sundstrom <[EMAIL PROTECTED]> wrote:
> I also typically replace choice groups with a sequence of optional
> elements. When JAXB generates java code for choice groups, it creates a
> List<Object> instead of fields for each choice, which just annoying to work
> with. JAXB will parse the documents file with the change.
>
> -dain
>
>
> On Jun 20, 2008, at 7:29 AM, Karan Malhi wrote:
>
>
>>> There's really nothing in the docs about cheating at this level.
>>>
>>
>> :)
>>
>> Best bet is to try and trim the schema down to only what you really want
>>> to generate. You may have to hack on the resulting java code a bit to
>>> wire
>>> it into any existing objects we already have jaxb objects for. If you're
>>> lucky there won't be too much overlap or any at all.
>>>
>>> Hmm... I didnt realize I might have to tweak the generated code. Good to
>>>
>> know this.
>>
>>
>> --
>> Karan Singh Malhi
>>
>
>
--
Karan Singh Malhi