Florent Albert created OLINGO-1580: -------------------------------------- Summary: XML syntax unbound action with a collection of entities as parameter Key: OLINGO-1580 URL: https://issues.apache.org/jira/browse/OLINGO-1580 Project: Olingo Issue Type: Question Components: odata4-server Affects Versions: (Java) V4 4.9.0 Reporter: Florent Albert
I have an unbound action which takes a collection of entities as a parameter. This action works fine when the request body is JSON. However, when the request body is XML, it fails with HTTP 400 "failed to read feed". This is what my request body looks like: {quote}{color:#808080}<?{color}{color:#569cd6}xml{color}{color:#9cdcfe} version{color}{color:#d4d4d4}={color}{color:#ce9178}'1.0'{color}{color:#9cdcfe} encoding{color}{color:#d4d4d4}={color}{color:#ce9178}'UTF-8'{color}{color:#808080}?>{color} {color:#808080}<{color}{color:#569cd6}metadata:parameters{color}{color:#d4d4d4} {color} {color:#d4d4d4} {color}{color:#9cdcfe}xmlns:metadata{color}{color:#d4d4d4}={color}{color:#ce9178}"http://docs.oasis-open.org/odata/ns/metadata"{color} {color:#d4d4d4} {color}{color:#9cdcfe}xmlns:data{color}{color:#d4d4d4}={color}{color:#ce9178}"http://docs.oasis-open.org/odata/ns/data"{color} {color:#d4d4d4} {color}{color:#9cdcfe}xmlns:atom{color}{color:#d4d4d4}={color}{color:#ce9178}"http://www.w3.org/2005/Atom"{color}{color:#808080}>{color} {color:#808080}<{color}{color:#569cd6}MyCollectionParameter{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:feed{color}{color:#d4d4d4} {color} {color:#d4d4d4} {color}{color:#9cdcfe}metadata:context{color}{color:#d4d4d4}={color}{color:#ce9178}"http://<URL>/<ServiceRoot>/$metadata#MyEntitySet"{color}{color:#d4d4d4} {color} {color:#d4d4d4} {color}{color:#9cdcfe}xml:base{color}{color:#d4d4d4}={color}{color:#ce9178}"http://<URL>/<ServiceRoot>/"{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:id{color}{color:#808080}>{color}{color:#d4d4d4}http://{color}{color:#808080}<{color}{color:#569cd6}URL{color}{color:#808080}>{color}{color:#d4d4d4}/{color}{color:#808080}<{color}{color:#569cd6}ServiceRoot{color}{color:#808080}>{color}{color:#d4d4d4}/MyEntitySet{color}{color:#808080}</{color}{color:#569cd6}a:id{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:entry{color}{color:#d4d4d4} {color} {color:#d4d4d4} {color}{color:#9cdcfe}metadata:context{color}{color:#d4d4d4}={color}{color:#ce9178}"$metadata#MyEntitySet/$entity"{color} {color:#d4d4d4} {color}{color:#9cdcfe}xml:base{color}{color:#d4d4d4}={color}{color:#ce9178}"http://<URL>/<ServiceRoot>/"{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:id{color}{color:#808080}>{color}{color:#d4d4d4}http://{color}{color:#808080}<{color}{color:#569cd6}URL{color}{color:#808080}>{color}{color:#d4d4d4}/{color}{color:#808080}<{color}{color:#569cd6}ServiceRoot{color}{color:#808080}>{color}{color:#d4d4d4}/$metadata#MyEntitySet('generated-oid'){color}{color:#808080}</{color}{color:#569cd6}atom:id{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:link{color}{color:#d4d4d4} {color}{color:#9cdcfe}rel{color}{color:#d4d4d4}={color}{color:#ce9178}"self"{color}{color:#d4d4d4} {color}{color:#9cdcfe}title{color}{color:#d4d4d4}={color}{color:#ce9178}"EntityName"{color}{color:#d4d4d4} {color}{color:#9cdcfe}href{color}{color:#d4d4d4}={color}{color:#ce9178}"MyEntitySet('generated-oid')"{color}{color:#d4d4d4} {color}{color:#808080}/>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:link{color}{color:#d4d4d4} {color} {color:#d4d4d4} {color}{color:#9cdcfe}rel{color}{color:#d4d4d4}={color}{color:#ce9178}"http://docs.oasis-open.org/odata/ns/related/NavPropBinding"{color} {color:#d4d4d4} {color}{color:#9cdcfe}href{color}{color:#d4d4d4}={color}{color:#ce9178}"http://<URL>/EntitySet2(123)"{color} {color:#d4d4d4} {color}{color:#9cdcfe}type{color}{color:#d4d4d4}={color}{color:#ce9178}"application/atom+xml;type=entry"{color} {color:#d4d4d4} {color}{color:#9cdcfe}title{color}{color:#d4d4d4}={color}{color:#ce9178}"NavPropBinding"{color} {color:#d4d4d4} {color}{color:#808080}/>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:category{color}{color:#d4d4d4} {color}{color:#9cdcfe}term{color}{color:#d4d4d4}={color}{color:#ce9178}"#FQN.EntityName"{color} {color:#d4d4d4} {color}{color:#9cdcfe}scheme{color}{color:#d4d4d4}={color}{color:#ce9178}"http://docs.oasis-open.org/odata/ns/scheme"{color}{color:#d4d4d4} {color}{color:#808080}/>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:content{color}{color:#d4d4d4} {color}{color:#9cdcfe}type{color}{color:#d4d4d4}={color}{color:#ce9178}"application/xml"{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}metadata:properties{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}data:Name{color}{color:#808080}>{color}{color:#d4d4d4}Item 1{color}{color:#808080}</{color}{color:#569cd6}data:Name{color}{color:#808080}>{color}{color:#d4d4d4} {color} {color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}metadata:properties{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}atom:content{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}atom:entry{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:entry{color}{color:#d4d4d4} {color} {color:#d4d4d4} {color}{color:#9cdcfe}metadata:context{color}{color:#d4d4d4}={color}{color:#ce9178}"$metadata#MyEntitySet/$entity"{color} {color:#d4d4d4} {color}{color:#9cdcfe}xml:base{color}{color:#d4d4d4}={color}{color:#ce9178}"http://<URL>/<ServiceRoot>/"{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:id{color}{color:#808080}>{color}{color:#d4d4d4}http://{color}{color:#808080}<{color}{color:#569cd6}URL{color}{color:#808080}>{color}{color:#d4d4d4}/{color}{color:#808080}<{color}{color:#569cd6}ServiceRoot{color}{color:#808080}>{color}{color:#d4d4d4}/$metadata#MyEntitySet('generated-oid'){color}{color:#808080}</{color}{color:#569cd6}atom:id{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:link{color}{color:#d4d4d4} {color}{color:#9cdcfe}rel{color}{color:#d4d4d4}={color}{color:#ce9178}"self"{color}{color:#d4d4d4} {color}{color:#9cdcfe}title{color}{color:#d4d4d4}={color}{color:#ce9178}"EntityName"{color}{color:#d4d4d4} {color}{color:#9cdcfe}href{color}{color:#d4d4d4}={color}{color:#ce9178}"MyEntitySet('generated-oid')"{color}{color:#d4d4d4} {color}{color:#808080}/>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:link{color}{color:#d4d4d4} {color} {color:#d4d4d4} {color}{color:#9cdcfe}rel{color}{color:#d4d4d4}={color}{color:#ce9178}"http://docs.oasis-open.org/odata/ns/related/NavPropBinding"{color} {color:#d4d4d4} {color}{color:#9cdcfe}href{color}{color:#d4d4d4}={color}{color:#ce9178}"http://<URL>/EntitySet2(123)"{color} {color:#d4d4d4} {color}{color:#9cdcfe}type{color}{color:#d4d4d4}={color}{color:#ce9178}"application/atom+xml;type=entry"{color} {color:#d4d4d4} {color}{color:#9cdcfe}title{color}{color:#d4d4d4}={color}{color:#ce9178}"NavPropBinding"{color} {color:#d4d4d4} {color}{color:#808080}/>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:category{color}{color:#d4d4d4} {color}{color:#9cdcfe}term{color}{color:#d4d4d4}={color}{color:#ce9178}"#FQN.EntityName"{color} {color:#d4d4d4} {color}{color:#9cdcfe}scheme{color}{color:#d4d4d4}={color}{color:#ce9178}"http://docs.oasis-open.org/odata/ns/scheme"{color}{color:#d4d4d4} {color}{color:#808080}/>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}atom:content{color}{color:#d4d4d4} {color}{color:#9cdcfe}type{color}{color:#d4d4d4}={color}{color:#ce9178}"application/xml"{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}metadata:properties{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}data:Name{color}{color:#808080}>{color}{color:#d4d4d4}item 2{color}{color:#808080}</{color}{color:#569cd6}data:Name{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}metadata:properties{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}atom:content{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}atom:entry{color}{color:#808080}>{color} {color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}atom:feed{color}{color:#808080}>{color} {color:#808080}</{color}{color:#569cd6}MyCollectionParameter{color}{color:#808080}>{color} {color:#808080}</{color}{color:#569cd6}metadata:parameters{color}{color:#808080}>{color}{quote} I tried removing the <atom:feed> tag and have my entries directly under MyCollectionParameter, it didn't work either. Looking at the XML Deserializer, it looks like there is a bug as it expects the parameter name to be "<atom_ns>feed" (cf. {_}org.apache.olingo.server.core.deserializer.xml.ODataXmlDeserializer.entitySet(XMLEventReader, StartElement, EdmEntityType){_}) Before opening a bug, I wanted to make sure I'm not making a syntax mistake. -- This message was sent by Atlassian Jira (v8.20.10#820010)