[ https://issues.apache.org/jira/browse/CXF-4711?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thijs Elferink updated CXF-4711: -------------------------------- Description: Upgrading from 2.7.0. to 2.7.1 uncovers a stackoverflow in JAXBContextInitializer.addType when using a recursive type definition like {code} public static abstract class AddressEntity<T extends AddressEntity<T>> { public abstract Addressable<T> getEntity(); } public interface Addressable<T extends AddressEntity<T>>{} {code} {code} java.lang.StackOverflowError at java.lang.Class.getDeclaredConstructor(Class.java:2001) at org.apache.cxf.common.util.ReflectionUtil$2.run(ReflectionUtil.java:67) at org.apache.cxf.common.util.ReflectionUtil$2.run(ReflectionUtil.java:64) at java.security.AccessController.doPrivileged(Native Method) at org.apache.cxf.common.util.ReflectionUtil.getDeclaredConstructor(ReflectionUtil.java:64) at org.apache.cxf.common.jaxb.JAXBUtils.getValidClass(JAXBUtils.java:518) at org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:274) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:222) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:225) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:260) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:227) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:260) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:227) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:260) etc.... {code} was: Upgrading from 2.7.0. to 2.7.1 uncovers a stackoverflow in JAXBContextInitializer.addType when using a recursive type definition like public static abstract class AddressEntity<T extends AddressEntity<T>> { public abstract Addressable<T> getEntity(); } public interface Addressable<T extends AddressEntity<T>>{} java.lang.StackOverflowError at java.lang.Class.getDeclaredConstructor(Class.java:2001) at org.apache.cxf.common.util.ReflectionUtil$2.run(ReflectionUtil.java:67) at org.apache.cxf.common.util.ReflectionUtil$2.run(ReflectionUtil.java:64) at java.security.AccessController.doPrivileged(Native Method) at org.apache.cxf.common.util.ReflectionUtil.getDeclaredConstructor(ReflectionUtil.java:64) at org.apache.cxf.common.jaxb.JAXBUtils.getValidClass(JAXBUtils.java:518) at org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:274) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:222) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:225) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:260) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:227) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:260) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:227) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) at org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:260) etc.... > JAXBContextInitializer addType stopped handling recursive types > (StackOverflow) > -------------------------------------------------------------------------------- > > Key: CXF-4711 > URL: https://issues.apache.org/jira/browse/CXF-4711 > Project: CXF > Issue Type: Bug > Components: JAXB Databinding > Affects Versions: 2.7.1 > Reporter: Thijs Elferink > Priority: Blocker > Labels: CXF, Databinding, JAXB > Fix For: NeedMoreInfo > > > Upgrading from 2.7.0. to 2.7.1 uncovers a stackoverflow in > JAXBContextInitializer.addType when using a recursive type definition like > {code} > public static abstract class AddressEntity<T extends AddressEntity<T>> { > public abstract Addressable<T> getEntity(); > } > > public interface Addressable<T extends AddressEntity<T>>{} > {code} > {code} > java.lang.StackOverflowError > at java.lang.Class.getDeclaredConstructor(Class.java:2001) > at > org.apache.cxf.common.util.ReflectionUtil$2.run(ReflectionUtil.java:67) > at > org.apache.cxf.common.util.ReflectionUtil$2.run(ReflectionUtil.java:64) > at java.security.AccessController.doPrivileged(Native Method) > at > org.apache.cxf.common.util.ReflectionUtil.getDeclaredConstructor(ReflectionUtil.java:64) > at > org.apache.cxf.common.jaxb.JAXBUtils.getValidClass(JAXBUtils.java:518) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:274) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:222) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:225) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:260) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:227) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:260) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:227) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:212) > at > org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:260) > etc.... > {code} -- 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