take care using @Classes you specify explicitely the "application classpath"
so use:
@Classes({ GoodExceptionMapper.class, BadExceptionMapper.class,
ExampleRest.class, ExampleService.class })
*Romain Manni-Bucau*
*Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
*Blog: **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/>
*LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
*Github: https://github.com/rmannibucau*
2013/5/12 Chris.Christo <[email protected]>
> Hey,
>
> Ok so I've attached a maven project with pretty much what I described
> before.
>
> unzip and run a mvn test.
>
> There are two tests.
>
> The one that is failing is 'ExceptionMapperAtConfigTest'. It fails because
> the @EJB is not being injected in the Rest class.
>
>
>
>
>
> Chris Christo
>
> Twitter: https://twitter.com/ChrisChristo7
> Tumblr: http://chrischristo7.tumblr.com
> LinkedIn: http://uk.linkedin.com/in/chrischristo
>
> On 10 May 2013, at 21:07, Romain Manni-Bucau <[email protected]>
> wrote:
>
> Right,
>
> Git clone X && mvn test -> error
> Le 10 mai 2013 22:04, "Chris.Christo" <[email protected]> a écrit :
>
> Thanks Romain, tried it but no luck :(
>
> What's the best way to share a sample so I know? I'm guessing some pre
> setup maven project on github or something in which you can git clone and
> mvn install?
>
>
>
>
> On 10 May 2013, at 20:42, Romain Manni-Bucau <[email protected]>
> wrote:
>
> Maybe try adding ejb in @classes
>
> Sharing a sample for next week.can help too ;)
> Le 10 mai 2013 20:41, "Chris.Christo" <[email protected]> a écrit :
>
> 4.6.0-SNAPSHOT of the standalone
>
>
> On 10 May 2013, at 19:39, Romain Manni-Bucau <[email protected]>
> wrote:
>
> Which version do you use?
> Le 10 mai 2013 20:33, "Chris.Christo" <[email protected]> a
>
> écrit :
>
>
> sorry, where on trunk?
>
> Regardless, I played around with this and managed to get it working.
>
> However I have stumbled on something a little strange.
>
> Basically when the exception mappers are defined at the @Config level,
>
> any
>
> @EJB's within the rest class, that is being tested, do not get
>
> injected.
>
>
> To explain a little better, here (on pastebin) we have to classes.
>
> They
>
> are practically identical except for where the ExceptionMapper classes
>
> are
>
> loaded, one at the @Config level and one within the @Module level
>
> defined
>
> on the EjbDeployment of the OpenejbJar.
>
> They both pass the test, which basically means that that the exception
> mapping was setup correctly. However the second class
> (ExceptionMapperAtConfigTest) passes on the basis that the service
>
> marked
>
> @EJB is not injected i.e null. So basically we want this test to fail.
>
> ExceptionMapperAtDeploymentTest: http://pastebin.com/aWQjjePD
>
> ExceptionMapperAtConfigTest: http://pastebin.com/GFcKYWzs
>
>
> On a side note, to have the exception mappers picked up at the @Config
> level, you have to have the '@Classes({ GoodExceptionMapper.class,
> BadExceptionMapper.class })' annotation defined on the method. I have
>
> no
>
> idea why??
>
>
>
> On 10 May 2013, at 17:35, Romain Manni-Bucau <[email protected]>
> wrote:
>
> Hi
>
> on trunk it is set once by jaxrs application only which is far ore
>
> easier
>
> to handle
>
> *Romain Manni-Bucau*
> *Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
> *Blog: **http://rmannibucau.wordpress.com/*<
>
> http://rmannibucau.wordpress.com/>
>
> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
> *Github: https://github.com/rmannibucau*
>
>
>
> 2013/5/10 Chris.Christo <[email protected]>
>
> Hi
>
> Hey I was just wondering if I can set my exception mappers in the
> properties part of my test under the @Configuration, rather than
>
> having
>
> to
>
> apply an exception mapper to each EjbDeployment of the OpenejbJar.
>
> So right now I have something like this link:
>
>
>
>
>
>
> https://svn.apache.org/repos/asf/tomee/tomee/trunk/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CheckedExceptionMapperTest.java
>
>
> To pick out the specific point in the link:
>
> @Module
> @Classes({ ExampleExceptionMapper.class })
> public EjbModule module() {
> final SingletonBean bean = new SingletonBean(ExampleRest.class);
> bean.setRestService(true);
>
> final EjbJar ejbJar = new EjbJar("beans");
> ejbJar.addEnterpriseBean(bean);
>
> final OpenejbJar openejbJar = new OpenejbJar();
> openejbJar.addEjbDeployment(new EjbDeployment(bean));
>
> final Properties properties =
> openejbJar.getEjbDeployment().iterator().next().getProperties();
> properties.setProperty("cxf.jaxrs.providers",
>
>
>
>
> "org.apache.openejb.server.cxf.rs.CheckedExceptionMapperTest$ExampleExceptionMapper");
>
>
> final EjbModule module = new EjbModule(ejbJar);
> module.setOpenejbJar(openejbJar);
>
> return module;
> }
>
> So here I define the exception mapper (ExampleExceptionMapper) on
>
> the
>
> properties of the specific EjbDeployment of the ExampleRest class in
>
> the
>
> OpenejbJar.
>
> Is there a way to just define it in the global properties with
> @Configuration? I've tried something like this to no avail:
>
> @Configuration
> public Properties config() {
> final Properties props = new Properties();
> ...
> props.setProperty("openejb.cxf.jax-rs.providers",
> ExampleExceptionMapper.class.getName());
> props.setProperty("openejb.jaxrs.providers.auto", "true");
> ...
> return props;
> }
>
>
>
> Thanks,
>
> Chris
>
>
>
>
>
>
>
>
>
>
>