You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Vassilis Virvilis <v....@biovista.com> on 2011/04/19 14:38:31 UTC

Aegis bug: trying to send childs of generic types

Hi

I am using the cxf 2.3.6 (we haven't upgraded yet to 2.4.0) and we have the following exception on deploy (not in runtime)

ERROR 2011-04-19 12:24:13,900 http-8080-8: org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:220): Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'medline': Invocation of init method failed; nested exception is java.lang.NullPointerException
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
        at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:525)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1359)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
        at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500)
        at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:849)
        at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:351)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
        at org.apache.cxf.aegis.type.AbstractTypeCreator.isArray(AbstractTypeCreator.java:167)
        at org.apache.cxf.aegis.type.AbstractTypeCreator.createTypeForClass(AbstractTypeCreator.java:113)
        at org.apache.cxf.aegis.type.AbstractTypeCreator.createType(AbstractTypeCreator.java:390)
        at org.apache.cxf.aegis.type.basic.BeanTypeInfo.getType(BeanTypeInfo.java:192)
        at org.apache.cxf.aegis.type.basic.BeanType.getDependencies(BeanType.java:532)
        at org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDatabinding.java:394)
        at org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDatabinding.java:399)
        at org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDatabinding.java:399)
        at org.apache.cxf.aegis.databinding.AegisDatabinding.initializeMessage(AegisDatabinding.java:370)
        at org.apache.cxf.aegis.databinding.AegisDatabinding.initializeOperation(AegisDatabinding.java:276)
        at org.apache.cxf.aegis.databinding.AegisDatabinding.initialize(AegisDatabinding.java:239)
        at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
        at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:442)
        at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:505)
        at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:242)
        at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
        at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:148)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
        ... 45 more

The problem is when we try to send back classes with generics like the one below in the output. 

interface

	public Pair<Integer, Integer> getPair();

----------------------------------


public class Pair<T1, T2> {
    private T1 first;
    private T2 second;

    public Pair(T1 first, T2 second) {
        this.first = first;
        this.second = second;
    }

    public Pair() {
    }

    public T1 getFirst() {
        return first;
    }

    public void setFirst(T1 first) {
        this.first = first;
    }

    public T2 getSecond() {
        return second;
    }

    public void setSecond(T2 second) {
        this.second = second;
    }
    
    @Override
    public String toString() {
        return "First: " + first + ", Second: " + second;
    }
}


So we thought that aegis have some problems with generic types and we did

	public class IntegerPair extends Pair<Integer, Integer> {
		// more bean stuff
	}


in order to get a more concrete type but that failed with the exact same error.

In the same breadth 
	public class OurMap extends Map<Integer, Integer> {
	}
doesn't have this problem (at least on deploy)

IIRC this was working with 2.2.6 and I was wondering if this is a bug or intended behavior in the sense that aegis shouldn't allow this kind of use or is Map special?

Thanks in advance

	Vassilis Virvilis


Re: Aegis bug: trying to send childs of generic types

Posted by Vassilis Virvilis <v....@biovista.com>.
On Monday 16 May 2011, Benson Margulies wrote:
> Why not put the project that causes all the trouble onto github and
> point to it from the JIRA?


I think that is an overkill. We have our tests in our local subversion and we don't want to get involved with git right now. I have attached the eclipse project (7K) and I can attach the war if you want (25MB) but I think this is too much.

The too JIRAs are
https://issues.apache.org/jira/browse/CXF-3526
https://issues.apache.org/jira/browse/CXF-3527

and I have one more issue that I don't know if you would like me to publish it as a JIRA or it is expected behavior.

The problem is the following.
    // fail -- puts data into a hashmap instead of a SortedMap
    public Map<String, SortedMap<Integer, Integer>> testDirectComplexTreeMapResult();

I want to pass a SortedMap but Aegis always returns a HashMap. If this is not possible due to WSDL contraints (totally understandable and acceptable) an error or a warning message during deploy would be good to let me know that something is not right with the method instead of deploying and failing later with Cast exceptions in runtime.


Thanks

PS. please don't trim the CC list

Re: Aegis bug: trying to send childs of generic types

Posted by Benson Margulies <bi...@gmail.com>.
Why not put the project that causes all the trouble onto github and
point to it from the JIRA?

On Mon, May 16, 2011 at 10:46 AM, Vassilis Virvilis
<v....@biovista.com> wrote:
> On Wednesday 20 April 2011, Vassilis Virvilis wrote:
>
>> > That all said, an NPE is definitely not what should occur.   A better
>> > exception should be generated.    If you could create a small test case and
>> > attach to a JIRA, that would be great.
>> >
>> > Dan
>> >
>>
>> Ok I will file a jira in wednesday after easter holdays :-)
>>
>
> Ok the time has come and have small project with several of our tests that are failing in two different ways
>
> 1) One one deploy time with NULL pointer exception
> 2) when extending a Map where the value is a map
>
> I would like to submit a JIRA but what is the preferred way to do it.
>
> a) Multiple JIRA for different failures?
> b) war is 25 MB. Should I submit it to the JIRA?
> c) Can we simply post an eclipse project?
>
> I don't have a problem to share the test code we wrote for these tests.
>
> Thanks in advance
>
>        Vassilis Virvilis
>

Re: Aegis bug: trying to send childs of generic types

Posted by Vassilis Virvilis <v....@biovista.com>.
On Wednesday 20 April 2011, Vassilis Virvilis wrote:

> > That all said, an NPE is definitely not what should occur.   A better 
> > exception should be generated.    If you could create a small test case and 
> > attach to a JIRA, that would be great. 
> > 
> > Dan
> > 
> 
> Ok I will file a jira in wednesday after easter holdays :-)
> 

Ok the time has come and have small project with several of our tests that are failing in two different ways

1) One one deploy time with NULL pointer exception
2) when extending a Map where the value is a map

I would like to submit a JIRA but what is the preferred way to do it.

a) Multiple JIRA for different failures?
b) war is 25 MB. Should I submit it to the JIRA?
c) Can we simply post an eclipse project?

I don't have a problem to share the test code we wrote for these tests.

Thanks in advance

	Vassilis Virvilis

Re: Aegis bug: trying to send childs of generic types

Posted by Vassilis Virvilis <v....@biovista.com>.
On Tuesday 19 April 2011, Daniel Kulp wrote:
> On Tuesday 19 April 2011 8:38:31 AM Vassilis Virvilis wrote:
> > Hi
> > 
> > I am using the cxf 2.3.6 (we haven't upgraded yet to 2.4.0) and we have the
> > following exception on deploy (not in runtime)
> 
> There isn't a 2.3.6.   I assume 2.3.3?

Yes I meant 2.3.3. Sorry.

> In either case, if it worked with 2.2.x, I'm actually quite surprised and 
> would have been completely by accident.   For both JAXB and Aegis, the 
> interpretation of the generics is really just done for two cases (well, one 
> case for JAXB): 
> 
> 1) List<..>  - both JAXB and Aegis will handle this to determine the "type" of 
> the list.    For the most part, it's treated the same as an []  of the type.
> 
> 2) Map<.. , ..> - Aegis will also look at this and create a pseudo map type 
> for it with key/value entries.   

So lists and maps are special.

> 
> That's  pretty much it at this point.   It MAY have worked with 2.2.x as I 
> think 2.2.x really didn't look at any of the generics much at all.   For the 
> most part, it would have seen the "getFirst"/"setFirst" methods on the Pair 
> and just treated them as the "Object" version and mapped them to xsd:any, 
> which is kind of a crappy schema, but it may have worked for you.   Again, 
> purely by accident and not by design. 

In 2.2.6 we had some heavy generic servlets that were working for java2java but they were failing
for java to js. I have filed a JIRA https://issues.apache.org/jira/browse/CXF-1758 for this but since we were just experimenting with js it was a toy problem. I think this confirms the works by accident theory.

> That all said, an NPE is definitely not what should occur.   A better 
> exception should be generated.    If you could create a small test case and 
> attach to a JIRA, that would be great. 
> 
> Dan
> 

Ok I will file a jira in wednesday after easter holdays :-)

Thanks for the detailed and helpful answer. It is much appreciated.


   Vassilis

Re: Aegis bug: trying to send childs of generic types

Posted by Daniel Kulp <dk...@apache.org>.
On Tuesday 19 April 2011 8:38:31 AM Vassilis Virvilis wrote:
> Hi
> 
> I am using the cxf 2.3.6 (we haven't upgraded yet to 2.4.0) and we have the
> following exception on deploy (not in runtime)

There isn't a 2.3.6.   I assume 2.3.3?

In either case, if it worked with 2.2.x, I'm actually quite surprised and 
would have been completely by accident.   For both JAXB and Aegis, the 
interpretation of the generics is really just done for two cases (well, one 
case for JAXB): 

1) List<..>  - both JAXB and Aegis will handle this to determine the "type" of 
the list.    For the most part, it's treated the same as an []  of the type.

2) Map<.. , ..> - Aegis will also look at this and create a pseudo map type 
for it with key/value entries.   

That's  pretty much it at this point.   It MAY have worked with 2.2.x as I 
think 2.2.x really didn't look at any of the generics much at all.   For the 
most part, it would have seen the "getFirst"/"setFirst" methods on the Pair 
and just treated them as the "Object" version and mapped them to xsd:any, 
which is kind of a crappy schema, but it may have worked for you.   Again, 
purely by accident and not by design. 

That all said, an NPE is definitely not what should occur.   A better 
exception should be generated.    If you could create a small test case and 
attach to a JIRA, that would be great. 

Dan


> 
> ERROR 2011-04-19 12:24:13,900 http-8080-8:
> org.springframework.web.context.ContextLoader.initWebApplicationContext(Co
> ntextLoader.java:220): Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'medline': Invocation of init method failed; nested
> exception is java.lang.NullPointerException at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
> ry.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
> ry.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
> ry.createBean(AbstractAutowireCapableBeanFactory.java:456) at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(
> AbstractBeanFactory.java:291) at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.get
> Singleton(DefaultSingletonBeanRegistry.java:222) at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Ab
> stractBeanFactory.java:288) at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abst
> ractBeanFactory.java:190) at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preIn
> stantiateSingletons(DefaultListableBeanFactory.java:580) at
> org.springframework.context.support.AbstractApplicationContext.finishBeanF
> actoryInitialization(AbstractApplicationContext.java:895) at
> org.springframework.context.support.AbstractApplicationContext.refresh(Abs
> tractApplicationContext.java:425) at
> org.springframework.web.context.ContextLoader.createWebApplicationContext(
> ContextLoader.java:276) at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(Co
> ntextLoader.java:197) at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(C
> ontextLoaderListener.java:47) at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.jav
> a:4135) at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
> at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java
> :791) at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546) at
> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905) at
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:525) at
> org.apache.catalina.startup.HostConfig.check(HostConfig.java:1359) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> 39) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
> pl.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
>         at
> org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:2
> 97) at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanS
> erverInterceptor.java:836) at
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) at
> org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500)
> at
> org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:849)
> at
> org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:351)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
> onFilterChain.java:290) at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
> Chain.java:206) at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.
> java:233) at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.
> java:191) at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBa
> se.java:563) at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:1
> 27) at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:1
> 02) at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.ja
> va:109) at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298
> ) at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Ht
> tp11Protocol.java:588) at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at
> java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.NullPointerException
>         at
> org.apache.cxf.aegis.type.AbstractTypeCreator.isArray(AbstractTypeCreator.
> java:167) at
> org.apache.cxf.aegis.type.AbstractTypeCreator.createTypeForClass(AbstractT
> ypeCreator.java:113) at
> org.apache.cxf.aegis.type.AbstractTypeCreator.createType(AbstractTypeCreat
> or.java:390) at
> org.apache.cxf.aegis.type.basic.BeanTypeInfo.getType(BeanTypeInfo.java:192
> ) at
> org.apache.cxf.aegis.type.basic.BeanType.getDependencies(BeanType.java:532
> ) at
> org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDat
> abinding.java:394) at
> org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDat
> abinding.java:399) at
> org.apache.cxf.aegis.databinding.AegisDatabinding.addDependencies(AegisDat
> abinding.java:399) at
> org.apache.cxf.aegis.databinding.AegisDatabinding.initializeMessage(AegisD
> atabinding.java:370) at
> org.apache.cxf.aegis.databinding.AegisDatabinding.initializeOperation(Aegi
> sDatabinding.java:276) at
> org.apache.cxf.aegis.databinding.AegisDatabinding.initialize(AegisDatabind
> ing.java:239) at
> org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBi
> ndings(AbstractServiceFactoryBean.java:86) at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFr
> omClass(ReflectionServiceFactoryBean.java:442) at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServ
> iceModel(ReflectionServiceFactoryBean.java:505) at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(Reflect
> ionServiceFactoryBean.java:242) at
> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(Ab
> stractWSDLBasedEndpointFactory.java:101) at
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:14
> 8) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> 39) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
> pl.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
> ry.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544) at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
> ry.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485) at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
> ry.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) ... 45 more
> 
> The problem is when we try to send back classes with generics like the one
> below in the output.
> 
> interface
> 
> 	public Pair<Integer, Integer> getPair();
> 
> ----------------------------------
> 
> 
> public class Pair<T1, T2> {
>     private T1 first;
>     private T2 second;
> 
>     public Pair(T1 first, T2 second) {
>         this.first = first;
>         this.second = second;
>     }
> 
>     public Pair() {
>     }
> 
>     public T1 getFirst() {
>         return first;
>     }
> 
>     public void setFirst(T1 first) {
>         this.first = first;
>     }
> 
>     public T2 getSecond() {
>         return second;
>     }
> 
>     public void setSecond(T2 second) {
>         this.second = second;
>     }
> 
>     @Override
>     public String toString() {
>         return "First: " + first + ", Second: " + second;
>     }
> }
> 
> 
> So we thought that aegis have some problems with generic types and we did
> 
> 	public class IntegerPair extends Pair<Integer, Integer> {
> 		// more bean stuff
> 	}
> 
> 
> in order to get a more concrete type but that failed with the exact same
> error.
> 
> In the same breadth
> 	public class OurMap extends Map<Integer, Integer> {
> 	}
> doesn't have this problem (at least on deploy)
> 
> IIRC this was working with 2.2.6 and I was wondering if this is a bug or
> intended behavior in the sense that aegis shouldn't allow this kind of use
> or is Map special?
> 
> Thanks in advance
> 
> 	Vassilis Virvilis

-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog
Talend - http://www.talend.com