[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:56:17 EST 2012


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

Juraj Húska edited comment on ARQGRA-225 at 12/11/12 11:55 AM:
---------------------------------------------------------------

The first proposed solution does not solve all possible options. This one for example can be a little bit tricky (as Honza pointed out):

{code:title=Tricky use case}
AbstractClass<T,E> {
   @Page
   T page1;
   @Page
   E page2;
}
{code}

{code}
MoreAbstractClass<E> extends AbstractClass<Implementation1, E>
{code}

{code}
EvenMoreAbstractClass extends MoreAbstractClass<Implementation2>
{code}

{code}
ConcreteTest extends EvenMoreAbstractClass
{code}

I need to rework the recursive searching for actual type parameters.
                
      was (Author: jhuska):
    The first proposed solution does not solve all possible options. This one for example can be a little bit tricky (as Honza pointed out):

{code}
AbstractClass<T,E> {
   @Page
   T page1;
   @Page
   E page2;
}
{code}

{code}
MoreAbstractClass<E> extends AbstractClass<Implementation1, E>
{code}

{code}
EvenMoreAbstractClass extends MoreAbstractClass<Implementation2>
{code}

{code}
ConcreteTest extends EvenMoreAbstractClass
{code}

I need to rework the recursive searching for actual type parameters.
                  
> 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