[arquillian-issues] [JBoss JIRA] (ARQ-619) If multiple DeployableContainers are in the classpath the exception message is currently incorrect

Aslak Knutsen (JIRA) jira-events at lists.jboss.org
Tue Apr 10 07:11:47 EDT 2012


     [ https://issues.jboss.org/browse/ARQ-619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aslak Knutsen resolved ARQ-619.
-------------------------------

    Resolution: Done


pushed upstream, https://github.com/arquillian/arquillian-core/commit/a5db962575cfb4253606b2769a6942a39020ae0e
                
> If multiple DeployableContainers are in the classpath the exception message is currently incorrect
> --------------------------------------------------------------------------------------------------
>
>                 Key: ARQ-619
>                 URL: https://issues.jboss.org/browse/ARQ-619
>             Project: Arquillian
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 1.0.0.CR5
>            Reporter: Geoffrey De Smet
>            Assignee: Aslak Knutsen
>             Fix For: 1.0.0.Final
>
>
> I 've configured both arquillian-jetty-embedded-6.1 and jboss-as-arquillian-container-managed in my pom.xml.
> As a result of some weird exception based code in arquillian, I get this stacktrace which tells me it's another problem (which it is not):
> {code}
> org.jboss.arquillian.container.test.impl.client.deployment.ValidationException: DeploymentScenario contains targets not matching any defined Container in the registry. _DEFAULT_. Possible causes are: No Deployable Container found on Classpath or your have defined a @org.jboss.arquillian.container.test.api.Deployment with a @org.jboss.arquillian.container.test.api.TargetsContainer value that does not match any found/configured Containers (see arquillian.xml container at qualifier) 
> 	at org.jboss.arquillian.container.test.impl.client.deployment.DeploymentGenerator.validate(DeploymentGenerator.java:102)
> 	at org.jboss.arquillian.container.test.impl.client.deployment.DeploymentGenerator.generateDeployment(DeploymentGenerator.java:84)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
> 	at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134)
> 	at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114)
> 	at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
> 	at org.jboss.arquillian.container.test.impl.client.ContainerEventController.execute(ContainerEventController.java:96)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
> 	at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:68)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> 	at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:54)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
> 	at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
> 	at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134)
> 	at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114)
> 	at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:80)
> 	at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:158)
> 	at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:290)
> 	at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:45)
> 	at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:175)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:123)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
> {code}
> So, what happened?
> The method org.jboss.arquillian.core.impl.loadable.ServiceRegistryLoader#onlyOne
> throw an exception:
> {code}
>    public <T> T onlyOne(Class<T> serviceClass)
>    {
>       Collection<T> all = all(serviceClass);
>       if(all.size() == 1)
>       {
>          return all.iterator().next();
>       }
>       if(all.size() > 1)
>       {
>          throw new IllegalStateException("Multiple service implementations found for " + serviceClass + ". " + toClassString(all)); // <================ GOOD
>       }
>       return null;
>    }
> {code}
> and the method org.jboss.arquillian.container.impl.client.container.ContainerRegistryCreator#createRegistry
> swept it under the covers:
> {code}   public void createRegistry(@Observes ArquillianDescriptor event)
>    {
>       ...
>       if(activeConfiguration == null && reg.getContainers().size() == 0)
>       {
>          try
>          {
>             DeployableContainer<?> deployableContainer = serviceLoader.onlyOne(DeployableContainer.class);
>             if(deployableContainer != null)
>             {
>                reg.create(new ContainerDefImpl("arquillian.xml").setContainerName("default"), serviceLoader);
>             }
>          } 
>          catch (Exception e) 
>          {
>             // ignore // <====================================================== BAD
>          }
>       }
>       // export
>       registry.set(reg);
>    }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the arquillian-issues mailing list