You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "Amichai Rothman (JIRA)" <ji...@apache.org> on 2019/03/28 10:58:00 UTC

[jira] [Updated] (ARIES-1906) Regression - export of superclass interface fails

     [ https://issues.apache.org/jira/browse/ARIES-1906?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Amichai Rothman updated ARIES-1906:
-----------------------------------
    Description: 
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). 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) [?:?]

 

  was:
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 [[ARIES-1776] Fixes for tck tests with SecurityManager|https://github.com/apache/aries-rsa/commit/75448368d0efecbef48464bbf10791986e20c4b0#diff-e09b247ba00188e9d2efc964f8271da6]. 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). 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) [?:?]

 


> 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.14.0
>            Reporter: Amichai Rothman
>            Priority: Major
>
> 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). 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)