Yes, that looks like the correct conversion. Jaxb does not enforce
(or even check) that elements are in the correct order when reading a
document, so the ordering declaration in the generated bean won't
effect you.
-dain
On Jun 22, 2008, at 3:12 PM, Karan Malhi wrote:
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