Hi John
I've updated the docs a bit, with more info about JAX-RS and custom providers
in particular, have a look please
http://cwiki.apache.org/CXF20DOC/jax-rs-jsr-311.html
What object(s) currently deal with a straight POST submission and convert
into the required object? And how would I change this particular object
for a given post submission? Perhaps I can simply extend it and add the
code to deal with multipart?
It is message body readers that affect the way a request input stream is converted into a given parameter type in a method. JAX-RS
mandates the support for some types like String, etc. If your application needs to support a different type or it needs to override
the way one of the default types is dealt with by the runtime then creating a custom message body reader is the way to go.
Cheers, Sergey
John Baker
--
Web SSO
IT Infrastructure
Deutsche Bank London
URL: http://websso.cto.gt.intranet.db.com
"Sergey Beryozkin" <[EMAIL PROTECTED]>
08/05/2008 16:18
Please respond to
[email protected]
To
<[email protected]>
cc
<[email protected]>
Subject
Re: HTTP multipart/form-data and REST
Hi,
My understanding is that one would typically use MultivaluedMap to handle
HTML form submissions.
I don't think you can use MultivaluedMap for this kind of conversion.
MessageBodyReaders implement readFrom() method. So if you would not like
the application code be aware of multipart/form-encoded
then you'd need to have a custom MessageBodyReader registered which will
do the conversion from a multipart/form-data into the type
expected by the application code.
DataSource may make it easier tp deal with multipart/* requests, but CXF
does not support it yet...
Cheers, Sergey
----- Original Message -----
From: "John-M Baker" <[EMAIL PROTECTED]>
To: <[email protected]>
Cc: <[email protected]>
Sent: Thursday, May 08, 2008 2:57 PM
Subject: Re: HTTP multipart/form-data and REST
Sergey,
Sure, I'll raise a ticket when I get a moment. But can you explain to
me
how I submit a parameter ('xml') and get an object, not the XML, from
the
map?
Thanks,
John Baker
--
Web SSO
IT Infrastructure
Deutsche Bank London
URL: http://websso.cto.gt.intranet.db.com
"Sergey Beryozkin" <[EMAIL PROTECTED]>
08/05/2008 12:33
Please respond to
[email protected]
To
<[email protected]>
cc
Subject
Re: HTTP multipart/form-data and REST
Hi
Response updateApplicationConfiguration(MultivaluedMap<String,String>
params);
This actually should work...
Perhaps you can do
Response updateApplicationConfiguration(MetadataMap<String,String>
params);
MetadataMap is the CXF implementation of MultivaluedMap interface...
The original signature should also work but I can't tell at the moment
whether the bug is in the actual message reader or in the
runtime code...Please open a JIRA to track this issue...
Cheers, Sergey
----- Original Message -----
From: "John-M Baker" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, May 08, 2008 9:15 AM
Subject: Re: HTTP multipart/form-data and REST
My mistake, I meant to say:
@POST
@PUT
@Path("/push/")
@ConsumeMime("application/x-www-form-urlencoded")
Response updateApplicationConfiguration(MultivaluedMap<String,String>
params);
However this results in:
javax.ws.rs.core.MultivaluedMap does not have a no-arg default
constructor.
this problem is related to the following location:
at javax.ws.rs.core.MultivaluedMap
at private javax.ws.rs.core.MultivaluedMap
com.db.websso.rest.server.jaxws_asm.UpdateApplicationConfiguration.arg0
at
com.db.websso.rest.server.jaxws_asm.UpdateApplicationConfiguration
Thoughts?
John Baker
--
Web SSO
IT Infrastructure
Deutsche Bank London
URL: http://websso.cto.gt.intranet.db.com
John-M Baker <[EMAIL PROTECTED]>
08/05/2008 08:53
Please respond to
[email protected]
To
[email protected]
cc
[email protected]
Subject
Re: HTTP multipart/form-data and REST
Sergey,
I've been looking at the formEncodingReaderProvider that was included
in
CXF2.1. Perhaps if I change the use case a little I can understand how
a
message provider exists within CXF.
Given this example:
@POST
@PUT
@Path("/push/")
@ConsumeMime("application/x-www-form-urlencoded")
public Response addX(Map<String, String> params);
Does this automatically invoke the message producer?
If I were to submit some XML with the parameter 'xml', is there a way
to
convert this into the object as would have happened if I'd done this:
@POST
@Path("/push/")
public Response addX(MyBean bean);
I can not see the point of a form encoding reader if the output is not
a
bean?
John Baker
--
Web SSO
IT Infrastructure
Deutsche Bank London
URL: http://websso.cto.gt.intranet.db.com
"Sergey Beryozkin" <[EMAIL PROTECTED]>
07/05/2008 17:09
Please respond to
[email protected]
To
<[email protected]>
cc
Subject
Re: HTTP multipart/form-data and REST
In fact, you might get it working by having a method with the
InputStream
input parameter (or may be even byte[]) and
ConsumeMime("multipart/form-data") and then process the
multipart/form-data directly in the method.
Cheers, Sergey
----- Original Message -----
From: "Sergey Beryozkin" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, May 07, 2008 4:49 PM
Subject: Re: HTTP multipart/form-data and REST
Hi
JAX-RS mandates the support for DataSource and I reckon this would be
the
way to get the multipart/form-data
in. CXF JAX-RS does not support this type yet.
Possibly another viable alternative is to have a custom
MessageBodyReader
which will have a ConsumeMime("multipart/form-data") annontation and
then
in its readFrom() method it will transform the multipart/form-data
formatted input body into an appropriate type, as required by the
method
parameter...
Cheers, Sergey
Hello,
Using the CXFServlet and REST, wget can be used to post a file to a
URL
defined as a post operation:
wget --post-file file.xml url
And wget makes the following HTTP submission:
$ nc -p 1234 -l
POST /blah/push HTTP/1.0
User-Agent: Wget/1.10.2
Accept: */*
Host: localhost:1234
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 599
<?xml version="1.0" encoding="UTF-8"?>
<myxml> ...
Is it possible to replicate this with a browser file submission? Or
rather, is it possible for a POST operation to be defined so the data
is
taken from an HTTP parameter name? The browser submits a file as
multipart/form-data but this does not appear to work when submitting
to
a
URL that would otherwise handle a wget file post.
Thanks,
John Baker
--
Web SSO
IT Infrastructure
Deutsche Bank London
URL: http://websso.cto.gt.intranet.db.com
---
This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this e-mail in
error)
please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in
this
e-mail is strictly forbidden.
Please refer to http://www.db.com/en/content/eu_disclosures.htm for
additional EU corporate and regulatory disclosures.
----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
Ireland
----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
Ireland
---
This e-mail may contain confidential and/or privileged information. If
you
are not the intended recipient (or have received this e-mail in error)
please notify the sender immediately and delete this e-mail. Any
unauthorized copying, disclosure or distribution of the material in
this
e-mail is strictly forbidden.
Please refer to http://www.db.com/en/content/eu_disclosures.htm for
additional EU corporate and regulatory disclosures.
---
This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this
e-mail in error) please notify the sender immediately and delete this
e-mail. Any unauthorized copying, disclosure or distribution
of the material in this e-mail is strictly forbidden.
Please refer to http://www.db.com/en/content/eu_disclosures.htm for
additional EU corporate and regulatory disclosures.
----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
Ireland
---
This e-mail may contain confidential and/or privileged information. If
you are not the intended recipient (or have received this
e-mail in error) please notify the sender immediately and delete this
e-mail. Any unauthorized copying, disclosure or distribution
of the material in this e-mail is strictly forbidden.
Please refer to http://www.db.com/en/content/eu_disclosures.htm for
additional EU corporate and regulatory disclosures.
----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
---
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this
e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution
of the material in this e-mail is strictly forbidden.
Please refer to http://www.db.com/en/content/eu_disclosures.htm for additional EU corporate and regulatory disclosures.
----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland