You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "John Ross (JIRA)" <ji...@apache.org> on 2016/05/05 12:35:13 UTC
[jira] [Updated] (ARIES-1225) NPE thrown by GetBundleContextAction
[ https://issues.apache.org/jira/browse/ARIES-1225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Ross updated ARIES-1225:
-----------------------------
Fix Version/s: subsystem-core-1.2.0
> NPE thrown by GetBundleContextAction
> -------------------------------------
>
> Key: ARIES-1225
> URL: https://issues.apache.org/jira/browse/ARIES-1225
> Project: Aries
> Issue Type: Improvement
> Components: Subsystem
> Affects Versions: subsystem-2.0.6, subsystem-2.0.8
> Reporter: Adam Pilkington
> Assignee: John Ross
> Priority: Trivial
> Fix For: subsystem-core-1.2.0
>
> Original Estimate: 10m
> Remaining Estimate: 10m
>
> Hi, I'm currently investigating a NPE thrown by GetBundleContextAction - stack trace is below.
> java.lang.NullPointerException
> at org.apache.aries.subsystem.core.internal.GetBundleContextAction.run(GetBundleContextAction.java:35)
> at org.apache.aries.subsystem.core.internal.GetBundleContextAction.run(GetBundleContextAction.java:22)
> at java.security.AccessController.doPrivileged(AccessController.java:273)
> at org.apache.aries.subsystem.core.internal.BasicSubsystem.getBundleContext(BasicSubsystem.java:186)
> <snip>
>
> I don't know what has caused this, but looking at GetBundleContextAction, line 35 contains nested method invocations more than one of which can return null. I'd like to submit/suggest the following patch which just splits this line out and adds some basic error checking.
> Index: GetBundleContextAction.java
> ===================================================================
> --- GetBundleContextAction.java (revision 1607078)
> +++ GetBundleContextAction.java (working copy)
> @@ -16,6 +16,8 @@
> import java.security.PrivilegedAction;
> import java.util.EnumSet;
>
> +import org.eclipse.equinox.region.Region;
> +import org.osgi.framework.Bundle;
> import org.osgi.framework.BundleContext;
> import org.osgi.service.subsystem.Subsystem.State;
>
> @@ -26,15 +28,23 @@
> this.subsystem = subsystem;
> }
>
> - @Override
> public BundleContext run() {
> if (EnumSet.of(State.INSTALL_FAILED, State.UNINSTALLED).contains(
> subsystem.getState()))
> return null;
> BasicSubsystem subsystem = Utils.findScopedSubsystemInRegion(this.subsystem);
> - return subsystem.getRegion().getBundle(
> - RegionContextBundleHelper.SYMBOLICNAME_PREFIX
> - + subsystem.getSubsystemId(),
> - RegionContextBundleHelper.VERSION).getBundleContext();
> +
> + Region region = subsystem.getRegion();
> + if(region == null) {
> + //can return null as under the covers it calls RegionDigraph.getRegion(name)
> + return null;
> + }
> + Bundle bundle = region.getBundle(RegionContextBundleHelper.SYMBOLICNAME_PREFIX
> + + subsystem.getSubsystemId(), RegionContextBundleHelper.VERSION);
> + if(bundle == null) {
> + //null if no such bundle
> + return null;
> + }
> + return bundle.getBundleContext();
> }
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)