Hello, I have one question about this test. Given this code, how can I inject a bean into Arquillian test?
package org.apache.openejb.arquillian.tests.cmp.sample; import org.jboss.arquillian.container.test.api.Deployment;import org.jboss.arquillian.container.test.api.RunAsClient;import org.jboss.arquillian.junit.Arquillian;import org.jboss.arquillian.test.api.ArquillianResource;import org.jboss.shrinkwrap.api.ShrinkWrap;import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset;import org.jboss.shrinkwrap.api.asset.EmptyAsset;import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;import org.jboss.shrinkwrap.api.spec.JavaArchive;import org.jboss.shrinkwrap.api.spec.WebArchive;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith; import javax.inject.Inject;import java.net.URL; @RunWith(Arquillian.class)public class CustomOrmXmlEarTest { @ArquillianResource private URL url; @Inject private ActorBean actorBean; @Deployment public static EnterpriseArchive createDeployment() { final JavaArchive ejbJar = ShrinkWrap.create(JavaArchive.class, CustomOrmXmlEarTest.class.getSimpleName() + ".jar") .addClasses(ActorBean.class, ActorDetails.class, LocalActor.class, LocalActorHome.class, LocalMovie.class, LocalMovieHome.class, MovieBean.class, MovieDetails.class, MoviesBusiness.class, MoviesBusinessBean.class, MoviesBusinessHome.class, MoviesServlet.class) .addAsResource(new ClassLoaderAsset("org/apache/openejb/arquillian/tests/cmp/sample/custom-orm.xml"), "META-INF/custom-orm.xml") .addAsResource(new ClassLoaderAsset("org/apache/openejb/arquillian/tests/cmp/sample/persistence.xml"), "META-INF/persistence.xml") .addAsResource(new ClassLoaderAsset("org/apache/openejb/arquillian/tests/cmp/sample/openejb-jar.xml"), "META-INF/openejb-jar.xml") .addAsResource(new ClassLoaderAsset("org/apache/openejb/arquillian/tests/cmp/sample/ejb-jar.xml"), "META-INF/ejb-jar.xml") .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); final WebArchive war = ShrinkWrap.create(WebArchive.class, CustomOrmXmlEarTest.class.getSimpleName() + ".war") .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") .addAsWebInfResource(new ClassLoaderAsset("org/apache/openejb/arquillian/tests/cmp/sample/web.xml"), "web.xml"); final EnterpriseArchive archive = ShrinkWrap.create(EnterpriseArchive.class, CustomOrmXmlTest.class.getSimpleName() + ".ear") .addAsModule(ejbJar) .addAsModule(war) .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); System.out.println(ejbJar.toString(true)); System.out.println(war.toString(true)); System.out.println(archive.toString(true)); return archive; } @Test public void checkCmpJpaEntityORMMappings() throws Exception { Assert.assertNotNull(actorBean); } } On Thu, Jan 17, 2019 at 5:02 PM Otávio Gonçalves de Santana < osant...@tomitribe.com> wrote: > I created a solution, could you review it, please? > I'm working on a test to it. > > On Thu, Jan 17, 2019 at 10:09 AM Otávio Gonçalves de Santana < > osant...@tomitribe.com> wrote: > >> >> >> I put these codes at CmpJpaConversion: >> >> >> URL resource = CmpJpaConversion.class.getResource("."); >> Path path = Paths.get(resource.toURI()); >> Stream<Path> list = Files.list(path); >> list.map(Path::getFileName).forEach(System.out::println); >> >> >> >> The output: >> >> SunConversion$SunColumnName.class >> WsDeployer.class >> EjbJarInfoBuilder.class >> DeploymentModule$ID.class >> ConfigurableClasspathArchive.class >> DeploymentException.class >> ReadDescriptors$UrlSource.class >> DeploymentLoader$ExternalConfiguration.class >> SunConversion$EntityData.class >> RemoteServer$CleanUpThread.class >> FinderFactory.class >> GeneratedClientModules$Prune.class >> WebappAggregatedArchive.class >> ClearEmptyMappedName.class >> OpenEjb2Conversion$EntityData.class >> FinderFactory$ModuleLimitedFinder$FieldPredicate.class >> DeploymentLoader$2.class >> Deployment.class >> AnnotationDeployer$ProcessAnnotatedBeans$AccessTimeoutHandler.class >> AppInfoBuilder$1.class >> EjbModule.class >> OpenEJBDeploymentManager$DeploymentStatusImpl.class >> ReportValidationResults$Level.class >> ValidationRule.class >> DebuggableVmHackery.class >> DeploymentsResolver$DeploymentsConfigurationException.class >> ConvertJMSConnectionFactoryDefinitions.class >> AnnotationDeployer$1.class >> TldScanner$2.class >> OpenEJBDeploymentManager$TargetImpl.class >> ServiceUtils.class >> ValidationFailure.class >> CompManagedBean$1.class >> AnnotationDeployer$ProcessAnnotatedBeans$AnnotationHandler.class >> AnnotationDeployer$3.class >> FinderFactory$ModuleLimitedFinder$AnnotatedClassPredicate.class >> AutoDeployer$1.class >> AppValidator.class >> AppInfoBuilder.class >> ValidationWarning.class >> ContainerUtils.class >> Deploy.class >> ConvertDataSourceDefinitions.class >> OpenEJBDeploymentManager$ProgressObjectImpl.class >> BeanProperties.class >> FinderFactory$ModuleLimitedFinder.class >> FinderFactory$OpenEJBAnnotationFinder.class >> Cipher.class >> VmDeploymentManager.class >> WsModule.class >> AnnotationDeployer$ProcessAnnotatedBeans$TransactionAttributeHandler.class >> DeploymentsResolver$1.class >> DeploymentLoader$1.class >> AnnotationDeployer$ProvidedJAXRSApplication.class >> Undeploy.class >> OpenEJBDeploymentManager.class >> PojoConfiguration.class >> ScanConstants.class >> PersistenceContextAnnFactory$PersistenceContextReader.class >> NewLoaderLogic$3.class >> DeploymentLoader.class >> BuiltInEnvironmentEntries.class >> MBeanDeployer.class >> DeploymentModule.class >> JndiEncInfoBuilder$1.class >> ValidationException.class >> CompManagedBean.class >> Module.class >> ConfigurationDeployer.class >> OpenEJBDeploymentManager$TargetModuleIDImpl.class >> VmDeploymentFactory.class >> PersistenceContextAnnFactory$PersistenceContextVisitor$1.class >> ConfigurationFactory$Chain.class >> DeploymentsResolver$ClasspathSearcher.class >> ConfigurableClasspathArchive$FakeModule.class >> OutputGeneratedDescriptors.class >> ContextRef.class >> Undeploy$DeploymentTerminatedException.class >> ActivationConfigPropertyOverride$MdbContainerDetails.class >> RESTModule.class >> QuickJarsTxtParser.class >> Service.class >> JPAPropertyConverter.class >> MappedNameBuilder.class >> PersistenceContextAnnFactory$PersistenceContextVisitor.class >> AutoDeployer.class >> NewLoaderLogic.class >> FinderFactory$DebugArchive.class >> AnnotationDeployer$2.class >> SunConversion.class >> Deploy$DeploymentTerminatedException.class >> AnnotationDeployer.class >> ConvertJMSDestinationDefinitions.class >> NoSuchProviderException.class >> LegacyProcessor.class >> BeanTypes.class >> ReadDescriptors$1.class >> GeneratedClientModules.class >> ConfigUtils.class >> EmptyEjbJar.class >> provider >> ServiceUtils$ProviderInfo.class >> AnnotationDeployer$FolderDDMapper.class >> event >> CompManagedBean$NoExtendedKeyedCollection$NoExtendedMap.class >> FinderFactory$ModuleLimitedFinder$AnnotatedFieldPredicate.class >> ValidationError.class >> ScanUtil.class >> NewLoaderLogic$OptimizedExclusionFilter.class >> VmDeploymentManager$TargetModuleIDImpl.class >> NameFiltering.class >> PersistenceContextAnn.class >> ApplicationComposerDeployer.class >> SystemProperty.class >> AnnotationDeployer$ProcessAnnotatedBeans$LockHandler.class >> AnnotationDeployer$4.class >> ReadDescriptors$2.class >> NewLoaderLogic$1.class >> SystemPropertiesOverride.class >> AppModule.class >> ModuleProperties.class >> ConfigurationFactory.class >> VmDeploymentManager$DeploymentStatusImpl.class >> TldScanner.class >> RequireDescriptors.class >> AnnotationDeployer$ProcessAnnotatedBeans.class >> FinderFactory$1.class >> RemoteServer.class >> EffectiveTomEEXml.class >> AutoConfig$1.class >> GeneratedClientModules$Add.class >> LinkBuiltInTypes.class >> SystemApps.class >> AutoDeployer$DirectoryInfo.class >> GeronimoMappedName.class >> AppInfoBuilder$2.class >> PersistenceContextAnnFactory$DirectPersistenceContext.class >> ConfigurationFactory$1.class >> typed >> ActivationConfigPropertyOverride.class >> AnnotationDeployer$FieldMember.class >> ConfigurationFactory$ProxyBeanClassUpdate.class >> AppInfoBuilder$PersistenceProviderProperties.class >> PersistenceContextAnnFactory$1.class >> ConnectorModule.class >> RemoteServer$1.class >> WebModule.class >> ReadDescriptors$3.class >> ServiceEndpoint.class >> ApplicationProperties.class >> MergeWebappJndiContext.class >> FinderFactory$DoLoadClassesArchive.class >> SunConversion$TokenType.class >> AnnotationDeployer$ProcessAnnotatedBeans$ConcurrentMethodHandler.class >> AutoDeployer$FileInfo.class >> FinderFactory$ModuleLimitedFinder$MethodPredicate.class >> PersistenceContextAnnFactory$AsmPersistenceContext.class >> AnnotationDeployer$FilledMember.class >> AnnotationDeployer$Member.class >> UnsupportedModuleTypeException.class >> DynamicDeployer.class >> JndiEncInfoBuilder$SimpleRef.class >> FinderFactory$ModuleLimitedFinder$ConstructorPredicate.class >> PersistenceContextAnnFactory.class >> AnnotationDeployer$MethodMember.class >> WebappAggregatedArchive$ScanXmlSaverFilter.class >> ResourcesModule.class >> CompManagedBean$NoExtendedKeyedCollection.class >> ConfigurationFactory$TopicOrQueueDefaults.class >> CmpJpaConversion.class >> AnnotationDeployer$DiscoverAnnotatedBeans.class >> JndiEncInfoBuilder$Ref.class >> NewLoaderLogic$2.class >> TldScanner$1.class >> Messages.properties >> ReadDescriptors$Source.class >> VmDeploymentManager$ProgressObjectImpl.class >> InitEjbDeployments.class >> PersistenceUnitLinkResolver.class >> DeploymentsResolver.class >> DeploymentFilterable.class >> AppContextConfigDeployer.class >> AnnotationDeployer$ProcessAnnotatedBeans$BusinessInterfaces.class >> ReadDescriptors.class >> rules >> SystemAppInfo.class >> AdditionalBeanDiscoverer.class >> JPAPropertyConverter$Pair.class >> BaseConvertDefinitions.class >> ReadDescriptors$StringSource.class >> OpenEjb2Conversion.class >> FinderFactory$ModuleLimitedFinder$Predicate.class >> CleanEnvEntries.class >> ValidationFailedException.class >> FinderFactory$ModuleLimitedFinder$AnnotatedMethodPredicate.class >> ConfigurationFactory$DefaultService.class >> RemoveWebServices.class >> AutoConfig$AppResources.class >> UnknownModuleTypeException.class >> ScanUtil$ScanHandler.class >> AutoConfig.class >> JndiEncInfoBuilder.class >> FinderFactory$ModuleLimitedFinder$ClassPredicate.class >> ValidationContext.class >> sys >> QuickServerXmlParser.class >> ValidateModules.class >> ApplyOpenejbJar.class >> ValidationResults.class >> ClientModule.class >> WlsConversion.class >> VmDeploymentManager$TargetImpl.class >> PersistenceModule.class >> EnvEntriesPropertiesDeployer.class >> ReportValidationResults.class >> >> >> >> On Thu, Jan 17, 2019 at 9:50 AM Jonathan Gallimore < >> jonathan.gallim...@gmail.com> wrote: >> >>> I'd say we should try the same jar that persistence.xml is in. That >>> said, I >>> thought it was loaded via the classloader, so what's on the classpath >>> when >>> we try and read this file? >>> >>> Jon >>> >>> On Thu, Jan 17, 2019 at 11:44 AM Otávio Gonçalves de Santana < >>> osant...@tomitribe.com> wrote: >>> >>> > Given an EAR package that has an EJB jar with a persistence.xml within >>> a >>> > mapping-file element. >>> > The CmpJpaConversion >>> > < >>> > >>> https://github.com/apache/tomee/blob/master/container/openejb-core/src/main/java/org/apache/openejb/config/CmpJpaConversion.java#L109L128 >>> > > >>> > does not find this reference because when it reads, this file reference >>> > isn’t in the jar anymore but in the EAR location. >>> > It seems that the DeploymentLoader >>> > < >>> > >>> https://github.com/apache/tomee/blob/master/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java >>> > > >>> > goes to all jar files to find the persistence XML. However, it doesn’t >>> load >>> > the others resources files. >>> > >>> > IMHO: that does not look an easy solution, because it raises some >>> > decisions: >>> > >>> > - What happens if have one or more jar file with the same file name? >>> > - Should we have priorities? >>> > - Should we read the mapping-file just from the specific jar file? >>> > >>> > Ref: https://github.com/apache/tomee/pull/374 >>> > >>> >>