[ 
https://issues.apache.org/jira/browse/TUSCANY-1408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12510683
 ] 

Frank Budinsky commented on TUSCANY-1408:
-----------------------------------------

The spec says this in section 7.1.3:

The xmlElement property is set to true on Properties that are represented as 
XML elements.  If no value is present there is no information about the 
mapping.  If the value is false, it indicates that it is not an element, but it 
does not guarantee that there is mapping to an XML attribute. Only if the 
property was defined using an XML Schema will a value of false indicate that 
the property maps to an attribute. If the property was defined using other 
means, for example, TypeHelper.define(), then a value of false indicates a 
desire to represent the property as an attribute, but it may not be possible. 
For example, a containment or nullable property must be serialized as an XML 
element.

So, what I think is the simplest approach that is compliant and also works is 
to simply make Element the default. If we want to also add support for 
xmlElement=False, we need to make sure that we set it back to Element in 
setContainment and setNullable (any where else?) methods.

I'm also not sure if we should be adding the xmlElment argument to the 
createProperty method, since it's an XML specific thing. It would probably be 
better to have a setPropertyXMLKind(Property, boolean) method instead, which is 
called after createProperty().

> Cannot programmatically define a SDO property matching to XSD element
> ---------------------------------------------------------------------
>
>                 Key: TUSCANY-1408
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-1408
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java SDO Implementation
>    Affects Versions: Java-SDO-1.0
>         Environment: WinXP
>            Reporter: Fuhwei Lwo
>             Fix For: Java-SDO-1.0
>
>         Attachments: 1408.patch
>
>
> The following code will define XSD attributes for "name" and "address" 
> properties. I cannot find a way to define them as XSD elements.
> HelperContext hc = HelperProvider.getDefaultContext();
> DataFactory dataFactory = hc.getDataFactory();
> TypeHelper types = hc.getTypeHelper();
> Type stringType = types.getType("commonj.sdo", "String");
>         
> DataObject customerType = dataFactory.create("commonj.sdo","Type");
> customerType.set("uri", "http://sample.data/customer";);
> customerType.set("name", "Customer");
> //create customer name property
> DataObject custNameProperty = customerType.createDataObject("property");
> custNameProperty.set("name", "name");
> custNameProperty.set("type", stringType);
> //create address property
> DataObject addressProperty = customerType.createDataObject("property");
> addressProperty.set("name", "address");
> addressProperty.set("type", stringType);
> //now define the Customer type so that customers can be made
> Type typeDefined = types.define(customerType);

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to