[ https://issues.apache.org/jira/browse/ARIES-1906?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christian Schneider resolved ARIES-1906. ---------------------------------------- Resolution: Fixed Assignee: Christian Schneider Fix Version/s: rsa-1.14.0 > Regression - export of superclass interface fails > ------------------------------------------------- > > Key: ARIES-1906 > URL: https://issues.apache.org/jira/browse/ARIES-1906 > Project: Aries > Issue Type: Bug > Components: Remote Service Admin > Affects Versions: rsa-1.12.0, rsa-1.13.0, rsa-1.14.0 > Reporter: Amichai Rothman > Assignee: Christian Schneider > Priority: Major > Fix For: rsa-1.14.0 > > Time Spent: 20m > Remaining Estimate: 0h > > When exporting a service using an interface that is declared in the service > superclass rather than directly by the class, the export fails with the > exception stack trace below. > From a quick look it seems like this got broken in the commit for ARIES-1776. > The getInterfaces method implementation changed, I'm not sure if it's related > to the stated fix but the new implementation changes the behavior - it checks > the service getClass().getInterfaces() but does not traverse the superclasses > as well. Also, it silently ignores interfaces that are not found rather than > throwing the declared ClassNotFoundException. Also it only checks the service > interfaces whereas the previous implementation loaded the interface classes > regardless (this may be an improvement, dunno). Also the order of returned > interfaces changed, which is significant as the line where the exception > below is thrown shows. There may be other differences I didn't think of... > unfortunately there are no tests to catch any of these. > > java.lang.ArrayIndexOutOfBoundsException: 0 > at > org.apache.cxf.dosgi.dsw.handlers.ws.WsProvider.exportService(WsProvider.java:164) > ~[?:?] > at > org.apache.aries.rsa.core.RemoteServiceAdminCore$3.run(RemoteServiceAdminCore.java:236) > ~[?:?] > at > org.apache.aries.rsa.core.RemoteServiceAdminCore$3.run(RemoteServiceAdminCore.java:234) > ~[?:?] > at java.security.AccessController.doPrivileged(Native Method) ~[?:?] > at > org.apache.aries.rsa.core.RemoteServiceAdminCore.exportService(RemoteServiceAdminCore.java:234) > ~[?:?] > at > org.apache.aries.rsa.core.RemoteServiceAdminCore.exportService(RemoteServiceAdminCore.java:135) > ~[?:?] > at > org.apache.aries.rsa.core.RemoteServiceAdminInstance.exportService(RemoteServiceAdminInstance.java:55) > ~[?:?] > at > org.apache.aries.rsa.core.RemoteServiceAdminInstance.exportService(RemoteServiceAdminInstance.java:39) > ~[?:?] > at > org.apache.aries.rsa.topologymanager.exporter.TopologyManagerExport.exportService(TopologyManagerExport.java:186) > [145:org.apache.aries.rsa.topology-manager:1.14.0.SNAPSHOT] > at > org.apache.aries.rsa.topologymanager.exporter.TopologyManagerExport.doExport(TopologyManagerExport.java:169) > [145:org.apache.aries.rsa.topology-manager:1.14.0.SNAPSHOT] > at > org.apache.aries.rsa.topologymanager.exporter.TopologyManagerExport.access$000(TopologyManagerExport.java:58) > [145:org.apache.aries.rsa.topology-manager:1.14.0.SNAPSHOT] > at > org.apache.aries.rsa.topologymanager.exporter.TopologyManagerExport$1.run(TopologyManagerExport.java:152) > [145:org.apache.aries.rsa.topology-manager:1.14.0.SNAPSHOT] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > [?:?] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > [?:?] > at java.lang.Thread.run(Thread.java:748) [?:?] > -- This message was sent by Atlassian JIRA (v7.6.3#76005)