[ 
https://issues.apache.org/jira/browse/ARIES-1147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13870883#comment-13870883
 ] 

John Ross commented on ARIES-1147:
----------------------------------

I suspect the right fix here, or at least a reasonable interim one, would be to 
catch the exception thrown by Subsystem URI in the Location constructor and 
treat it as an opaque location string as the final else clause in the nested if 
does (starting at line 67 in Location).

Clients who provided their own syntactically incorrect subsystem URI without an 
input stream would see an installation failure at the point where the location 
was used to generate an input stream.

> Installing a subsystems as a transitive dependency via a Repository service 
> fails
> ---------------------------------------------------------------------------------
>
>                 Key: ARIES-1147
>                 URL: https://issues.apache.org/jira/browse/ARIES-1147
>             Project: Aries
>          Issue Type: Bug
>          Components: Subsystem
>    Affects Versions: 1.0
>            Reporter: David Bosschaert
>            Assignee: David Bosschaert
>
> When installing a subsystem that contains a bundle which has a dependency 
> that is fulfilled by another subsystem that is available via a registered 
> Repository Service, an error occurs.
> The exception occurs when constructing a SubsystemUri instance with an uri 
> value of: 
> {{subsystem://?Subsystem-SymbolicName=org.osgi.service.subsystem.root&Subsystem-Version=1.0.0!/[email protected]}}
> The full exception is:
> {code}java.lang.IllegalArgumentException: invalid version 
> "1.0.0!/[email protected]": non-numeric "0!/cdi-subsystem@0"
>       at org.osgi.framework.Version.parseInt(Version.java:170)
>       at org.osgi.framework.Version.<init>(Version.java:134)
>       at org.osgi.framework.Version.parseVersion(Version.java:233)
>       at 
> org.apache.aries.subsystem.core.internal.SubsystemUri.<init>(SubsystemUri.java:65)
>       at 
> org.apache.aries.subsystem.core.internal.Location.<init>(Location.java:58)
>       at 
> org.apache.aries.subsystem.core.internal.RawSubsystemResource.<init>(RawSubsystemResource.java:114)
>       at 
> org.apache.aries.subsystem.core.internal.SubsystemResourceInstaller.installRepositoryContent(SubsystemResourceInstaller.java:149)
>       at 
> org.apache.aries.subsystem.core.internal.SubsystemResourceInstaller.install(SubsystemResourceInstaller.java:36)
>       at 
> org.apache.aries.subsystem.core.internal.SubsystemResourceInstaller.installAriesSubsystem(SubsystemResourceInstaller.java:98)
>       at 
> org.apache.aries.subsystem.core.internal.SubsystemResourceInstaller.install(SubsystemResourceInstaller.java:38)
>       at 
> org.apache.aries.subsystem.core.internal.InstallAction.run(InstallAction.java:75)
>       at 
> org.apache.aries.subsystem.core.internal.InstallAction.run(InstallAction.java:31)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at 
> org.apache.aries.subsystem.core.internal.BasicSubsystem.install(BasicSubsystem.java:621)
>       at 
> org.apache.aries.subsystem.core.internal.BasicSubsystem.install(BasicSubsystem.java:259)
>       at 
> org.apache.aries.subsystem.core.internal.BasicSubsystem.install(BasicSubsystem.java:63)
>       at 
> org.coderthoughts.subsystems.gogo.Activator.install(Activator.java:29)
>       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:606)
>       at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)
>       at 
> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
>       at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
>       at 
> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
>       at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
>       at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
>       at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
>       at 
> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
>       at org.apache.felix.gogo.shell.Console.run(Console.java:62)
>       at org.apache.felix.gogo.shell.Shell.console(Shell.java:203)
>       at org.apache.felix.gogo.shell.Shell.gosh(Shell.java:128)
>       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:606)
>       at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)
>       at 
> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
>       at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
>       at 
> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
>       at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
>       at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
>       at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
>       at 
> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
>       at org.apache.felix.gogo.shell.Activator.run(Activator.java:75)
>       at java.lang.Thread.run(Thread.java:744)
> Caused by: java.lang.NumberFormatException: For input string: 
> "0!/cdi-subsystem@0"
>       at 
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
>       at java.lang.Integer.parseInt(Integer.java:492)
>       at java.lang.Integer.parseInt(Integer.java:527)
>       at org.osgi.framework.Version.parseInt(Version.java:168)
>       ... 45 more{code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to