I know what happens with Java :)
What I expected is Jersey check the value before doing the conversion and then setting the value to null. Tomorrow i will think the best approach to solve this.
Thanks for your help,
Jordi
Date: Tue, 22 Sep 2009 18:07:00 -0700
From: Craig.McClanahan_at_Sun.COM
To: users_at_jersey.dev.java.net
Subject: Re: [Jersey] 400 Bad Request (bug?)
Jordi Domingo wrote:
Hi
Craig,
I just expected a null value in the Long field when the field is
empty. 0 is not the same as null for me.
Thanks for your reply,
Ah ... it's not a null problem because you are actually including the
field in your query parameters. The problem is that you are trying to
convert a zero length string to a Long, and that will fail. To test
this, try the following program:
public class Foo {
public static void main(String args[]) {
System.out.println("Attempting to convert zero length
string to Long");
Long value = new Long("");
System.out.println(" Value was " + value.toString());
}
}
and you'll find that it returns an exception:
Exception in thread "main" java.lang.NumberFormatException: For
input string: ""
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:431)
at java.lang.Long.<init>(Long.java:678)
at Foo.main(Foo.java:5)
which means you are going to need to do one of two things:
* Convince your client not to send this value (if it is a browser,
maybe run some Javascript
to set the input field to disabled so it will not be included in the
form submit).
* Use a String for the method parameter, and only attempt the
conversion if the
string is both not-null and not-zero-length.
If you use the first technique, you're still going to get conversion
errors if there are invalid characters in the input value coming from
the browser, so I stand by my suggestion to accept string parameters
and validate them yourself if you want to manage what kind of error
gets returned to the client.
Craig
Jordi
Date: Tue, 22 Sep 2009 16:29:31 -0700
From: Craig.McClanahan_at_Sun.COM
To: users_at_jersey.dev.java.net
Subject: Re: [Jersey] 400 Bad Request (bug?)
Jordi Domingo wrote:
Thanks
for answering Greg.
Its true what you say, java speaking but I disagree. I think
this is a bug. Having a parameter with no value must be translated to a
null. I've been working many years with java servers and i've never
seen something like this.
I cant give a 0 to a null value, its not valid for me. Anyway
its easy to overcome this problem, but i preferred not doing that.
If you test a form in a browser, you'll see that all param
names
are encoded, with or without value.
Thanks again for your interest Greg,
If some of your numeric values are optional, you can use the
@DefaultValue("0") annotation to tell JAX-RS to assume if no value was
specified by the user:
@FormParam("standardProvidersCodesId") @DefaultValue("0") Long
standardProviderCodesId
However, your overall approach is still subject to a huge problem ...
if the user types "abc" instead of "123" into a field that you have
mapped to an Integer or a Long (or whatever), you are going to get
conversion exceptions. The only way to reliably avoid that is to
accept the form parameter values as strings and convert them yourself
(sending back a 400 response if any of the conversions fail).
Craig
Jordi
From: ggiacovelli_at_ea.com
To: users_at_jersey.dev.java.net
Date: Tue, 22 Sep 2009 13:28:36 -0700
Subject: RE: [Jersey] 400 Bad Request (bug?)
Yes,
but that’s the point.
Since
your request payload was in the form
identifier=identifier&usersId=1&statusId=1&weaknessesId=4&name=name&description=description&visibility=I&standardProvidersCodesId=&severity=2&difficulty=2&risk=1
the
string value “” (empty string) will be passed to the constructor or
static
function of Long. This is an invalid value for a long and will probably
throw a
runtime exception.
Something
like the following would be triggered for it.
Exception
in thread "main"
java.lang.NumberFormatException: For input string: ""
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:424)
at java.lang.Long.valueOf(Long.java:518)
So
again I still don’t think this is a bug, more so that you are
sending the request with an empty string rather than a null.
You
might be able to try using a Long instance still in the
parameter list of the method and just not specifying the
standardProviderCodesId at all on the form payload. And then just
making sure
to specify a default value, @DefaultValue(0)(I assume you are trying to
get a 0
value if none specified). Not sure if that will work for what you are
trying to
achieve.
Hope
it helps.
-Greg
From: Jordi
Domingo
[mailto:noseya_at_hotmail.com]
Sent: Tuesday, September 22, 2009 10:48 AM
To: users_at_jersey.dev.java.net
Subject: RE: [Jersey] 400 Bad Request (bug?)
Thats
exactly what you said but.. Long has a constructor that accepts a
single String
argument
http://java.sun.com/javase/6/docs/api/java/lang/Long.html#Long(java.lang.String)
but also has a static valueOf so it should work fine.
Thanks,
Jordi
From:
ggiacovelli_at_ea.com
To: users_at_jersey.dev.java.net
Date: Tue, 22 Sep 2009 10:17:25 -0700
Subject: RE: [Jersey] 400 Bad Request (bug?)
I
think this is just the way the spec is written.
1. Primitive
types 19
2. Types
that have a constructor that accepts a
single String argument 20
3. Types
that have a static method named valueOf with a
single String argument 21
4. List<T>, Set<T>, or SortedSet<T>, where T satisfies 2
or 3 above.
FormParam
is said to be similar to the constructs which bind the
others (QueryParam,PathParam, etc).
The
other examples you mention use String.ValueOf(“”) which is valid as “”;
@FormParam("standardProvidersCodesId")
Long standardProvidersCodesId
By
default this should do Long.valueOf(“”). This does not seem to be
valid, and
results in the 400 I presume.
This
does not seem like a bug.
-Greg
From: Jordi
Domingo
[mailto:noseya_at_hotmail.com]
Sent: Tuesday, September 22, 2009 8:09 AM
To: users_at_jersey.dev.java.net
Subject: RE: [Jersey] 400 Bad Request (bug?)
Hi
again.
Im
quite sure this is a bug. This happens when the param is a number, but
never
when it is a String.
Let's
see what Jersey people say :)
Thanks
Jordi
From:
noseya_at_hotmail.com
To: users_at_jersey.dev.java.net
Date: Tue, 22 Sep 2009 16:30:18 +0200
Subject: RE: [Jersey] 400 Bad Request (bug?)
Thanks for replying Herak.
The
class is annotated:
@Path("/projects/{projectId:
[0-9]{1,8}}/vulnerabilities")
public
class VulnerabilitiesResource{
..
@POST
@Produces({"application/json"})
public
Response post(@Context UriInfo uriInfo, @PathParam("projectId") int
projectId, @FormParam("identifier") String identifier,
@FormParam("usersId")
Long usersId, @FormParam("statusId") Integer statusId,
@FormParam("weaknessesId") Integer weaknessesId,
@FormParam("name")
String name, @FormParam("description") String description,
@FormParam("consequences") String consequences,
@FormParam("mitigations")
String mitigations, @FormParam("cvssBase") java.math.BigDecimal
cvssBase,
@FormParam("cvssTemporal")
java.math.BigDecimal cvssTemporal, @FormParam("cvssEnvironment")
java.math.BigDecimal cvssEnvironment,
@FormParam("standardProvidersCodesId")
Long standardProvidersCodesId, @FormParam("visibility") String
visibility,
@FormParam("severity")
Integer severity, @FormParam("difficulty") Integer difficulty,
@FormParam("probability") Integer probability,
@FormParam("risk")
Integer risk) throws SystemException{
...
}
The
same way like assets, assets works fine, this one no. Anything else to
check?
Thanks,
Jordi
From:
HSen_at_vertrax.com
To: users_at_jersey.dev.java.net
Date: Tue, 22 Sep 2009 10:12:54 -0400
Subject: RE: [Jersey] 400 Bad Request (bug?)
Can
you double check the path?
If
‘/project’ is the root resource then the ‘/vulnerabilities/new’
is the sub resource, therefore the method (‘post’) will need
@Path(“{projectId}/vulnerabilities/new”) annotation
Herak
From: Jordi
Domingo
[mailto:noseya_at_hotmail.com]
Sent: Tuesday, September 22, 2009 8:57 AM
To: users_at_jersey.dev.java.net
Subject: RE: [Jersey] 400 Bad Request (bug?)
I
cant understand why its happening this.. in other places i make
requests like
the one that fails and work fine
POST
/projects/1/assets HTTP/1.1
Host:
localhost
User-Agent:
Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.1.3)
Gecko/20090824
Firefox/3.5.3 (.NET CLR 3.5.30729)
Accept:
application/json, text/javascript, */*
Accept-Language:
ca,en-us;q=0.7,it;q=0.3
Accept-Encoding:
gzip,deflate
Accept-Charset:
ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive:
300
Proxy-Connection:
keep-alive
Content-Type:
application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With:
XMLHttpRequest
Referer:
http://localhost/projects/1/assets/new
Cookie:
JSESSIONID=1bb45c8173eba1145cf57e0ed37e
Pragma:
no-cache
Cache-Control:
no-cache
Content-Length:
31
environment=&url=&ip=&hostname=
Response
is 200 OK
My
Java method is declared this way (but the request didnt reach my code):
@POST
@Produces({"application/json"})
public
Response post(@Context UriInfo uriInfo, @PathParam("projectId") int
projectId, @FormParam("identifier") String identifier,
@FormParam("usersId")
Long usersId, @FormParam("statusId") Integer statusId,
@FormParam("weaknessesId") Integer weaknessesId,
@FormParam("name")
String name, @FormParam("description") String description,
@FormParam("consequences") String consequences,
@FormParam("mitigations")
String mitigations, @FormParam("cvssBase") java.math.BigDecimal
cvssBase,
@FormParam("cvssTemporal")
java.math.BigDecimal cvssTemporal, @FormParam("cvssEnvironment")
java.math.BigDecimal cvssEnvironment,
@FormParam("standardProvidersCodesId")
Long standardProvidersCodesId, @FormParam("visibility") String
visibility,
@FormParam("severity")
Integer severity, @FormParam("difficulty") Integer difficulty,
@FormParam("probability") Integer probability,
@FormParam("risk")
Integer risk) throws SystemException{
....
}
Any
help is appreciated.
From:
noseya_at_hotmail.com
To: users_at_jersey.dev.java.net
Date: Tue, 22 Sep 2009 13:50:08 +0200
Subject: [Jersey] 400 Bad Request (bug?)
Hi all :)
I'm
getting this error, and i think that is a bug. This is my request:
POST
/projects/1/vulnerabilities HTTP/1.1
Host:
localhost
User-Agent:
Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.1.3)
Gecko/20090824
Firefox/3.5.3 (.NET CLR 3.5.30729)
Accept:
application/json, text/javascript, */*
Accept-Language:
ca,en-us;q=0.7,it;q=0.3
Accept-Encoding:
gzip,deflate
Accept-Charset:
ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive:
300
Proxy-Connection:
keep-alive
Content-Type:
application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With:
XMLHttpRequest
Referer:
http://localhost/projects/1/vulnerabilities/new
Cookie:
JSESSIONID=16f95e59d3b1b0e954310c190c60
Content-Length:
161
identifier=identifier&usersId=1&statusId=1&weaknessesId=4&name=name&description=description&visibility=I&standardProvidersCodesId=&severity=2&difficulty=2&risk=1
THe
response is 400 Bad Request.
What
you see in bold is causing the bad request. Take it out and works fine.
Thanks,
Jordi
Charlas
más divertidas con el nuevo Windows Live
Messenger
Comparte
tus fotos con tus amigos. Más fácil con Windows
Live
Diferentes
formas de estar en contacto con amigos y familiares. Descúbrelas. Descúbrelas.
Nuevo
Windows Live, un mundo lleno de posibilidades Descúbrelo.
Diferentes
formas de estar en contacto con amigos y familiares. Descúbrelas. Descúbrelas.
Diferentes formas de estar en contacto con amigos y familiares.
Descúbrelas. Descúbrelas.
Nuevo Windows Live, un mundo lleno de posibilidades Descúbrelo.
_________________________________________________________________
Chatea sin límites en Messenger con la tarifa plana de Orange
http://serviciosmoviles.es.msn.com/messenger/orange.aspx
--_a69738de-cf0d-427b-b4e3-a447e3775fbf_
Content-Type: text/html; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
I know what happens with Java :)<div><br></div><div>What I expected is Jersey check the value before doing the conversion and then setting the value to null. Tomorrow i will think the best approach to solve this.</div><div><br></div><div>Thanks for your help,</div><div><br></div><div>Jordi<br><br><hr id="stopSpelling">Date: Tue, 22 Sep 2009 18:07:00 -0700<br>From: Craig.McClanahan_at_Sun.COM<br>To: users_at_jersey.dev.java.net<br>Subject: Re: [Jersey] 400 Bad Request (bug?)<br><br>
<title></title>
Jordi Domingo wrote:
<blockquote cite="mid:SNT121-W7D0D8AB77237360A02197C0DB0_at_phx.gbl">
<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Verdana;}
</style>Hi
Craig,
<div><br>
</div>
<div>I just expected a null value in the Long field when the field is
empty. 0 is not the same as null for me.</div>
<div><br>
</div>
<div>Thanks for your reply,</div>
<div><br>
</div>
</blockquote>
Ah ... it's not a null problem because you are actually including the
field in your query parameters. The problem is that you are trying to
convert a zero length string to a Long, and that will fail. To test
this, try the following program:<br>
<br>
public class Foo {<br>
<br>
public static void main(String args[]) {<br>
System.out.println("Attempting to convert zero length
string to Long");<br>
Long value = new Long("");<br>
System.out.println(" Value was " + value.toString());<br>
}<br>
<br>
}<br>
<br>
and you'll find that it returns an exception:<br>
<br>
Exception in thread "main" java.lang.NumberFormatException: For
input string: ""<br>
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)<br>
at java.lang.Long.parseLong(Long.java:431)<br>
at java.lang.Long.<init>(Long.java:678)<br>
at Foo.main(Foo.java:5)<br>
<br>
which means you are going to need to do one of two things:<br>
<br>
* Convince your client not to send this value (if it is a browser,
maybe run some Javascript<br>
to set the input field to disabled so it will not be included in the
form submit).<br>
<br>
* Use a String for the method parameter, and only attempt the
conversion if the<br>
string is both not-null and not-zero-length.<br>
<br>
If you use the first technique, you're still going to get conversion
errors if there are invalid characters in the input value coming from
the browser, so I stand by my suggestion to accept string parameters
and validate them yourself if you want to manage what kind of error
gets returned to the client.<br>
<br>
Craig<br>
<br>
<br>
<blockquote cite="mid:SNT121-W7D0D8AB77237360A02197C0DB0_at_phx.gbl">
<div>Jordi<br>
<br>
<hr id="ecxstopSpelling">Date: Tue, 22 Sep 2009 16:29:31 -0700<br>
From: <a class="ecxmoz-txt-link-abbreviated" href="mailto:Craig.McClanahan_at_Sun.COM">Craig.McClanahan_at_Sun.COM</a><br>
To: <a class="ecxmoz-txt-link-abbreviated" href="mailto:users_at_jersey.dev.java.net">users_at_jersey.dev.java.net</a><br>
Subject: Re: [Jersey] 400 Bad Request (bug?)<br>
<br>
Jordi Domingo wrote:
<blockquote cite="mid:SNT121-W411D6C6D8D1DA02A4F8623C0DC0_at_phx.gbl">
<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Verdana;}
</style>Thanks
for answering Greg.
<div><br>
</div>
<div>Its true what you say, java speaking but I disagree. I think
this is a bug. Having a parameter with no value must be translated to a
null. I've been working many years with java servers and i've never
seen something like this.</div>
<div><br>
</div>
<div>I cant give a 0 to a null value, its not valid for me. Anyway
its easy to overcome this problem, but i preferred not doing that.</div>
<div><br>
</div>
<div>If you test a form in a browser, you'll see that all param
names
are encoded, with or without value.</div>
<div><br>
</div>
<div>Thanks again for your interest Greg,</div>
<div><br>
</div>
</blockquote>
If some of your numeric values are optional, you can use the
@DefaultValue("0") annotation to tell JAX-RS to assume if no value was
specified by the user:<br>
<br>
@FormParam("standardProvidersCodesId") @DefaultValue("0") Long
standardProviderCodesId<br>
<br>
However, your overall approach is still subject to a huge problem ...
if the user types "abc" instead of "123" into a field that you have
mapped to an Integer or a Long (or whatever), you are going to get
conversion exceptions. The only way to reliably avoid that is to
accept the form parameter values as strings and convert them yourself
(sending back a 400 response if any of the conversions fail).<br>
<br>
Craig<br>
<blockquote cite="mid:SNT121-W411D6C6D8D1DA02A4F8623C0DC0_at_phx.gbl">
<div>Jordi<br>
<br>
<hr id="ecxecxstopSpelling">From: <a class="ecxecxmoz-txt-link-abbreviated" href="mailto:ggiacovelli_at_ea.com">ggiacovelli_at_ea.com</a><br>
To: <a class="ecxecxmoz-txt-link-abbreviated" href="mailto:users_at_jersey.dev.java.net">users_at_jersey.dev.java.net</a><br>
Date: Tue, 22 Sep 2009 13:28:36 -0700<br>
Subject: RE: [Jersey] 400 Bad Request (bug?)<br>
<br>
<style>
.ExternalClass .ecxshape
{;}
</style>
<style>
.ExternalClass p.ecxMsoNormal, .ExternalClass li.ecxMsoNormal, .ExternalClass div.ecxMsoNormal
{margin-bottom:.0001pt;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass a:link, .ExternalClass span.ecxMsoHyperlink
{color:blue;text-decoration:underline;}
.ExternalClass a:visited, .ExternalClass span.ecxMsoHyperlinkFollowed
{color:purple;text-decoration:underline;}
.ExternalClass p
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass p.ecxecxmsonormal, .ExternalClass li.ecxecxmsonormal, .ExternalClass div.ecxecxmsonormal
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass p.ecxecxecxmsonormal, .ExternalClass li.ecxecxecxmsonormal, .ExternalClass div.ecxecxecxmsonormal
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass p.ecxecxecxmsochpdefault, .ExternalClass li.ecxecxecxmsochpdefault, .ExternalClass div.ecxecxecxmsochpdefault
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass p.ecxecxecxmsonormal1, .ExternalClass li.ecxecxecxmsonormal1, .ExternalClass div.ecxecxecxmsonormal1
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass p.ecxecxecxmsochpdefault1, .ExternalClass li.ecxecxecxmsochpdefault1, .ExternalClass div.ecxecxecxmsochpdefault1
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass p.ecxecxmsochpdefault, .ExternalClass li.ecxecxmsochpdefault, .ExternalClass div.ecxecxmsochpdefault
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass span.ecxecxmsohyperlink
{;}
.ExternalClass span.ecxecxmsohyperlinkfollowed
{;}
.ExternalClass span.ecxecxecxmsohyperlink1
{;}
.ExternalClass span.ecxecxecxmsohyperlinkfollowed1
{;}
.ExternalClass span.ecxecxecxemailstyle191
{;}
.ExternalClass span.ecxecxemailstyle30
{;}
.ExternalClass p.ecxecxmsonormal1, .ExternalClass li.ecxecxmsonormal1, .ExternalClass div.ecxecxmsonormal1
{margin-right:0in;margin-bottom:0in;margin-left:0in;margin-bottom:.0001pt;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass span.ecxecxmsohyperlink1
{color:blue;text-decoration:underline;}
.ExternalClass span.ecxecxmsohyperlinkfollowed1
{color:purple;text-decoration:underline;}
.ExternalClass p.ecxecxecxmsonormal2, .ExternalClass li.ecxecxecxmsonormal2, .ExternalClass div.ecxecxecxmsonormal2
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass p.ecxecxecxmsochpdefault2, .ExternalClass li.ecxecxecxmsochpdefault2, .ExternalClass div.ecxecxecxmsochpdefault2
{margin-right:0in;margin-left:0in;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass p.ecxecxecxmsonormal11, .ExternalClass li.ecxecxecxmsonormal11, .ExternalClass div.ecxecxecxmsonormal11
{margin-right:0in;margin-bottom:0in;margin-left:0in;margin-bottom:.0001pt;font-size:12.0pt;font-family:'Times New Roman','serif';}
.ExternalClass span.ecxecxecxmsohyperlink11
{color:blue;text-decoration:underline;}
.ExternalClass span.ecxecxecxmsohyperlinkfollowed11
{color:purple;text-decoration:underline;}
.ExternalClass span.ecxecxecxemailstyle1911
{font-family:'Calibri','sans-serif';color:#1F497D;}
.ExternalClass p.ecxecxecxmsochpdefault11, .ExternalClass li.ecxecxecxmsochpdefault11, .ExternalClass div.ecxecxecxmsochpdefault11
{margin-right:0in;margin-left:0in;font-size:10.0pt;font-family:'Times New Roman','serif';}
.ExternalClass span.ecxecxemailstyle301
{font-family:'Calibri','sans-serif';color:#1F497D;}
.ExternalClass p.ecxecxmsochpdefault1, .ExternalClass li.ecxecxmsochpdefault1, .ExternalClass div.ecxecxmsochpdefault1
{margin-right:0in;margin-left:0in;font-size:10.0pt;font-family:'Times New Roman','serif';}
.ExternalClass span.ecxecxecxapple-tab-span
{;}
.ExternalClass span.ecxecxecxecxapple-tab-span
{;}
.ExternalClass span.ecxEmailStyle44
{font-family:'Calibri','sans-serif';color:#1F497D;}
.ExternalClass .ecxMsoChpDefault
{font-size:10.0pt;}
@page Section1
{size:8.5in 11.0in;}
.ExternalClass div.ecxSection1
{page:Section1;}
</style>
<div class="ecxecxecxSection1">
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">Yes,
but that’s the point.</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">Since
your request payload was in the form</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">identifier=identifier&usersId=1&statusId=1&weaknessesId=4&name=name&description=description&visibility=I&<b>standardProvidersCodesId=</b>&severity=2&difficulty=2&risk=1</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">the
string value “” (empty string) will be passed to the constructor or
static
function of Long. This is an invalid value for a long and will probably
throw a
runtime exception.</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">Something
like the following would be triggered for it.</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">Exception
in thread "main"
java.lang.NumberFormatException: For input string: ""</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">
at java.lang.Long.parseLong(Long.java:424)</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">
at java.lang.Long.valueOf(Long.java:518)</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">So
again I still don’t think this is a bug, more so that you are
sending the request with an empty string rather than a null.</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">You
might be able to try using a Long instance still in the
parameter list of the method and just not specifying the
standardProviderCodesId at all on the form payload. And then just
making sure
to specify a default value, @DefaultValue(0)(I assume you are trying to
get a 0
value if none specified). Not sure if that will work for what you are
trying to
achieve.</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">Hope
it helps.</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">-Greg</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span></p>
<div>
<div style="border-style:solid none none;border-color:rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color;border-width:1pt medium medium;padding:3pt 0in 0in">
<p class="ecxecxecxMsoNormal"><b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'">From:</span></b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'"> Jordi
Domingo
[<a class="ecxecxmoz-txt-link-freetext" href="mailto:noseya_at_hotmail.com">mailto:noseya_at_hotmail.com</a>] <br>
<b>Sent:</b> Tuesday, September 22, 2009 10:48 AM<br>
<b>To:</b> <a class="ecxecxmoz-txt-link-abbreviated" href="mailto:users_at_jersey.dev.java.net">users_at_jersey.dev.java.net</a><br>
<b>Subject:</b> RE: [Jersey] 400 Bad Request (bug?)</span></p>
</div>
</div>
<p class="ecxecxecxMsoNormal"> </p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Thats
exactly what you said but.. Long has a constructor that accepts a
single String
argument <a class="ecxecxmoz-txt-link-freetext" href="
http://java.sun.com/javase/6/docs/api/java/lang/Long.html#Long(java.lang.String)">
http://java.sun.com/javase/6/docs/api/java/lang/Long.html#Long(java.lang.String)</a>
but also has a static valueOf so it should work fine.</span></p>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Thanks, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Jordi</span></p>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<div class="ecxecxecxMsoNormal" style="text-align:center" align="center"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
<hr id="ecxecxecxstopSpelling" align="center" size="2" width="100%"></span></div>
<p class="ecxecxecxMsoNormal" style="margin-bottom:12pt"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">From:
<a class="ecxecxmoz-txt-link-abbreviated" href="mailto:ggiacovelli_at_ea.com">ggiacovelli_at_ea.com</a><br>
To: <a class="ecxecxmoz-txt-link-abbreviated" href="mailto:users_at_jersey.dev.java.net">users_at_jersey.dev.java.net</a><br>
Date: Tue, 22 Sep 2009 10:17:25 -0700<br>
Subject: RE: [Jersey] 400 Bad Request (bug?)</span></p>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">I
think this is just the way the spec is written.</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal" style=""><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">1. Primitive
types </span><span style="font-size:6pt;font-family:NimbusSanL-Regu">19</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal" style=""><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">2. Types
that have a constructor that accepts a
single </span><span style="font-size:10pt;font-family:NimbusMonL-Regu">String </span><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">argument </span><span style="font-size:6pt;font-family:NimbusSanL-Regu">20</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal" style=""><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">3. Types
that have a static method named </span><span style="font-size:10pt;font-family:NimbusMonL-Regu">valueOf </span><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">with a
single </span><span style="font-size:10pt;font-family:NimbusMonL-Regu">String </span><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">argument </span><span style="font-size:6pt;font-family:NimbusSanL-Regu">21</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">4. </span><span style="font-size:10pt;font-family:NimbusMonL-Regu">List<</span><span style="font-size:10pt;font-family:NimbusMonL-ReguObli">T</span><span style="font-size:10pt;font-family:NimbusMonL-Regu">></span><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">, </span><span style="font-size:10pt;font-family:NimbusMonL-Regu">Set<</span><span style="font-size:10pt;font-family:NimbusMonL-ReguObli">T</span><span style="font-size:10pt;font-family:NimbusMonL-Regu">></span><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">, or </span><span style="font-size:10pt;font-family:NimbusMonL-Regu">SortedSet<</span><span style="font-size:10pt;font-family:NimbusMonL-ReguObli">T</span><span style="font-size:10pt;font-family:NimbusMonL-Regu">></span><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">, where </span><span style="font-size:10pt;font-family:NimbusMonL-ReguObli">T </span><span style="font-size:11pt;font-family:NimbusRomNo9L-Regu">satisfies 2
or 3 above.</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">FormParam
is said to be similar to the constructs which bind the
others (QueryParam,PathParam, etc).</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">The
other examples you mention use String.ValueOf(“”) which is valid as “”;</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("standardProvidersCodesId")
Long standardProvidersCodesId </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">By
default this should do Long.valueOf(“”). This does not seem to be
valid, and
results in the 400 I presume.</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">This
does not seem like a bug.</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">-Greg</span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<div>
<div style="border-style:solid none none;border-color:rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color;border-width:1pt medium medium;padding:3pt 0in 0in">
<p class="ecxecxecxMsoNormal"><b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'">From:</span></b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'"> Jordi
Domingo
[<a class="ecxecxmoz-txt-link-freetext" href="mailto:noseya_at_hotmail.com">mailto:noseya_at_hotmail.com</a>] <br>
<b>Sent:</b> Tuesday, September 22, 2009 8:09 AM<br>
<b>To:</b> <a class="ecxecxmoz-txt-link-abbreviated" href="mailto:users_at_jersey.dev.java.net">users_at_jersey.dev.java.net</a><br>
<b>Subject:</b> RE: [Jersey] 400 Bad Request (bug?)</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
</div>
</div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Hi
again.</span></p>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Im
quite sure this is a bug. This happens when the param is a number, but
never
when it is a String.</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal" style="margin-bottom:12pt"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Let's
see what Jersey people say :)</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Thanks</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Jordi</span></p>
<div class="ecxecxecxMsoNormal" style="text-align:center" align="center"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
<hr align="center" size="2" width="100%"></span></div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">From:
<a class="ecxecxmoz-txt-link-abbreviated" href="mailto:noseya_at_hotmail.com">noseya_at_hotmail.com</a><br>
To: <a class="ecxecxmoz-txt-link-abbreviated" href="mailto:users_at_jersey.dev.java.net">users_at_jersey.dev.java.net</a><br>
Date: Tue, 22 Sep 2009 16:30:18 +0200<br>
Subject: RE: [Jersey] 400 Bad Request (bug?)<br>
<br>
Thanks for replying Herak.</span></p>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">The
class is annotated:</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@Path("/projects/{projectId:
[0-9]{1,8}}/vulnerabilities")</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">public
class VulnerabilitiesResource{</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">..</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@POST</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@Produces({"application/json"})</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">public
Response post(@Context UriInfo uriInfo, @PathParam("projectId") int
projectId, @FormParam("identifier") String identifier, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("usersId")
Long usersId, @FormParam("statusId") Integer statusId,
@FormParam("weaknessesId") Integer weaknessesId, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("name")
String name, @FormParam("description") String description,
@FormParam("consequences") String consequences, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("mitigations")
String mitigations, @FormParam("cvssBase") java.math.BigDecimal
cvssBase, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("cvssTemporal")
java.math.BigDecimal cvssTemporal, @FormParam("cvssEnvironment")
java.math.BigDecimal cvssEnvironment, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("standardProvidersCodesId")
Long standardProvidersCodesId, @FormParam("visibility") String
visibility, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("severity")
Integer severity, @FormParam("difficulty") Integer difficulty,
@FormParam("probability") Integer probability, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("risk")
Integer risk) throws SystemException{</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">...</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">}</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">The
same way like assets, assets works fine, this one no. Anything else to
check?</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Thanks,</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Jordi</span></p>
</div>
</div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<div class="ecxecxecxMsoNormal" style="text-align:center" align="center"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
<hr align="center" size="2" width="100%"></span></div>
<p class="ecxecxecxMsoNormal" style="margin-bottom:12pt"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">From:
<a class="ecxecxmoz-txt-link-abbreviated" href="mailto:HSen_at_vertrax.com">HSen_at_vertrax.com</a><br>
To: <a class="ecxecxmoz-txt-link-abbreviated" href="mailto:users_at_jersey.dev.java.net">users_at_jersey.dev.java.net</a><br>
Date: Tue, 22 Sep 2009 10:12:54 -0400<br>
Subject: RE: [Jersey] 400 Bad Request (bug?)</span></p>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">Can
you double check the path?</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">If
‘/project’ is the root resource then the ‘/vulnerabilities/new’
is the sub resource, therefore the method (‘post’) will need
@Path(“{projectId}/vulnerabilities/new”) annotation</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)">Herak</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:rgb(31, 73, 125)"> </span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
<div>
<div style="border-style:solid none none;border-color:rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color;border-width:1pt medium medium;padding:3pt 0in 0in">
<p class="ecxecxecxMsoNormal"><b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'">From:</span></b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'"> Jordi
Domingo
[<a class="ecxecxmoz-txt-link-freetext" href="mailto:noseya_at_hotmail.com">mailto:noseya_at_hotmail.com</a>] <br>
<b>Sent:</b> Tuesday, September 22, 2009 8:57 AM<br>
<b>To:</b> <a class="ecxecxmoz-txt-link-abbreviated" href="mailto:users_at_jersey.dev.java.net">users_at_jersey.dev.java.net</a><br>
<b>Subject:</b> RE: [Jersey] 400 Bad Request (bug?)</span><span style="font-size:10pt;font-family:'Verdana','sans-serif'"></span></p>
</div>
</div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">I
cant understand why its happening this.. in other places i make
requests like
the one that fails and work fine</span></p>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">POST
/projects/1/assets HTTP/1.1</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Host:
localhost</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">User-Agent:
Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.1.3)
Gecko/20090824
Firefox/3.5.3 (.NET CLR 3.5.30729)</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Accept:
application/json, text/javascript, */*</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Accept-Language:
ca,en-us;q=0.7,it;q=0.3</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Accept-Encoding:
gzip,deflate</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Accept-Charset:
ISO-8859-1,utf-8;q=0.7,*;q=0.7</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Keep-Alive:
300</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Proxy-Connection:
keep-alive</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Content-Type:
application/x-www-form-urlencoded; charset=UTF-8</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">X-Requested-With:
XMLHttpRequest</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Referer:
<a class="ecxecxmoz-txt-link-freetext" href="
http://localhost/projects/1/assets/new">
http://localhost/projects/1/assets/new</a></span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Cookie:
JSESSIONID=1bb45c8173eba1145cf57e0ed37e</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Pragma:
no-cache</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Cache-Control:
no-cache</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Content-Length:
31</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">environment=&url=&ip=&hostname=</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Response
is 200 OK</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">My
Java method is declared this way (but the request didnt reach my code):</span></p>
</div>
<div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@POST</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@Produces({"application/json"})</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">public
Response post(@Context UriInfo uriInfo, @PathParam("projectId") int
projectId, @FormParam("identifier") String identifier, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("usersId")
Long usersId, @FormParam("statusId") Integer statusId,
@FormParam("weaknessesId") Integer weaknessesId, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("name")
String name, @FormParam("description") String description,
@FormParam("consequences") String consequences, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("mitigations")
String mitigations, @FormParam("cvssBase") java.math.BigDecimal
cvssBase, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("cvssTemporal")
java.math.BigDecimal cvssTemporal, @FormParam("cvssEnvironment")
java.math.BigDecimal cvssEnvironment, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("standardProvidersCodesId")
Long standardProvidersCodesId, @FormParam("visibility") String
visibility, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("severity")
Integer severity, @FormParam("difficulty") Integer difficulty,
@FormParam("probability") Integer probability, </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span class="ecxecxecxecxecxecxapple-tab-span"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
</span></span><span style="font-size:10pt;font-family:'Verdana','sans-serif'">@FormParam("risk")
Integer risk) throws SystemException{</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">....</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">}</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Any
help is appreciated.</span></p>
</div>
</div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<div class="ecxecxecxMsoNormal" style="text-align:center" align="center"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
<hr align="center" size="2" width="100%"></span></div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">From:
<a class="ecxecxmoz-txt-link-abbreviated" href="mailto:noseya_at_hotmail.com">noseya_at_hotmail.com</a><br>
To: <a class="ecxecxmoz-txt-link-abbreviated" href="mailto:users_at_jersey.dev.java.net">users_at_jersey.dev.java.net</a><br>
Date: Tue, 22 Sep 2009 13:50:08 +0200<br>
Subject: [Jersey] 400 Bad Request (bug?)<br>
<br>
Hi all :)</span></p>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">I'm
getting this error, and i think that is a bug. This is my request:</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">POST
/projects/1/vulnerabilities HTTP/1.1</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Host:
localhost</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">User-Agent:
Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.1.3)
Gecko/20090824
Firefox/3.5.3 (.NET CLR 3.5.30729)</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Accept:
application/json, text/javascript, */*</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Accept-Language:
ca,en-us;q=0.7,it;q=0.3</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Accept-Encoding:
gzip,deflate</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Accept-Charset:
ISO-8859-1,utf-8;q=0.7,*;q=0.7</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Keep-Alive:
300</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Proxy-Connection:
keep-alive</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Content-Type:
application/x-www-form-urlencoded; charset=UTF-8</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">X-Requested-With:
XMLHttpRequest</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Referer:
<a class="ecxecxmoz-txt-link-freetext" href="
http://localhost/projects/1/vulnerabilities/new">
http://localhost/projects/1/vulnerabilities/new</a></span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Cookie:
JSESSIONID=16f95e59d3b1b0e954310c190c60</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Content-Length:
161</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">identifier=identifier&usersId=1&statusId=1&weaknessesId=4&name=name&description=description&visibility=I&<b>standardProvidersCodesId=</b>&severity=2&difficulty=2&risk=1</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">THe
response is 400 Bad Request.</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">What
you see in bold is causing the bad request. Take it out and works fine.</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Thanks,</span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
</div>
<div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Jordi</span></p>
</div>
</div>
</div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<div class="ecxecxecxMsoNormal" style="text-align:center" align="center"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
<hr align="center" size="2" width="100%"></span></div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Charlas
más divertidas con el nuevo <a href="
http://download.live.com">Windows Live
Messenger</a></span></p>
</div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<div class="ecxecxecxMsoNormal" style="text-align:center" align="center"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
<hr align="center" size="2" width="100%"></span></div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Comparte
tus fotos con tus amigos. Más fácil con <a href="
http://download.live.com">Windows
Live</a></span></p>
</div>
</div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<div class="ecxecxecxMsoNormal" style="text-align:center" align="center"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
<hr align="center" size="2" width="100%"></span></div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Diferentes
formas de estar en contacto con amigos y familiares. Descúbrelas. <a href="
http://www.microsoft.com/windows/windowslive/default.aspx">Descúbrelas.</a></span></p>
</div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<div class="ecxecxecxMsoNormal" style="text-align:center" align="center"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
<hr align="center" size="2" width="100%"></span></div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Nuevo
Windows Live, un mundo lleno de posibilidades <a href="
http://www.microsoft.com/windows/windowslive/default.aspx">Descúbrelo.</a></span></p>
</div>
</div>
</div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'"> </span></p>
<div class="ecxecxecxMsoNormal" style="text-align:center" align="center"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">
<hr align="center" size="2" width="100%"></span></div>
<p class="ecxecxecxMsoNormal"><span style="font-size:10pt;font-family:'Verdana','sans-serif'">Diferentes
formas de estar en contacto con amigos y familiares. Descúbrelas. <a href="
http://www.microsoft.com/windows/windowslive/default.aspx">Descúbrelas.</a></span></p>
</div>
</div>
<br>
<hr>Diferentes formas de estar en contacto con amigos y familiares.
Descúbrelas. <a href="
http://www.microsoft.com/windows/windowslive/default.aspx">Descúbrelas.</a></blockquote>
<br>
</div>
<br>
<hr>Nuevo Windows Live, un mundo lleno de posibilidades <a href="
http://www.microsoft.com/windows/windowslive/default.aspx">Descúbrelo.</a></blockquote>
<br></div> <br /><hr />Charlas más divertidas con el nuevo <a href='
http://download.live.com' target='_new'>Windows Live Messenger</a></body>
</html>
--_a69738de-cf0d-427b-b4e3-a447e3775fbf_--