In the project I am doing we needed to expose a function through a
REST interface, and to not pull in any more interfaces than necessary
I opted to leave Spring out of it and just do the setup
programmatically. This worked fine until the point of trying to
register the ParameterHandler. I just cannot get it working - probably
because I am registering it in the wrong place. So far I have tried
adding it in the getSingletons() method and in the getClasses() method
of my Application class. Neither seem to work.

The CXF JAX-RS page http://cxf.apache.org/docs/jax-rs-basics.html says
"ParameterHandlers can be registered as providers either from Spring
or programmatically". Where else than the Application class can I
register them? I have googled and browsed through "RESTful Java with
JAX-RS" to find out where I am supposed to register them, but I cannot
find any examples on it (other than through Spring).

This is basically the relevant code (it that should matter).

<code>
public class MyApp extends Application {
        Set<Class<?>> classes;
        Set<Object>   singletons;

        public MyApp() {
                /* add classes */
                classes = new HashSet<Class<?>>();
                classes.add( GrossAdultInfoHandler.class );
                classes.add( InfoChildHandler.class );

                /* add singletons */
                addSingletons();
        }

        @Override
        public Set<Class<?>> getClasses() {
                return classes;
        }

        @Override
        public Set<Object> getSingletons() {
                return singletons;
        }

        private void addSingletons() {
                singletons = new HashSet<Object>();

                singletons.add( new MyService() );

                /* Add JSON provider */
                singletons.add( new JacksonJsonProvider() );

                /* Add handlers */
                singletons.add( new FooHandler() );
        }
}

class FooHandler extends ParameterHandler<Foo> {
     public Foo fromString(String s) {...}
}
</code>

br
Carl-Erik

Reply via email to