[
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)