exceptionText = Msg.BUNDLE_UNINSTALLED_EXCEPTION;
exceptionText = NLS.bind(Msg.BUNDLE_UNINSTALLED_EXCEPTION, ((AbstractBundle) bundle).getBundleData().getLocation());
	public void setBundleStartLevel(org.osgi.framework.Bundle bundle, int newSL) {		String exceptionText = null;		if (bundle.getBundleId() == 0) { // system bundle has id=0			exceptionText = Msg.STARTLEVEL_CANT_CHANGE_SYSTEMBUNDLE_STARTLEVEL; 		} else if (bundle.getState() == AbstractBundle.UNINSTALLED) {			exceptionText = Msg.BUNDLE_UNINSTALLED_EXCEPTION; 		} else if (newSL <= 0) {			exceptionText = NLS.bind(Msg.STARTLEVEL_EXCEPTION_INVALID_REQUESTED_STARTLEVEL, "" + newSL); //$NON-NLS-1$ 		}		if (exceptionText != null)			throw new IllegalArgumentException(exceptionText);		// first check the permission of the caller		framework.checkAdminPermission(bundle, AdminPermission.EXECUTE);		try {			// if the bundle's startlevel is not already at the requested startlevel			if (newSL != ((org.eclipse.osgi.framework.internal.core.AbstractBundle) bundle).getStartLevel()) {				final AbstractBundle b = (AbstractBundle) bundle;				b.getBundleData().setStartLevel(newSL);				try {					AccessController.doPrivileged(new PrivilegedExceptionAction() {						public Object run() throws Exception {							b.getBundleData().save();							return null;						}					});				} catch (PrivilegedActionException e) {					if (e.getException() instanceof IOException) {						throw (IOException) e.getException();					}					throw (RuntimeException) e.getException();				}				// handle starting or stopping the bundle asynchronously				issueEvent(new StartLevelEvent(StartLevelEvent.CHANGE_BUNDLE_SL, newSL, (AbstractBundle) bundle));			}		} catch (IOException e) {			framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundle, e);		}	}