demoiselle / framework

Repositório principal contendo o Core e Extensions: JPA, Security, WS
https://demoiselle.org
127 stars 77 forks source link

ExceptionMapper, sendo interrompido um NullPointer de Crud #67

Closed robsonximenes closed 7 years ago

robsonximenes commented 7 years ago

Pessoal, criei um exceptionMapper, para minha exceção (herda RuntimeException); nela eu seto o status code e coloco um entidade simples. package br.gov.serpro.smartcert.exception;

import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider;

@Provider public class SmartCertExceptionMapper implements ExceptionMapper {

@Override
public Response toResponse(SmartCertException exception) {        
    int status = exception.getStatus();
    ErrorMsg entity = new ErrorMsg();
    entity.msg= exception.getMsg();
    entity.debbug= (exception.getMessage()!=null)?exception.getMessage():"";   
    return Response.status(status).entity(entity).type("application/json").build();
}    
public final class ErrorMsg{
    public String msg = "";
    public String debbug = "";
}  

} Ai quando rodo a aplicacao e lanco a excecao no BC. Sobe este erro no jboss:

17:11:59,390 ERROR [io.undertow.request] (default task-2) UT005023: Exception handling request to /smartcert-api/api/dispositivos/1/certificados: org.jboss.resteasy.spi.UnhandledException: java.lang.NullPointerException at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:187) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:418) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:209) at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) dSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException at org.demoiselle.jee.crud.pagination.PaginationHelper.buildAcceptRange(PaginationHelper.java:244) at org.demoiselle.jee.crud.pagination.PaginationHelper.buildAcceptRangeWithResponse(PaginationHelper.java:341) at org.demoiselle.jee.crud.pagination.PaginationHelper$Proxy$_$$WeldClientProxy.buildAcceptRangeWithResponse(Unknown Source) at org.demoiselle.jee.crud.CrudFilter.filter(CrudFilter.java:134) at org.demoiselle.jee.crud.CrudFilter$Proxy$$$_WeldClientProxy.filter(Unknown Source) at org.jboss.resteasy.core.ServerResponseWriter.executeFilters(ServerResponseWriter.java:121) at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:48) at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:183) ... 44 more

robsonximenes commented 7 years ago

O prblema é em CrudFilter

` @Override public void filter(ContainerRequestContext req, ContainerResponseContext response) throws IOException {

    if (response.getEntity() instanceof Result) {

        buildHeaders(response);

        response.setEntity(buildContentBody(response));

        if (!paginationHelper.isPartialContentResponse()) {
            response.setStatus(Status.OK.getStatusCode());
        } 
        else {
            response.setStatus(Status.PARTIAL_CONTENT.getStatusCode());
        }
    } 
    else {
        if (Status.BAD_REQUEST.getStatusCode() == response.getStatus() && drc.getEntityClass() == null) {
            paginationHelper.buildAcceptRangeWithResponse(response);
        }
    }

}

`

Ele esta interferindo no meu sistema. O crud pode ser desabilitado? Não deveria estar no core do projeto.

robsonximenes commented 7 years ago

Todo codigo 400 que eu tentar lançar cai ai... estou usando 401 temporariamente para fugir deste problema

robsonximenes commented 7 years ago

Outra coisa, minha aplicacao é REST o crud é apenas no BC e DAO... Não é interessante ter u filtro na ponta

clovisjunior commented 7 years ago

@robsonximenes você esta usando no seu pom.xml o parent do demoiselle?

Caso não queira usar o demoiselle-crud você pode deixar de usar o parent do demoiselle e importar os artefatos do demoiselle específicos para seu projeto.

Ex:

<dependency>
    <groupId>org.demoiselle.jee</groupId>
    <artifactId>demoiselle-core</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
     <groupId>org.demoiselle.jee</groupId>
     <artifactId>demoiselle-security-jwt</artifactId>
    <version>3.0.0</version>
</dependency>