well it deploys properly and solves your exception - no link to jpa. Also not sure the link with the provided snippet to be honest but in any case take care - and the test shows it - you use some illegal mapping (@Classes on a container config).
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> 2015-12-02 18:47 GMT+01:00 Yann BLAZART <[email protected] >: > Sorry ? You mean @PersistenceUnitDefinition ? > > In real I need a persistence Unit to be injected into a service that I > need to test on the two Application. > That why I'm trying to add the @module. > > And this is the code that generate it : > @Module > @PersistenceRootUrl(value = "") // must use value="" (BUG) > public Persistence generateFeedsPU() throws Exception { > return super.createPersistenceFromFile(FeedsFlow.class); > } > > And > protected Persistence createPersistenceFromFile(String > persistenceFileClassPath, Class baseClassForGetResource) throws Exception { > String classRessource = "/" + > baseClassForGetResource.getName().replace('.', '/') + ".class"; > URL baseUrl = baseClassForGetResource.getResource(classRessource); > String basePath = baseUrl.toString().substring(0, > baseUrl.toString().indexOf(classRessource)); > > URL persistenceURL = new URL(basePath + > "/META-INF/persistence.xml"); > final Persistence persistence = > JaxbPersistenceFactory.getPersistence(Persistence.class, persistenceURL); > return JaxbPersistenceFactory.getPersistence(Persistence.class, > persistenceURL); > } > > > I don't see how this eample solve the problem of the @Module in the static > class. > > -----Original Message----- > From: Romain Manni-Bucau [mailto:[email protected]] > Sent: mercredi 2 décembre 2015 18:38 > To: [email protected] > Subject: Re: ApplicationComposer, ApplicationRuleBug > > Hi Yann > > this is fixed and here is the test: > > https://git1-us-west.apache.org/repos/asf?p=tomee.git;a=blob;f=container/openejb-core/src/test/java/org/apache/openejb/junit/ContainerAndApplicationRulesTest.java;h=1f0ce567efa60ba4c6b7200c1d6fb04e1527bd75;hb=c63f2ec304a174ccefd88dda48bbe440c2036a5f > > > Romain Manni-Bucau > @rmannibucau <https://twitter.com/rmannibucau> | Blog < > http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> > | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber < > http://www.tomitribe.com> > > 2015-12-02 18:14 GMT+01:00 Yann BLAZART < > [email protected] > >: > > > Hello, it seems there is a bug in ApplicationRule with > ApplicationComposer. > > > > With the following code : > > > > > > public class AppRuleBugTest { > > > > private static final ContainerRule instanceContainer = new > > ContainerRule(new Container()); > > private static final ApplicationRule instanceServer = new > > ApplicationRule(new App1()); > > > > @Rule > > public final TestRule rule = RuleChain > > .outerRule(instanceContainer) > > .around(instanceServer); > > > > @Test > > public void test() { > > > > } > > > > @EnableServices("jaxrs") > > @Classes( > > value = { > > TxRunner.class, > > FeedsFlowRepository.class, > > } > > ) > > public static class Container extends > > AbstractApplicationComposerHelper { > > > > } > > > > @Classes( > > context = "App1", > > cdi = true, innerClassesAsBean = true > > ) > > public static class App1 { > > > > @Module > > public PersistenceUnit unit() { > > return new PersistenceUnit("jpa"); > > } > > } > > > > @Module > > public PersistenceUnit unit() { > > return new PersistenceUnit("jpa"); > > } > > } > > > > I precise I have in my real case to use Rule because I want to test > > communications between two 'Application', and I have to use @Module > > and @Configuration because I doing some special configurations. > > > > I have this stacktrace when AppComposer try to call the method > > Annotated with @Module in the inner class. This is the same if I > > externalize the App1 class : > > > > java.lang.IllegalArgumentException: object is not an instance of > > declaring class > > > > at > > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > at > java.lang.reflect.Method.invoke(Method.java:483) > > at > > > org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:432) > > at > > > org.apache.openejb.junit.ApplicationRule$1.evaluate(ApplicationRule.java:45) > > at > > org.apache.openejb.junit.ContainerRule$1.evaluate(ContainerRule.java:45) > > at > > org.junit.rules.RunRules.evaluate(RunRules.java:20) > > at > > org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) > > at > > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) > > at > > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) > > at > > org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) > > at > > org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) > > > > > > Thanks in advance. Regards. > > > > > > > > This message and any attachments (the "message") is intended solely > > for the intended addressees and is confidential. > > If you receive this message in error,or are not the intended > > recipient(s), please delete it and any copies from your systems and > > immediately notify the sender. Any unauthorized view, use that does > > not comply with its purpose, dissemination or disclosure, either whole > > or partial, is prohibited. Since the internet cannot guarantee the > > integrity of this message which may not be reliable, BNP PARIBAS (and > > its subsidiaries) shall not be liable for the message if modified, > > changed or falsified. > > Do not print this message unless it is necessary,consider the > environment. > > > > > > ---------------------------------------------------------------------- > > ------------------------------------------------------------ > > > > Ce message et toutes les pieces jointes (ci-apres le "message") sont > > etablis a l'intention exclusive de ses destinataires et sont > > confidentiels. > > Si vous recevez ce message par erreur ou s'il ne vous est pas destine, > > merci de le detruire ainsi que toute copie de votre systeme et d'en > > avertir immediatement l'expediteur. Toute lecture non autorisee, toute > > utilisation de ce message qui n'est pas conforme a sa destination, > > toute diffusion ou toute publication, totale ou partielle, est > > interdite. L'Internet ne permettant pas d'assurer l'integrite de ce > > message electronique susceptible d'alteration, BNP Paribas (et ses > > filiales) decline(nt) toute responsabilite au titre de ce message dans > > l'hypothese ou il aurait ete modifie, deforme ou falsifie. > > N'imprimez ce message que si necessaire, pensez a l'environnement. > > >
