You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@olingo.apache.org by "M Carissimi (JIRA)" <ji...@apache.org> on 2014/02/04 16:28:12 UTC
[jira] [Updated] (OLINGO-145) Write feed with ComplexType
properties
[ https://issues.apache.org/jira/browse/OLINGO-145?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
M Carissimi updated OLINGO-145:
-------------------------------
Description:
Hello,
I have a web application which exposes an OData web service containing Entity Types with simple and complex properties.
My EdmProvider creates a complex type as follow
{code}
ComplexType myNumberComplexType = new ComplexType();
myNumberComplexType.setName("NumberAndUnits");
List<Property> myComplexTypeProps = new ArrayList<Property>();
Property myNumber = new SimpleProperty().setName("Number").setType(EdmSimpleTypeKind.Double);
myComplexTypeProps.add(myNumber);
Property myUnit = new SimpleProperty().setName("Unit").setType(EdmSimpleTypeKind.String);
myComplexTypeProps.add(myUnit);
myNumberComplexType.setProperties(myComplexTypeProps);
complexTypes.add(myNumberComplexType);
{code}
This is shown on the metadata as
{code}
<ComplexType Name="NumberAndUnits">
<Property Name="Number" Type="Edm.Int32"/>
<Property Name="Unit" Type="Edm.String"/>
</ComplexType>
{code}
Entity Types using the complex type are shown on the metadata as follow
{code}
<EntityType Name="P_D_W_A">
...
<Property Name="flow" Type="esys_producer.NumberAndUnits" Nullable="true"/>
</EntityType>
{code}
My ODataSingleProcessor uses the EntityProvider.writeEntry() method to create the ODataResponse for method readEntity(). Similarly, method EntityProvider.writeFeed() is used to create the ODataResponse for method readEntitySet(). In both cases the data to populate the entry (or feed) is contained in a Map<String,Object> and in turn the values for the properties using complex types are contained in a Map<String,Object>. Tje code used to create the maps is as follow
{code}
Map<String, Object> myComplexProps = new HashMap<String, Object>();
// set double type
Double myDoubleValue = null;
if (!isNullOrEmpty(myAttrValue))
{
myDoubleValue = Double.valueOf(myAttrValue);
}
myComplexProps.put("Number", myDoubleValue);
myComplexProps.put("Unit", "Sm3");
myProps.put(myAttrName, myComplexProps);
{code}
Whenever I try to load a feed for an entity type containing the complex type, I get a message saying "An exception occurred.". I have added my own ErrorDebug and ErrorCallback to enable debugging and to print out error messages, but no additional information is given.
Can you please suggest how I can resolve this issue?
was:
Hello,
I have a web application which exposes an OData web service containing Entity Types with simple and complex properties.
My EdmProvider creates a complex type as follow
{code}
ComplexType myNumberComplexType = new ComplexType();
myNumberComplexType.setName("NumberAndUnits");
List<Property> myComplexTypeProps = new ArrayList<Property>();
Property myNumber = new SimpleProperty().setName("Number").setType(EdmSimpleTypeKind.Double);
myComplexTypeProps.add(myNumber);
Property myUnit = new SimpleProperty().setName("Unit").setType(EdmSimpleTypeKind.String);
myComplexTypeProps.add(myUnit);
myNumberComplexType.setProperties(myComplexTypeProps);
complexTypes.add(myNumberComplexType);
{code}
This is shown on the metadata as
{code}
<ComplexType Name="NumberAndUnits">
<Property Name="Number" Type="Edm.Int32"/>
<Property Name="Unit" Type="Edm.String"/>
</ComplexType>
{code}
Entity Types using the complex type are shown on the metadata as follow
{code}
<EntityType Name="PR_D_WELL_A">
...
<Property Name="OIL" Type="esys_producer.NumberAndUnits" Nullable="true"/>
</EntityType>
{code}
My ODataSingleProcessor uses the EntityProvider.writeEntry() method to create the ODataResponse for method readEntity(). Similarly, method EntityProvider.writeFeed() is used to create the ODataResponse for method readEntitySet(). In both cases the data to populate the entry (or feed) is contained in a Map<String,Object> and in turn the values for the properties using complex types are contained in a Map<String,Object>. Tje code used to create the maps is as follow
{code}
Map<String, Object> myComplexProps = new HashMap<String, Object>();
// set double type
Double myDoubleValue = null;
if (!isNullOrEmpty(myAttrValue))
{
myDoubleValue = Double.valueOf(myAttrValue);
}
myComplexProps.put("Number", myDoubleValue);
myComplexProps.put("Unit", "Sm3");
myProps.put(myAttrName, myComplexProps);
{code}
Whenever I try to load a feed for an entity type containing the complex type, I get a message saying "An exception occurred.". I have added my own ErrorDebug and ErrorCallback to enable debugging and to print out error messages, but no additional information is given.
Can you please suggest how I can resolve this issue?
> Write feed with ComplexType properties
> --------------------------------------
>
> Key: OLINGO-145
> URL: https://issues.apache.org/jira/browse/OLINGO-145
> Project: Olingo
> Issue Type: Question
> Affects Versions: V2 1.0.0
> Reporter: M Carissimi
>
> Hello,
> I have a web application which exposes an OData web service containing Entity Types with simple and complex properties.
> My EdmProvider creates a complex type as follow
> {code}
> ComplexType myNumberComplexType = new ComplexType();
> myNumberComplexType.setName("NumberAndUnits");
> List<Property> myComplexTypeProps = new ArrayList<Property>();
> Property myNumber = new SimpleProperty().setName("Number").setType(EdmSimpleTypeKind.Double);
> myComplexTypeProps.add(myNumber);
> Property myUnit = new SimpleProperty().setName("Unit").setType(EdmSimpleTypeKind.String);
> myComplexTypeProps.add(myUnit);
> myNumberComplexType.setProperties(myComplexTypeProps);
> complexTypes.add(myNumberComplexType);
> {code}
> This is shown on the metadata as
> {code}
> <ComplexType Name="NumberAndUnits">
> <Property Name="Number" Type="Edm.Int32"/>
> <Property Name="Unit" Type="Edm.String"/>
> </ComplexType>
> {code}
> Entity Types using the complex type are shown on the metadata as follow
> {code}
> <EntityType Name="P_D_W_A">
> ...
> <Property Name="flow" Type="esys_producer.NumberAndUnits" Nullable="true"/>
> </EntityType>
> {code}
> My ODataSingleProcessor uses the EntityProvider.writeEntry() method to create the ODataResponse for method readEntity(). Similarly, method EntityProvider.writeFeed() is used to create the ODataResponse for method readEntitySet(). In both cases the data to populate the entry (or feed) is contained in a Map<String,Object> and in turn the values for the properties using complex types are contained in a Map<String,Object>. Tje code used to create the maps is as follow
> {code}
> Map<String, Object> myComplexProps = new HashMap<String, Object>();
> // set double type
> Double myDoubleValue = null;
> if (!isNullOrEmpty(myAttrValue))
> {
> myDoubleValue = Double.valueOf(myAttrValue);
> }
> myComplexProps.put("Number", myDoubleValue);
> myComplexProps.put("Unit", "Sm3");
> myProps.put(myAttrName, myComplexProps);
> {code}
> Whenever I try to load a feed for an entity type containing the complex type, I get a message saying "An exception occurred.". I have added my own ErrorDebug and ErrorCallback to enable debugging and to print out error messages, but no additional information is given.
> Can you please suggest how I can resolve this issue?
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)