users@jaxb.java.net

Re: duplicate classes error?

From: Joe Fialli <Joseph.Fialli_at_Sun.COM>
Date: Mon, 19 Jul 2004 09:18:18 -0400

Nick,

You have a global element declaration and global complex type definition
with the same
name. XML Schema namespaces allows elements and type definitions to
have same name
since they are in different symbol spaces. When mapping to Java, they
collide.

You can either change the schema so global elements and complex type
definitions
do not have the same name OR you can use a JAXB customization to specify
a different schema-derived class name for the elements or complex type
definitions.

There is a sample called "fix-collides" that shows one possible way to
systematically
remove collisions if your schema has many global elements and complex
type definitions
with the same name. Sample "inline-customize" demonstrates how to
customize by specifying
the Java class name for the schema-derived class for either a global
element or named
complex type definition.

-Joe Fialli, Sun Microsystems


Nick Pellow wrote:

>Hi,
>
>I have attached an XSD I am attempting to generate classes from using
>JAXB. For some reason, I believe, JAXB does not handle the xs:extension
>element too well.
>
>I get the following errors when running xjc over the xsd:
>
> [xjc] [ERROR] A class/interface with the same name
>"com.mindmatics.sms.transport.crisp.Credentials" is already in use.
> [xjc] line 37 of crisp_1_0.xsd
>
> [xjc] [ERROR] (Relevant to above error) another one is generated from here.
> [xjc] line 32 of crisp_1_0.xsd
>
> [xjc] [ERROR] A class/interface with the same name
>"com.mindmatics.sms.transport.crisp.Status" is already in use.
> [xjc] line 67 of crisp_1_0.xsd
>
> [xjc] [ERROR] (Relevant to above error) another one is generated from here.
> [xjc] line 62 of crisp_1_0.xsd
>
>Is this a known problem, or am I doing something wrong? If I use an XSD
>without
>the
> <xs:extension base="credentials">
>or
>
> <xs:extension base="status">
>elements, JAXB generates the classes without a problem.
>
>Has anyone else seen this before?
>
>Cheers,
>Nick.
>
>
>------------------------------------------------------------------------
>
><?xml version="1.0" encoding="UTF-8"?>
><!--
> Crisp CCTP control part DTD
> (c) 2003 T-Mobile
> Version: 1.0 (Feb/12/2003)
>-->
><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
> <xs:element name="crisp">
> <xs:complexType>
> <xs:choice>
> <xs:element ref="login"/>
> <xs:element ref="login-response"/>
> <xs:element ref="forward"/>
> <xs:element ref="forward-response"/>
> <xs:element ref="logout"/>
> <xs:element ref="logout-response"/>
> <xs:element ref="error-response"/>
> </xs:choice>
> <xs:attribute name="request_id" use="required"/>
> </xs:complexType>
> </xs:element>
> <xs:element name="forward">
> <xs:complexType>
> <xs:complexContent>
> <xs:extension base="credentials">
> <xs:attribute name="service_id" use="required"/>
> <xs:attribute name="message_type" use="required"/>
> </xs:extension>
> </xs:complexContent>
> </xs:complexType>
> </xs:element>
> <xs:complexType name="credentials">
> <xs:sequence>
> <xs:element ref="credentials"/>
> </xs:sequence>
> </xs:complexType>
> <xs:element name="credentials">
> <xs:complexType>
> <xs:attribute name="session_id" use="required"/>
> </xs:complexType>
> </xs:element>
> <xs:element name="forward-response" type="status"/>
> <xs:element name="login">
> <xs:complexType>
> <xs:sequence>
> <xs:element ref="partner_id"/>
> <xs:element ref="password"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="partner_id" type="xs:string"/>
> <xs:element name="password" type="xs:string"/>
> <xs:element name="login-response">
> <xs:complexType>
> <xs:complexContent>
> <xs:extension base="status">
> <xs:attribute name="session_id"/>
> </xs:extension>
> </xs:complexContent>
> </xs:complexType>
> </xs:element>
> <xs:complexType name="status">
> <xs:sequence>
> <xs:element ref="status"/>
> </xs:sequence>
> </xs:complexType>
> <xs:element name="status">
> <xs:complexType mixed="true">
> <xs:attribute name="code" use="required"/>
> </xs:complexType>
> </xs:element>
> <xs:element name="logout">
> <xs:complexType>
> <xs:attribute name="session_id" use="required"/>
> </xs:complexType>
> </xs:element>
> <xs:element name="logout-response" type="status"/>
> <xs:element name="error-response" type="status"/>
></xs:schema>
>
>
>
>------------------------------------------------------------------------
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
>For additional commands, e-mail: users-help_at_jaxb.dev.java.net
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
For additional commands, e-mail: users-help_at_jaxb.dev.java.net