[arquillian-issues] [JBoss JIRA] (ARQGRA-225) ClassCastException for multiple abstract classes

Juraj Húska (JIRA) jira-events at lists.jboss.org
Tue Dec 11 11:40:17 EST 2012


    [ https://issues.jboss.org/browse/ARQGRA-225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12740685#comment-12740685 ] 

Juraj Húska commented on ARQGRA-225:
------------------------------------

The actual solution however does not work correctly with the use case when all actual implementations are declared in one class. That is why IMHO we should support in this release at least the basic use case (it needs some small improvements, I can create another issue for it) and to solve the whole issue correctly in future releases:

{code}
AbstractTest<T> {
  @Page
  T page;
}
{code}

{code}
SpecificTest extends AbstractTest<Implementation>
{code}

WDYT Lukas ?

In other words, the actual type parameters are declared in the same hierarchy level.
                
> ClassCastException for multiple abstract classes
> ------------------------------------------------
>
>                 Key: ARQGRA-225
>                 URL: https://issues.jboss.org/browse/ARQGRA-225
>             Project: Arquillian Graphene
>          Issue Type: Bug
>    Affects Versions: 2.0.0.Alpha2
>            Reporter: Pavol Pitonak
>            Assignee: Juraj Húska
>
> Consider this test classes structure:
> {code:java}
> public class TestHCommandButton extends AbstractAjaxTest
> public abstract class AbstractAjaxTest extends AbstractWebDriverTest<AjaxPage>
> public abstract class AbstractWebDriverTest<P extends MetamerPage> extends AbstractMetamerTest
> public class AjaxPage extends MetamerPage
> {code}
> AbstractWebDriverTest contains a property page of type defined in AbstractAjaxTest
> {code:java}
> @Page
> protected P page;
> {code}
> When the tests are launched, a ClassCastException is thrown:
> {quote}
> org.jboss.arquillian.graphene.enricher.exception.PageObjectInitializationException: 
>         at org.jboss.arquillian.graphene.enricher.PageObjectEnricher.enrich(PageObjectEnricher.java:81)
>         at org.jboss.arquillian.graphene.enricher.GrapheneEnricher.enrich(GrapheneEnricher.java:49)
>         at org.jboss.arquillian.test.impl.TestInstanceEnricher.enrich(TestInstanceEnricher.java:52)
>         at org.jboss.arquillian.container.test.impl.ClientTestInstanceEnricher.enrich(ClientTestInstanceEnricher.java:51)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
>         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.container.test.impl.client.ContainerEventController.createContext(ContainerEventController.java:142)
>         at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createBeforeContext(ContainerEventController.java:124)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
>         at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
>         at org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:89)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
>         at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
>         at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:75)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
>         at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
>         at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:60)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
>         at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
>         at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)
>         at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)
>         at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.before(EventTestRunnerAdaptor.java:95)
>         at org.jboss.arquillian.testng.Arquillian.arquillianBeforeTest(Arquillian.java:130)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
>         at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:525)
>         at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:202)
>         at org.testng.internal.Invoker.invokeMethod(Invoker.java:613)
>         at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:842)
>         at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1166)
>         at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
>         at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
>         at org.testng.TestRunner.runWorkers(TestRunner.java:1178)
>         at org.testng.TestRunner.privateRun(TestRunner.java:757)
>         at org.testng.TestRunner.run(TestRunner.java:608)
>         at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
>         at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
>         at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
>         at org.testng.SuiteRunner.run(SuiteRunner.java:240)
>         at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
>         at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
>         at org.testng.TestNG.runSuitesSequentially(TestNG.java:1158)
>         at org.testng.TestNG.runSuitesLocally(TestNG.java:1083)
>         at org.testng.TestNG.run(TestNG.java:999)
>         at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:77)
>         at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:110)
>         at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:106)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
>         at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
>         at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
>         at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
>         at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
> Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
>         at org.jboss.arquillian.graphene.enricher.AbstractSearchContextEnricher.getSuperClassActualTypeArguments(AbstractSearchContextEnricher.java:220)
>         at org.jboss.arquillian.graphene.enricher.AbstractSearchContextEnricher.getActualType(AbstractSearchContextEnricher.java:90)
>         at org.jboss.arquillian.graphene.enricher.PageObjectEnricher.enrich(PageObjectEnricher.java:56)
>         ... 79 more
> Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
>         at org.jboss.arquillian.graphene.enricher.AbstractSearchContextEnricher.getSuperClassActualTypeArguments(AbstractSearchContextEnricher.java:220)
>         at org.jboss.arquillian.graphene.enricher.AbstractSearchContextEnricher.getActualType(AbstractSearchContextEnricher.java:90)
>         at org.jboss.arquillian.graphene.enricher.PageObjectEnricher.enrich(PageObjectEnricher.java:56)
>         ... 79 more
> {quote}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the arquillian-issues mailing list