Giter VIP home page Giter VIP logo

Comments (4)

jhaber avatar jhaber commented on August 10, 2024

Hey Brandon, from the stacktrace you posted it looks like the issue is this constructor, which has no arguments but is annotated with @Inject (which spring considers the same as @Autowired). This constructor was added to make the class work with Guice, but since this seems to break Spring compatibility and there is another Guice workaround that can be used, so I went ahead and removed the constructor. I released this change as part of version 0.7.2 which should show up in Maven central soon. Can you try out 0.7.2 and let me know if you still run into any issues? (Just a note, you shouldn't need to explicitly create a JacksonJsonProvider if you don't need to customize it, also the class should be com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider, org.codehaus is from Jackson 1 which is very old now)

from jackson-jaxrs-propertyfiltering.

thebrandonhoward avatar thebrandonhoward commented on August 10, 2024
  • I have it working perfectly with Jersey once I removed every reference to CXF.
  • In my CXF/Spring service:

-- web.xml --

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/beans.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> 

<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <display-name>CXF Servlet</display-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

-- beans.xml --

```

<jaxrs:server id="restContainer" address="/">
    <jaxrs:serviceBeans>
        <ref bean="welcomeServiceImpl"/>
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <ref bean="propertyFilteringMessageBodyWriter"/>
    </jaxrs:providers>
</jaxrs:server>

<!-- USED TO RETURN ONLY FIELDS OF THE QUERY STRING -->
<bean id="propertyFilteringMessageBodyWriter" class="com.hubspot.jackson.jaxrs.PropertyFilteringMessageBodyWriter">
</bean>
   #  -- implementation --
    ```
@Service
@Path( "/" )
@Consumes()
@Produces( javax.ws.rs.core.MediaType.APPLICATION_JSON )
public class WelcomeServiceImpl implements WelcomeService
{
    public welcomeServiceImpl()
    {
        ms = ini.init();
    }

    @GET
    @Path( "/welcome/{id}/")
    @PropertyFiltering
    @Produces( javax.ws.rs.core.MediaType.APPLICATION_JSON  )
    public Response getWelcome( @PathParam( "id" ) String id )
    {
        Welcome welcome = new Welcome();
        welcome.setId("727127");
        welcome.setName("Nombre");

        String str = ( "{a: \"a\", b: \"b\"}" );

        return Response.ok( welcome, javax.ws.rs.core.MediaType.APPLICATION_JSON )
                .header( "Access-Control-Allow-Origin","*" )
                .header( "Access-Control-Allow-Methods","GET" )
                .status( 200 )
                .build();
    }


-- Result --

Feb 03, 2016 8:14:40 AM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
WARNING: Interceptor for {http://impl.service.propertyfilteringdemo.project.com/}welcomeServiceImpl has thrown exception, unwinding now
java.lang.NullPointerException
    at com.hubspot.jackson.jaxrs.PropertyFilteringMessageBodyWriter.getJsonProvider(PropertyFilteringMessageBodyWriter.java:156)
    at com.hubspot.jackson.jaxrs.PropertyFilteringMessageBodyWriter.isWriteable(PropertyFilteringMessageBodyWriter.java:53)
    at org.apache.cxf.jaxrs.provider.ProviderFactory.matchesWriterCriterias(ProviderFactory.java:728)
    at org.apache.cxf.jaxrs.provider.ProviderFactory.chooseMessageWriter(ProviderFactory.java:693)
    at org.apache.cxf.jaxrs.provider.ProviderFactory.createMessageBodyWriter(ProviderFactory.java:439)
    at org.apache.cxf.jaxrs.provider.ProviderFactory.createMessageBodyWriterInterceptor(ProviderFactory.java:375)
    at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:223)
    at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(JAXRSOutInterceptor.java:117)
    at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(JAXRSOutInterceptor.java:80)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
    at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:83)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:290)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:214)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:265)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

from jackson-jaxrs-propertyfiltering.

jhaber avatar jhaber commented on August 10, 2024

Thanks for the detailed information! I'll try running your code and see if I can figure out what's going on

from jackson-jaxrs-propertyfiltering.

mpaltun avatar mpaltun commented on August 10, 2024

I can confirm that JacksonJsonProvider(delegate) can't be resolved with CXF implementation.

from jackson-jaxrs-propertyfiltering.

Related Issues (6)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.