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)