cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin" <sbery...@progress.com>
Subject Re: Schema generation issues
Date Mon, 06 Jul 2009 14:40:31 GMT
Hi Dan

thanks... I'm looking now at JAXBDatabinding's JAXBBeanInfo which looks like exactly what
I need - I'm thinking of moving 
JAXBBeanInfo and JAXBContextProxy into common/utils/jaxb as at the moment it's not quite feasible
to reuse JAXBDataBinding as is 
from JAX-RS due to different models. I'll be revisiting it once/if we do some WSDL2 generation

cheers, Sergey

>
> Sergey,
>
> On Thu July 2 2009 12:59:10 pm Sergey Beryozkin wrote:
>> I have problems with the JAXB schema generation.
>>
>> Consider this bean :
>>
>> @XmlRootElement(name="thebook", namespace="http://books")
>> public class Book {
>>   private int id;
>>   public Book() { }
>>   public int getId() { return id; }
>>   public void setId(int ident) { id = ident; }
>> }
>>
>
> I think you should just add an
> @XmlType(name = "book", namespace="http://books")
> Attribute to it as well.    The XmlRootElement defines a root element, but
> doesn't do anything to specify how the type is mapped in.    The XmlType
> annotation does that.
>
> Dan
>
>
>
>
>> JAXBContext generates these 2 schemas :
>>
>> <!-- Schema 1 -->
>> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0"
>> targetNamespace="http://books"> <xs:import schemaLocation="schema2.xsd" />
>> <xs:element name="thebook" type="book" />
>> </xs:schema>
>>
>> <!-- Schema 2 -->
>> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
>> <xs:complexType name="book">
>> <xs:sequence>
>> <xs:element name="id" type="xs:int" />
>> </xs:sequence>
>> </xs:complexType>
>> </xs:schema>
>>
>> The first problem I guess is to check if <import> in the first schema has
>> no 'namespace' attribute in which case I can have 'book' complex type
>> injected directly into the first schema. with the whole <import> being
>> removed. It can get quiote hairy if 'book' type improts some other types,
>> but it can be handled.
>>
>> What I'm sure about is how to figure out that when we have say a method
>>
>> public Resource() {
>>    public Book getBook() {}
>> }
>>
>> then how to ensure that Book is represented by {http://books}thebook
>> qualified name in the generated doc such as wadl...
>>
>> it's not obvious to me how a link between Book and 'thebook' element can be
>> established given that this info (in XmlRootElement at the moment) may come
>> from various sources
>>
>> thanks, Sergey
>
> -- 
> Daniel Kulp
> dkulp@apache.org
> http://www.dankulp.com/blog 


Mime
View raw message