Closed diogoabp closed 6 years ago
Olá, seu serviço está anotado para consumir e/ou prover json?
@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
@path("/coordenador")
public Response getInformacoesCoordenador() {
throw new DemoiselleRestException(msg.onlyOwner(),403);
}
Tentou lançar outro tipo de exceção, apenas para testar?
throw new DemoiselleSecurityException("Teste", UNAUTHORIZED.getStatusCode());
Olá,
Está anotado. O outro erro (DemoiselleSecurityException) também gera um 500, conforme imagem:
Estou usando a versão 3.0.1.
Olá Diogo,
Criei um projeto utilizando o demoiselle-parent-rest na versão 3.0.1 para reproduzir o erro. A classe que utilizei para teste foi essa:
package br.com.demoiselle.suporte;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.demoiselle.jee.rest.exception.DemoiselleRestException;
@Path("issue")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class TesteExcecaoService {
@GET
@Path("/coordenador")
public Response getInformacoesCoordenador() {
throw new DemoiselleRestException("Teste", 403);
}
}
E o comando curl utilizado para testar foi esse:
curl -XGET 'http://localhost:8080/issue-15-0.0.1-SNAPSHOT/api/issue/coordenador' -H 'Content-Type: application/json' -v
Com esse resultado esperado, erro 403 com mensagem de "Teste":
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /issue-15-0.0.1-SNAPSHOT/api/issue/coordenador HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.47.0
> Accept: */*
> Content-Type: application/json
>
< HTTP/1.1 403 Forbidden
< Connection: keep-alive
< X-Powered-By: Undertow/1
< Demoiselle-Version: Demoiselle JEE - Ragnar
< Server: WildFly/10
< Demoiselle-security: Enable
< Content-Type: application/json
< Content-Length: 49
< Date: Thu, 17 May 2018 13:35:31 GMT
<
* Connection #0 to host localhost left intact
[{"error_description":["Teste"],"error":"Teste"}]%
Uma coisa que notei na sua imagem foi a falta do Header 'Content-Type: application/json', adicione esse header e retorne o resultado para vermos.
Abraços
Boa tarde Clovis,
Copiei o seu código: `package br.edu.utfpr.extensao.teste;
import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response;
import org.demoiselle.jee.rest.exception.DemoiselleRestException;
@Path("issue") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class TesteExcecaoService {
@GET
@Path("/coordenador")
public Response getInformacoesCoordenador() {
throw new DemoiselleRestException("Teste", 403);
}
}`
E executei como você havia executado, segue retorno: ` curl -XGET 'http://localhost:8080/extensao-0.0.1/api/issue/coordenador' -H 'Content-Type: application/json' -v Note: Unnecessary use of -X or --request, GET is already inferred.
GET /extensao-0.0.1/api/issue/coordenador HTTP/1.1 Host: localhost:8080 User-Agent: curl/7.47.0 Accept: / Content-Type: application/json
< HTTP/1.1 500 Internal Server Error < Access-Control-Allow-Headers: origin, content-type, accept, Authorization < x-xss-protection: 1; mode=block < Content-Security-Policy: script-src 'self' < Date: Thu, 17 May 2018 16:05:15 GMT < Connection: keep-alive < Demoiselle-Version: Demoiselle JEE - Ragnar < Strict-Transport-Security: strict-transport-security: max-age=31536000; includeSubDomains < Access-Control-Allow-Methods: HEAD, OPTIONS, TRACE, GET, POST, PUT, PATCH, DELETE < X-Powered-By: Undertow/1 < Server: WildFly/10 < Demoiselle-security: Enable < x-frame-options: SAMEORIGIN < Access-Control-Expose-Headers: Content-Length, Date < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: true < x-content-type-options: nosniff < Content-Type: application/json < Content-Length: 203 < Access-Control-Max-Age: 3600000 <
Obrigado.
Fiz alguns testes e atualizando de 3.0.1 para versão 3.0.2, o retorno é o esperado. Posso mudar sem afetar meu projeto?
Obrigado.
Pode atualizar seu projeto para a 3.0.2.
O que deve estar acontecendo é que o erro gerado esta acontecendo em outro ponto da requisição e não no método que estávamos trabalhando.
Atualize para a versão 3.0.2, caso resolva seu problema, por favor feche essa issue.
Grato
Clovis,
Atualizei a versão e corrigiu.
Obrigado.
Boa tarde.
Estou desenvolvendo um sistema corporativo utilizando o demoiselle-parent-rest, versão 3.0.1.
pom.xml:
org.demoiselle.jee demoiselle-parent-rest 3.0.1 Ao testar as exceções: @get @path("/coordenador") public Response getInformacoesCoordenador() { throw new DemoiselleRestException(msg.onlyOwner(),403); }
Ele retorna um status 500, independente do código usado (por exemplo, 403).
Como proceder?
Obrigado!
Diogo