olingo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Haller (JIRA)" <j...@apache.org>
Subject [jira] [Created] (OLINGO-1108) Edm.Decimal not supported in OData Create requests (POST)
Date Wed, 12 Apr 2017 15:41:41 GMT
Patrick Haller created OLINGO-1108:
--------------------------------------

             Summary: Edm.Decimal not supported in OData Create requests (POST)
                 Key: OLINGO-1108
                 URL: https://issues.apache.org/jira/browse/OLINGO-1108
             Project: Olingo
          Issue Type: Bug
          Components: odata2-core
    Affects Versions: V2 2.0.8
            Reporter: Patrick Haller


We've got Edm.Decimal on a POST request (OData Create). 
Upon sending the request, we see the following exception in the server log.

In JsonPropertyConsumer.readSimpleProperty()'s switch case, we have
type=Edm.Decimal
tokenType=JsonToken.NUMBER
and therefore end up with throwing INVALID_PROPERTY_VALUE.

*exception*
{quote}Caused by: org.apache.olingo.odata2.api.ep.EntityProviderException: Provided value
for the property 'Quantity' is not compatible with the property.
	at org.apache.olingo.odata2.core.ep.consumer.JsonPropertyConsumer.readSimpleProperty(JsonPropertyConsumer.java:227)
	at org.apache.olingo.odata2.core.ep.consumer.JsonPropertyConsumer.readPropertyValue(JsonPropertyConsumer.java:169)
	at org.apache.olingo.odata2.core.ep.consumer.JsonEntryConsumer.handleName(JsonEntryConsumer.java:172)
	at org.apache.olingo.odata2.core.ep.consumer.JsonEntryConsumer.readEntryContent(JsonEntryConsumer.java:130)
	at org.apache.olingo.odata2.core.ep.consumer.JsonEntryConsumer.readSingleEntry(JsonEntryConsumer.java:93)
	at org.apache.olingo.odata2.core.ep.consumer.JsonEntityConsumer.readEntry(JsonEntityConsumer.java:57)
	at org.apache.olingo.odata2.core.ep.JsonEntityProvider.readEntry(JsonEntityProvider.java:315)
	at org.apache.olingo.odata2.core.ep.ProviderFacadeImpl.readEntry(ProviderFacadeImpl.java:179)
	at org.apache.olingo.odata2.api.ep.EntityProvider.readEntry(EntityProvider.java:746)
	at org.apache.olingo.odata2.jpa.processor.core.ODataEntityParser.parseEntry(ODataEntityParser.java:64)
	... 66 common frames omitted{quote}

*Data Model classes*

*Java Client (Spring RestTemplate)*
{quote}class MyPostRequest {
        @JsonProperty("Cost")
        BigDecimal cost;
}{quote}

*Java Server (Olingo)*
{quote}class ProjectCost implements Serializable
{
    // ...

    @Column
    private BigDecimal cost;
}{quote}

*$metadata*
{quote}<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">
<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
m:DataServiceVersion="1.0">
<Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="project">
<EntityType xmlns:sap="http://www.sap.com/Protocols/SAPData" Name="Project" sap:label="Project">
<Key>
<PropertyRef Name="Uuid"/>
</Key>
<Property xmlns:sap="http://www.sap.com/Protocols/SAPData" Name="LastUpdate" Type="Edm.DateTime"
Nullable="true" sap:label="Last Update"/>
<Property xmlns:sap="http://www.sap.com/Protocols/SAPData" Name="Name" Type="Edm.String"
Nullable="true" MaxLength="255" sap:label="Project"/>
<Property xmlns:sap="http://www.sap.com/Protocols/SAPData" Name="ProjectType" Type="Edm.String"
Nullable="true" MaxLength="255" sap:label="Type"/>
<Property xmlns:sap="http://www.sap.com/Protocols/SAPData" Name="Responsible" Type="Edm.String"
Nullable="true" MaxLength="255" sap:label="Person Responsible"/>
<Property xmlns:sap="http://www.sap.com/Protocols/SAPData" Name="Stage" Type="Edm.String"
Nullable="true" MaxLength="255" sap:label="Stage"/>
<Property xmlns:sap="http://www.sap.com/Protocols/SAPData" Name="Status" Type="Edm.String"
Nullable="true" MaxLength="255" sap:label="Status"/>
<Property Name="Uuid" Type="Edm.String" Nullable="false"/>
<NavigationProperty Name="ProjectCostDetails" Relationship="project.Project_ProjectCost_One_Many0"
FromRole="Project" ToRole="ProjectCost"/>
</EntityType>
<EntityType Name="ProjectCost">
<Key>
<PropertyRef Name="Uuid"/>
</Key>
<Property Name="ChangedBy" Type="Edm.String" Nullable="true" MaxLength="255"/>
<Property Name="ChangedTime" Type="Edm.DateTime" Nullable="true"/>
<Property Name="Cost" Type="Edm.Decimal" Nullable="true"/>
<Property Name="CreatedBy" Type="Edm.String" Nullable="true" MaxLength="255"/>
<Property Name="CreationTime" Type="Edm.DateTime" Nullable="true"/>
<Property Name="Currency" Type="Edm.String" Nullable="true" MaxLength="255"/>
<Property Name="Margin" Type="Edm.Decimal" Nullable="true"/>
<Property Name="ParentStructureElement" Type="Edm.String" Nullable="true" MaxLength="255"/>
<Property Name="Project" Type="Edm.String" Nullable="true"/>
<Property Name="Quantity" Type="Edm.Decimal" Nullable="true"/>
<Property Name="Revenue" Type="Edm.Decimal" Nullable="true"/>
<Property Name="StructureElement" Type="Edm.String" Nullable="true" MaxLength="255"/>
<Property Name="StructureElementDescription" Type="Edm.String" Nullable="true" MaxLength="255"/>
<Property Name="UnitOfMeasure" Type="Edm.String" Nullable="true" MaxLength="255"/>
<Property Name="Uuid" Type="Edm.String" Nullable="false"/>
<NavigationProperty Name="ProjectDetails" Relationship="project.Project_ProjectCost_One_Many0"
FromRole="ProjectCost" ToRole="Project"/>
</EntityType>
<Association Name="Project_ProjectCost_One_Many0">
<End Type="project.Project" Multiplicity="0..1" Role="Project"/>
<End Type="project.ProjectCost" Multiplicity="*" Role="ProjectCost"/>
<ReferentialConstraint>
<Principal Role="Project">
<PropertyRef Name="Uuid"/>
</Principal>
<Dependent Role="ProjectCost">
<PropertyRef Name="Project"/>
</Dependent>
</ReferentialConstraint>
</Association>
<EntityContainer Name="projectContainer" m:IsDefaultEntityContainer="true">
<EntitySet Name="Projects" EntityType="project.Project"/>
<EntitySet Name="ProjectCosts" EntityType="project.ProjectCost"/>
<AssociationSet Name="Project_ProjectCost_One_Many0Set" Association="project.Project_ProjectCost_One_Many0">
<End EntitySet="Projects" Role="Project"/>
<End EntitySet="ProjectCosts" Role="ProjectCost"/>
</AssociationSet>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>{quote}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message