You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@abdera.apache.org by Arjun Sharma <to...@gmail.com> on 2008/05/26 09:33:06 UTC

Not able to POST in the employee example

Hi
I am trying to work with the Employee example of Abdera Servlet. GET method
works fine. But when i try to POST or PUT I am getting the following
exceptions:

     [java] Method:    POST
     [java] May 26, 2008 12:57:31 PM
org.apache.abdera.protocol.server.impl.Abst
ractCollectionAdapter createErrorResponse
     [java] INFO: A ResponseException was thrown.
     [java]
org.apache.abdera.protocol.server.context.ResponseContextException
     [java]     at
org.apache.abdera.protocol.server.impl.AbstractCollectionAdap
ter.getEntryFromRequest(AbstractCollectionAdapter.java:247)
     [java]     at
org.apache.abdera.protocol.server.impl.AbstractEntityCollecti
onAdapter.postEntry(AbstractEntityCollectionAdapter.java:142)
     [java]     at
org.apache.abdera.protocol.server.impl.AbstractProvider.proce
ss(AbstractProvider.java:147)
     [java]     at
org.apache.abdera.protocol.server.FilterChain.next(FilterChai
n.java:42)
     [java]     at
org.apache.abdera.protocol.server.servlet.AbderaServlet.servi
ce(Unknown Source)
     [java]     at
javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
     [java]     at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.
java:487)
     [java]     at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandle
r.java:367)
     [java]     at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandle
r.java:181)
     [java]     at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandle
r.java:712)
     [java]     at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrappe
r.java:139)
     [java]     at org.mortbay.jetty.Server.handle(Server.java:285)
     [java]     at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection
.java:502)
     [java]     at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpC
onnection.java:835)
     [java]     at
org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
     [java]     at
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:2
08)
     [java]     at
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:3
78)
     [java]     at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketCo
nnector.java:226)
     [java]     at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedTh
readPool.java:442)
     [java] Caused by: org.apache.abdera.parser.ParseException:
javax.xml.stream
.XMLStreamException: ParseError at [row,col]:[2,18]
     [java] Message: XML document structures must start and end within the
same
entity.
     [java]     at
org.apache.abdera.parser.stax.FOMBuilder.next(FOMBuilder.java
:260)
     [java]     at
org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(
OMElementImpl.java:265)
     [java]     at
org.apache.axiom.om.impl.traverse.OMChildrenIterator.next(OMC
hildrenIterator.java:106)
     [java]     at
org.apache.abdera.parser.stax.FOMDocument.clone(FOMDocument.j
ava:229)
     [java]     at
org.apache.abdera.protocol.server.impl.AbstractCollectionAdap
ter.getEntryFromRequest(AbstractCollectionAdapter.java:245)
     [java]     ... 18 more
     [java] Caused by: javax.xml.stream.XMLStreamException: ParseError at
[row,c
ol]:[2,18]
     [java] Message: XML document structures must start and end within the
same
entity.
     [java]     at
com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.n
ext(XMLStreamReaderImpl.java:588)
     [java]     at
org.apache.abdera.parser.stax.FOMBuilder.getNextElementToPars
e(FOMBuilder.java:163)
     [java]     at
org.apache.abdera.parser.stax.FOMBuilder.next(FOMBuilder.java
:187)
     [java]     ... 22 more


My entry.xml which contains the entry to POST is:
<?xml version="1.0"?>
<entry><link href="/employee/3-Third_Employee"
rel="edit"></link><id>feed-3</id><title type="text">3
Employee</title><updated>2008-05-26T05:49:03.453Z</updated><author><name>Acme
Industries</name></author><content type="text">Third
Employee</content></entry>

-- 
Arjun Sharma S

Re: Not able to POST in the employee example

Posted by David Calavera <da...@gmail.com>.
Hi Arjun, are you sure that your entry is well formed? try to format your
xml file input because I'm trying to reproduce it but with the trunk code it
works fine. I endose you my test:

@Test
    public void testGetEntryFromRequest() throws Exception {
        StringReader reader = new StringReader("<?xml version=\"1.0\"?>"
                + "<entry><link href=\"/employee/3-Third_Employee\""
                + " rel=\"edit\"></link><id>feed-3</id><title
type=\"text\">3"
                +
"Employee</title><updated>2008-05-26T05:49:03.453Z</updated><author><name>Acme"
                + "Industries</name></author><content type=\"text\">Third"
                + "Employee</content></entry>");
        InputStream customReader = new CustomReaderInputStream(reader);


        Abdera abdera = new Abdera();

        Parser parser = abdera.getParser();
        Document<Entry>  entry = parser.parse(customReader, "/collection",
parser.getDefaultParserOptions());
        assertNotNull(entry.clone());
    }

    private class CustomReaderInputStream extends InputStream {

        Reader reader;
        public CustomReaderInputStream(Reader reader) {
            this.reader = reader;
        }

        @Override
        public int read() throws IOException {
            return reader.read();
        }

    }

Your stacktrace shows that the method "entry.clone()" raises an exception
but in my test it railses nothing.

On Mon, May 26, 2008 at 9:33 AM, Arjun Sharma <to...@gmail.com> wrote:

> Hi
> I am trying to work with the Employee example of Abdera Servlet. GET method
> works fine. But when i try to POST or PUT I am getting the following
> exceptions:
>
>     [java] Method:    POST
>     [java] May 26, 2008 12:57:31 PM
> org.apache.abdera.protocol.server.impl.Abst
> ractCollectionAdapter createErrorResponse
>     [java] INFO: A ResponseException was thrown.
>     [java]
> org.apache.abdera.protocol.server.context.ResponseContextException
>     [java]     at
> org.apache.abdera.protocol.server.impl.AbstractCollectionAdap
> ter.getEntryFromRequest(AbstractCollectionAdapter.java:247)
>     [java]     at
> org.apache.abdera.protocol.server.impl.AbstractEntityCollecti
> onAdapter.postEntry(AbstractEntityCollectionAdapter.java:142)
>     [java]     at
> org.apache.abdera.protocol.server.impl.AbstractProvider.proce
> ss(AbstractProvider.java:147)
>     [java]     at
> org.apache.abdera.protocol.server.FilterChain.next(FilterChai
> n.java:42)
>     [java]     at
> org.apache.abdera.protocol.server.servlet.AbderaServlet.servi
> ce(Unknown Source)
>     [java]     at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>     [java]     at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.
> java:487)
>     [java]     at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandle
> r.java:367)
>     [java]     at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandle
> r.java:181)
>     [java]     at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandle
> r.java:712)
>     [java]     at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrappe
> r.java:139)
>     [java]     at org.mortbay.jetty.Server.handle(Server.java:285)
>     [java]     at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection
> .java:502)
>     [java]     at
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpC
> onnection.java:835)
>     [java]     at
> org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
>     [java]     at
> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:2
> 08)
>     [java]     at
> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:3
> 78)
>     [java]     at
> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketCo
> nnector.java:226)
>     [java]     at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedTh
> readPool.java:442)
>     [java] Caused by: org.apache.abdera.parser.ParseException:
> javax.xml.stream
> .XMLStreamException: ParseError at [row,col]:[2,18]
>     [java] Message: XML document structures must start and end within the
> same
> entity.
>     [java]     at
> org.apache.abdera.parser.stax.FOMBuilder.next(FOMBuilder.java
> :260)
>     [java]     at
> org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(
> OMElementImpl.java:265)
>     [java]     at
> org.apache.axiom.om.impl.traverse.OMChildrenIterator.next(OMC
> hildrenIterator.java:106)
>     [java]     at
> org.apache.abdera.parser.stax.FOMDocument.clone(FOMDocument.j
> ava:229)
>     [java]     at
> org.apache.abdera.protocol.server.impl.AbstractCollectionAdap
> ter.getEntryFromRequest(AbstractCollectionAdapter.java:245)
>     [java]     ... 18 more
>     [java] Caused by: javax.xml.stream.XMLStreamException: ParseError at
> [row,c
> ol]:[2,18]
>     [java] Message: XML document structures must start and end within the
> same
> entity.
>     [java]     at
> com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.n
> ext(XMLStreamReaderImpl.java:588)
>     [java]     at
> org.apache.abdera.parser.stax.FOMBuilder.getNextElementToPars
> e(FOMBuilder.java:163)
>     [java]     at
> org.apache.abdera.parser.stax.FOMBuilder.next(FOMBuilder.java
> :187)
>     [java]     ... 22 more
>
>
> My entry.xml which contains the entry to POST is:
> <?xml version="1.0"?>
> <entry><link href="/employee/3-Third_Employee"
> rel="edit"></link><id>feed-3</id><title type="text">3
>
> Employee</title><updated>2008-05-26T05:49:03.453Z</updated><author><name>Acme
> Industries</name></author><content type="text">Third
> Employee</content></entry>
>
> --
> Arjun Sharma S
>



-- 
David Calavera
http://www.thinkincode.net