Hi all,

This feature is implemented using the nokia avro scheme gen tol with apache
license[1]. It was modified to remove unnecessary class gen codes with JAXB
and also to manipulate the generated avro to insert child JSON objects.

I will insert this source into our datamapper tool to enable it within
dev-studio.


[1]  https://github.com/Nokia/Avro-Schema-Generator



Awanthika Senarath
Software Engineer, WSO2 Inc.
Mobile: +94717681791



On Fri, Feb 26, 2016 at 10:16 AM, Awanthika Senarath <[email protected]>
wrote:

> Hi all,
>
> Is there any particular reason as to why we are sticking into avro schema
> for the datamapper implementation?
>
> AFAIS the only tool (open/non-open source) that exist for XSD to avro
> conversion, is the same that  has been used by the team when we attempted
> the data mapper first 2 years back.
>
> This generates JAVA model from XSD schema using JAXB and generate the avro
> schema from the generated JAVA model.
>
> This has drawbacks :
>
> 1. Unable to gen avro for element children that are not wrapped by
> complex-type,
> 2. Unable to identify namespaces
> 3. Unable to generate single avro for a nested XSD, which I fixed by
> inserting the separate JSON objects generated accordingly to get the final
> nested avro schema.
>
>
> for (1) we need to manipulate the xsd give an insert complex-type tags.
> (2) cannot be supported with JAXB based generator,  need to evaluate
> optional approach for this.
>
>
>
> meanwhile I am evaluating [2] as well.
>
>
> [2] https://github.com/elodina/xml-avro
>
> Regards
> Awanthika
>
>
>
>
> Awanthika Senarath
> Software Engineer, WSO2 Inc.
> Mobile: +94717681791
>
>
>
> On Thu, Feb 25, 2016 at 5:42 PM, Sohani Weerasinghe <[email protected]>
> wrote:
>
>> Hi Awanthika,
>>
>> We have tried this tool sometime back and as I remember it has some
>> issues with namespaces and also it generates separate files for each
>> complex datatypes (which I think you are merging and creating a single
>> object) .If we are to use this it seems we need to improve this and fix the
>> above issues.
>>
>> Thanks,
>> Sohani
>>
>> Sohani Weerasinghe
>> Software Engineer
>> WSO2, Inc: http://wso2.com
>>
>> Mobile  : +94 716439774
>> Blog     :http://christinetechtips.blogspot.com/
>> Twitter  : https://twitter.com/sohanichristine
>>
>> On Thu, Feb 25, 2016 at 5:04 PM, Awanthika Senarath <[email protected]>
>> wrote:
>>
>>> Hi Susinda,
>>>
>>> I was able to generate a nested avro schema from a nested xsd schema
>>> using the tool by doing some changes to the API, as it by default generated
>>> the nested schema Json objects as separate root level Json objects being
>>> mapped to the parent Json via namespaces.
>>>
>>> But it has an issue as it does not generate the avro schema correctly
>>> when the root xsd has simple fields as children and not complex items,
>>>
>>> For an example it will correctly parse [1] while it would fail to parse
>>> [2]  it will only parse the complexElement in [3] ignoring the simple
>>> elements parallel to it.
>>>
>>> [1] <xs:schema attributeFormDefault="unqualified" elementFormDefault=
>>> "qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>>>
>>>   <xs:element name="pizza">
>>>     <xs:complexType>
>>>       <xs:sequence>
>>>         <xs:element type="xs:string" name="name"/>
>>>         <xs:element type="xs:float" name="price"/>
>>>         <xs:element name="toppingsList">
>>>           <xs:complexType>
>>>             <xs:sequence>
>>>               <xs:element name="toppings" maxOccurs="unbounded" 
>>> minOccurs="0">
>>>                 <xs:complexType>
>>>                   <xs:sequence>
>>>                     <xs:element type="xs:short" name="id"/>
>>>                     <xs:element type="xs:string" name="name"/>
>>>                     <xs:element type="xs:float" name="extraPrice"/>
>>>                     <xs:element type="xs:string" name="category"/>
>>>                   </xs:sequence>
>>>                 </xs:complexType>
>>>               </xs:element>
>>>             </xs:sequence>
>>>           </xs:complexType>
>>>         </xs:element>
>>>       </xs:sequence>
>>>     </xs:complexType>
>>>   </xs:element></xs:schema>
>>>
>>>
>>>
>>> [2]<?xml version="1.0"?>
>>> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
>>> attributeFormDefault="unqualified" elementFormDefault="qualified"
>>> targetNamespace="urn:sobject.partner.soap.sforce.com">
>>>   <xs:element name="type" type="xs:string"/>
>>>   <xs:element name="Id" nillable="true" type="xs:string"/>
>>>   <xs:element name="Name" type="xs:string"/>
>>>   <xs:element name="Amount" type="xs:float"/>
>>> </xs:schema>
>>>
>>> [3] <xs:schema attributeFormDefault="unqualified" elementFormDefault=
>>> "qualified" targetNamespace="urn:sobject.partner.soap.sforce.com"
>>> xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>>>
>>>   <xs:element name="type" type="xs:string"/>
>>>   <xs:element name="Id" nillable="true" type="xs:string"/>
>>>   <xs:element name="Account">
>>>     <xs:complexType>
>>>       <xs:sequence>
>>>         <xs:element type="xs:string" name="type"/>
>>>         <xs:element type="xs:string" name="Id" nillable="true"/>
>>>         <xs:element type="xs:string" name="Name"/>
>>>       </xs:sequence>
>>>     </xs:complexType>
>>>   </xs:element>
>>>   <xs:element name="Name" type="xs:string"/>
>>>   <xs:element name="Amount" type="xs:float"/></xs:schema>
>>>
>>>
>>>
>>>
>>> Regards
>>> Awanthika
>>>
>>>
>>> Awanthika Senarath
>>> Software Engineer, WSO2 Inc.
>>> Mobile: +94717681791
>>>
>>>
>>>
>>> On Thu, Feb 25, 2016 at 11:18 AM, Awanthika Senarath <[email protected]
>>> > wrote:
>>>
>>>> Hi Susinda,
>>>>
>>>> Currently I am evaluating approaches for generating avro schema from
>>>> XSD keeping option 1 in mind.
>>>>
>>>> [1] seems to be a reliable option, but the generated avro schema is not
>>>> in the accepted format for us.
>>>>
>>>>
>>>> [1] https://github.com/Nokia/Avro-Schema-Generator
>>>>
>>>>
>>>> Regards
>>>> Awanthika
>>>>
>>>> Awanthika Senarath
>>>> Software Engineer, WSO2 Inc.
>>>> Mobile: +94717681791
>>>>
>>>>
>>>>
>>>> On Thu, Feb 25, 2016 at 11:04 AM, Susinda Perera <[email protected]>
>>>> wrote:
>>>>
>>>>> For Datamapper we have to give an option to do data mapping starting
>>>>> from xml payload (that user may already have). For this we need to to
>>>>> create avro schema from xml instance. Possible approaches may be
>>>>>   1. Generate xml schema(XSD) from xml and then create avro schema
>>>>> from XSD.
>>>>>   2. Directly generate  avro schema by looking at xml (we have to code
>>>>> from the scratch)
>>>>>
>>>>> I believe that going with option 1 would be good, so that we can
>>>>> handle the use case of mapping from xml-schema. Also there are some
>>>>> libraries[1] and online tools[2,3] available to generate XSD from xml with
>>>>> some limitations. (eg represent leaf values as strings). Also from bit of
>>>>> research i found that there are several types of XSD representation
>>>>> (Venetian Blind Design, Russian Doll Design, Salami Slice Design) and we
>>>>> may need to decide on which would best fit (or easy to convert to) avro
>>>>> schema.
>>>>> If someone has done similar xml<->XSD conversion, please share your
>>>>> ideas and suggestions.
>>>>>
>>>>> Thanks
>>>>>
>>>>>
>>>>> [1] http://xmlbeans.apache.org/docs/2.0.0/guide/tools.html#xsd2inst
>>>>>
>>>>> [2] https://devutilsonline.com/xsd-xml/generate-xsd-from-xml
>>>>>
>>>>> [3]http://www.freeformatter.com/xsd-generator.html
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Susinda Perera*
>>>>> Software Engineer
>>>>> B.Sc.(Eng), M.Sc(Computer Science), AMIE(SL)
>>>>> Mobile:(+94)716049075
>>>>> Blog: susinda.blogspot.com
>>>>> WSO2 Inc. http://wso2.com/
>>>>> Tel : 94 11 214 5345 Fax :94 11 2145300
>>>>>
>>>>>
>>>>
>>>
>>
>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to