Lucas_Cavalcanti 22 de nov. de 2012
tenta usar o:
validator.onErrorSendBadRequest();
ele já serializa os erros no content-type pedido através do header Accept.
djDufu 22 de nov. de 2012
Fala Lucas,
deu o mesmo problema ele redireciona automaticamente para o recurso/nome do método, já havia tentado esse também e até tentei a combinação de alguns outros.
HTTP Status 404 - / mypetslife / WEB - INF / jsp / tracking / add . jsp
type Status report
message / mypetslife / WEB - INF / jsp / tracking / add . jsp
description The requested resource ( / mypetslife / WEB - INF / jsp / tracking / add . jsp ) is not available .
Apache Tomcat / 7.0.29
djDufu 22 de nov. de 2012
Segue o Méthodo completo.
@Public
@Post
@Path ( "/add" )
@Consumes ( value = { "application/json" , "application/x-www-form-urlencoded" })
public void add ( final Tracking tracking ) {
validator . checking ( new Validations (){{
that ( tracking . getTagId () != null , "erro" , "tagid_null" );
that ( tracking . getUpdated () != null , "erro" , "updated_null" );
that ( tracking . getLat () != null , "erro" , "lat_null" );
that ( tracking . getLon () != null , "erro" , "lon_null" );
}});
//validator.onErrorUse(Results.status()).badRequest(validator.getErrors());
validator . onErrorSendBadRequest ();
DynamoDBMapper mapper = new DynamoDBMapper ( dynamoDB );
// put the item to the table
try {
//TODO - Efetuar a validação de todos os campos obrigatórios
mapper . save ( tracking );
} catch ( AmazonServiceException ase ) {
System . err . println ( "Failed to create item in " + tableName );
result . use ( Results . status ()). badRequest ( "Failed to create item in " + tableName );
}
result . use ( Results . status ()). ok ();
}
Estou testando usando REST client do Firefox, quando eu passo os parametros corretamente recebo o HTTP 200 numa boa.
Lucas_Cavalcanti 22 de nov. de 2012
ta passando o header Accept: application/json ?
djDufu 22 de nov. de 2012
Estou passando como “application/x-www-form-urlencoded” como o request body vazio.
Quando eu envio todos os parametros eu recebo o http ok 200 normalmente, porém se deixo o request body em branco para testar com o validator, o validator funcionanormalmente, porém o sendbadrequest envia para o recurso inexistente.
djDufu 22 de nov. de 2012
na verdade no header só tenho o content-type=application/x-www-form-urlencoded, tenho que colocar alguma outra coisa no header?
Lucas_Cavalcanti 22 de nov. de 2012
se vc quer receber um json vc deveria passar o header:
djDufu 22 de nov. de 2012
Colocando o Accept: application/json
Recebo o seguinte erro:
Grave : Unhandled exception occurred whilst decorating page
br . com . caelum . vraptor . InterceptionException : exception raised , check root cause for details : net . vidageek . mirror . exception . ReflectionProviderException : Could not invoke method badRequest
at br . com . caelum . vraptor . interceptor . ExecuteMethodInterceptor . intercept ( ExecuteMethodInterceptor . java : 96 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . DeserializingInterceptor . intercept ( DeserializingInterceptor . java : 101 )
at br . com . caelum . vraptor . core . LazyInterceptorHandler . execute ( LazyInterceptorHandler . java : 59 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 56 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 56 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . FlashInterceptor . intercept ( FlashInterceptor . java : 83 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . ParametersInstantiatorInterceptor . intercept ( ParametersInstantiatorInterceptor . java : 93 )
at br . com . caelum . vraptor . core . LazyInterceptorHandler . execute ( LazyInterceptorHandler . java : 59 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . InstantiateInterceptor . intercept ( InstantiateInterceptor . java : 48 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . ExceptionHandlerInterceptor . intercept ( ExceptionHandlerInterceptor . java : 71 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . ResourceLookupInterceptor . intercept ( ResourceLookupInterceptor . java : 69 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 56 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . core . EnhancedRequestExecution . execute ( EnhancedRequestExecution . java : 44 )
at br . com . caelum . vraptor . VRaptor $ 1. insideRequest ( VRaptor . java : 91 )
at br . com . caelum . vraptor . ioc . spring . SpringProvider . provideForRequest ( SpringProvider . java : 58 )
at br . com . caelum . vraptor . VRaptor . doFilter ( VRaptor . java : 88 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 243 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 210 )
at com . opensymphony . sitemesh . webapp . SiteMeshFilter . obtainContent ( SiteMeshFilter . java : 129 )
at com . opensymphony . sitemesh . webapp . SiteMeshFilter . doFilter ( SiteMeshFilter . java : 77 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 243 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 210 )
at org . apache . catalina . core . StandardWrapperValve . invoke ( StandardWrapperValve . java : 225 )
at org . apache . catalina . core . StandardContextValve . invoke ( StandardContextValve . java : 123 )
at org . apache . catalina . authenticator . AuthenticatorBase . invoke ( AuthenticatorBase . java : 472 )
at org . apache . catalina . core . StandardHostValve . invoke ( StandardHostValve . java : 168 )
at org . apache . catalina . valves . ErrorReportValve . invoke ( ErrorReportValve . java : 98 )
at org . apache . catalina . valves . AccessLogValve . invoke ( AccessLogValve . java : 927 )
at org . apache . catalina . core . StandardEngineValve . invoke ( StandardEngineValve . java : 118 )
at org . apache . catalina . connector . CoyoteAdapter . service ( CoyoteAdapter . java : 407 )
at org . apache . coyote . http11 . AbstractHttp11Processor . process ( AbstractHttp11Processor . java : 1001 )
at org . apache . coyote . AbstractProtocol $ AbstractConnectionHandler . process ( AbstractProtocol . java : 585 )
at org . apache . tomcat . util . net . JIoEndpoint $ SocketProcessor . run ( JIoEndpoint . java : 310 )
at java . util . concurrent . ThreadPoolExecutor . runWorker ( ThreadPoolExecutor . java : 1110 )
at java . util . concurrent . ThreadPoolExecutor $ Worker . run ( ThreadPoolExecutor . java : 603 )
at java . lang . Thread . run ( Thread . java : 722 )
Caused by : net . vidageek . mirror . exception . ReflectionProviderException : Could not invoke method badRequest
at net . vidageek . mirror . provider . java . PureJavaMethodReflectionProvider . invoke ( PureJavaMethodReflectionProvider . java : 45 )
at net . vidageek . mirror . invoke . MethodHandlerByMethod . withArgs ( MethodHandlerByMethod . java : 54 )
at br . com . caelum . vraptor . view . DefaultValidationViewsFactory $ 1. intercept ( DefaultValidationViewsFactory . java : 73 )
at br . com . caelum . vraptor . proxy . CglibProxifier $ 2. intercept ( CglibProxifier . java : 95 )
at br . com . caelum . vraptor . view . Status $$ EnhancerByCGLIB $$ 2029 cb4d . badRequest ( < generated > )
at br . com . caelum . vraptor . validator . AbstractValidator . onErrorSendBadRequest ( AbstractValidator . java : 61 )
at br . com . mypetslife . controller . TrackingController . add ( TrackingController . java : 56 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 57 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 43 )
at java . lang . reflect . Method . invoke ( Method . java : 601 )
at br . com . caelum . vraptor . interceptor . ExecuteMethodInterceptor . intercept ( ExecuteMethodInterceptor . java : 61 )
... 50 more
Caused by : java . lang . NullPointerException
at br . com . caelum . vraptor . serialization . xstream . XStreamJSONSerialization . getXStream ( XStreamJSONSerialization . java : 93 )
at br . com . caelum . vraptor . serialization . xstream . XStreamJSONSerialization . getSerializer ( XStreamJSONSerialization . java : 66 )
at br . com . caelum . vraptor . serialization . xstream . XStreamJSONSerialization . from ( XStreamJSONSerialization . java : 61 )
at br . com . caelum . vraptor . serialization . DefaultRepresentationResult . from ( DefaultRepresentationResult . java : 77 )
at br . com . caelum . vraptor . view . DefaultStatus . badRequest ( DefaultStatus . java : 146 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 57 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 43 )
at java . lang . reflect . Method . invoke ( Method . java : 601 )
at net . vidageek . mirror . provider . java . PureJavaMethodReflectionProvider . invoke ( PureJavaMethodReflectionProvider . java : 38 )
... 61 more
Nov 22 , 2012 4 : 59 : 56 PM org . apache . catalina . core . StandardWrapperValve invoke
Grave : Servlet . service () for servlet [ default ] in context with path [ /mypetslife ] threw exception
br . com . caelum . vraptor . InterceptionException : exception raised , check root cause for details : net . vidageek . mirror . exception . ReflectionProviderException : Could not invoke method badRequest
at br . com . caelum . vraptor . interceptor . ExecuteMethodInterceptor . intercept ( ExecuteMethodInterceptor . java : 96 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . DeserializingInterceptor . intercept ( DeserializingInterceptor . java : 101 )
at br . com . caelum . vraptor . core . LazyInterceptorHandler . execute ( LazyInterceptorHandler . java : 59 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 56 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 56 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . FlashInterceptor . intercept ( FlashInterceptor . java : 83 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . ParametersInstantiatorInterceptor . intercept ( ParametersInstantiatorInterceptor . java : 93 )
at br . com . caelum . vraptor . core . LazyInterceptorHandler . execute ( LazyInterceptorHandler . java : 59 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . InstantiateInterceptor . intercept ( InstantiateInterceptor . java : 48 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . ExceptionHandlerInterceptor . intercept ( ExceptionHandlerInterceptor . java : 71 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . interceptor . ResourceLookupInterceptor . intercept ( ResourceLookupInterceptor . java : 69 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 54 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . core . ToInstantiateInterceptorHandler . execute ( ToInstantiateInterceptorHandler . java : 56 )
at br . com . caelum . vraptor . core . DefaultInterceptorStack . next ( DefaultInterceptorStack . java : 54 )
at br . com . caelum . vraptor . core . EnhancedRequestExecution . execute ( EnhancedRequestExecution . java : 44 )
at br . com . caelum . vraptor . VRaptor $ 1. insideRequest ( VRaptor . java : 91 )
at br . com . caelum . vraptor . ioc . spring . SpringProvider . provideForRequest ( SpringProvider . java : 58 )
at br . com . caelum . vraptor . VRaptor . doFilter ( VRaptor . java : 88 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 243 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 210 )
at com . opensymphony . sitemesh . webapp . SiteMeshFilter . obtainContent ( SiteMeshFilter . java : 129 )
at com . opensymphony . sitemesh . webapp . SiteMeshFilter . doFilter ( SiteMeshFilter . java : 77 )
at org . apache . catalina . core . ApplicationFilterChain . internalDoFilter ( ApplicationFilterChain . java : 243 )
at org . apache . catalina . core . ApplicationFilterChain . doFilter ( ApplicationFilterChain . java : 210 )
at org . apache . catalina . core . StandardWrapperValve . invoke ( StandardWrapperValve . java : 225 )
at org . apache . catalina . core . StandardContextValve . invoke ( StandardContextValve . java : 123 )
at org . apache . catalina . authenticator . AuthenticatorBase . invoke ( AuthenticatorBase . java : 472 )
at org . apache . catalina . core . StandardHostValve . invoke ( StandardHostValve . java : 168 )
at org . apache . catalina . valves . ErrorReportValve . invoke ( ErrorReportValve . java : 98 )
at org . apache . catalina . valves . AccessLogValve . invoke ( AccessLogValve . java : 927 )
at org . apache . catalina . core . StandardEngineValve . invoke ( StandardEngineValve . java : 118 )
at org . apache . catalina . connector . CoyoteAdapter . service ( CoyoteAdapter . java : 407 )
at org . apache . coyote . http11 . AbstractHttp11Processor . process ( AbstractHttp11Processor . java : 1001 )
at org . apache . coyote . AbstractProtocol $ AbstractConnectionHandler . process ( AbstractProtocol . java : 585 )
at org . apache . tomcat . util . net . JIoEndpoint $ SocketProcessor . run ( JIoEndpoint . java : 310 )
at java . util . concurrent . ThreadPoolExecutor . runWorker ( ThreadPoolExecutor . java : 1110 )
at java . util . concurrent . ThreadPoolExecutor $ Worker . run ( ThreadPoolExecutor . java : 603 )
at java . lang . Thread . run ( Thread . java : 722 )
Caused by : net . vidageek . mirror . exception . ReflectionProviderException : Could not invoke method badRequest
at net . vidageek . mirror . provider . java . PureJavaMethodReflectionProvider . invoke ( PureJavaMethodReflectionProvider . java : 45 )
at net . vidageek . mirror . invoke . MethodHandlerByMethod . withArgs ( MethodHandlerByMethod . java : 54 )
at br . com . caelum . vraptor . view . DefaultValidationViewsFactory $ 1. intercept ( DefaultValidationViewsFactory . java : 73 )
at br . com . caelum . vraptor . proxy . CglibProxifier $ 2. intercept ( CglibProxifier . java : 95 )
at br . com . caelum . vraptor . view . Status $$ EnhancerByCGLIB $$ 2029 cb4d . badRequest ( < generated > )
at br . com . caelum . vraptor . validator . AbstractValidator . onErrorSendBadRequest ( AbstractValidator . java : 61 )
at br . com . mypetslife . controller . TrackingController . add ( TrackingController . java : 56 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 57 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 43 )
at java . lang . reflect . Method . invoke ( Method . java : 601 )
at br . com . caelum . vraptor . interceptor . ExecuteMethodInterceptor . intercept ( ExecuteMethodInterceptor . java : 61 )
... 50 more
Caused by : java . lang . NullPointerException
at br . com . caelum . vraptor . serialization . xstream . XStreamJSONSerialization . getXStream ( XStreamJSONSerialization . java : 93 )
at br . com . caelum . vraptor . serialization . xstream . XStreamJSONSerialization . getSerializer ( XStreamJSONSerialization . java : 66 )
at br . com . caelum . vraptor . serialization . xstream . XStreamJSONSerialization . from ( XStreamJSONSerialization . java : 61 )
at br . com . caelum . vraptor . serialization . DefaultRepresentationResult . from ( DefaultRepresentationResult . java : 77 )
at br . com . caelum . vraptor . view . DefaultStatus . badRequest ( DefaultStatus . java : 146 )
at sun . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method )
at sun . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 57 )
at sun . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 43 )
at java . lang . reflect . Method . invoke ( Method . java : 601 )
at net . vidageek . mirror . provider . java . PureJavaMethodReflectionProvider . invoke ( PureJavaMethodReflectionProvider . java : 38 )
... 61 more
Lucas_Cavalcanti 22 de nov. de 2012
estranho… ele dá nullpointer numa linha
<aside class= "onebox githubblob" >
<header class= "source" >
<a href= "https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/serialization/xstream/XStreamJSONSerialization.java#L93" target= "_blank" > github.com</a>
</header>
<article class= "onebox-body" >
<h4><a href= "https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/serialization/xstream/XStreamJSONSerialization.java#L93" target= "_blank" > caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/serialization/xstream/XStreamJSONSerialization.java#L93</a></h4>
<pre class= "onebox" ><code class= "lang-java" ><ol class= "start lines" start= "83" style= "counter-reset: li-counter 82 ;" >
<li>
</li>
<li> /**</li>
<li> * You can override this method for configuring XStream before serialization</li>
<li> *</li>
<li> * @deprecated prefer overwriting XStreamBuilder</li>
<li> * @return a configured instance of xstream</li>
<li> */</li>
<li> @Deprecated</li>
<li> protected XStream getXStream() {</li>
<li> return builder.jsonInstance();</li>
<li class= "selected" > }</li>
<li>
</li>
<li> /**</li>
<li> * You can override this method for configuring Driver before serialization</li>
<li> * @deprecated Override this method on XStreamBuilderImpl instead. WARN: this method will be ignored!</li>
<li> * @return configured hierarchical driver</li>
<li> */</li>
<li> @Deprecated</li>
<li> protected HierarchicalStreamDriver getHierarchicalStreamDriver() { return null; }</li>
<li>
</li>
<li> }</li>
</ol>
que não deveria ter null… um builder que vem do construtor…
vc sobrescreveu o XStreamBuilder?
tentou dar um clean no projeto e no servidor?
djDufu 23 de nov. de 2012
Lucas,
Você tem razão o problema é que eu criei um custom Serialization extendendo a classe XStreamJSONSerialization, para fazer alguns testes.
Removi esse componente que criei e funcionou.
Obrigado.