private Bundle getBundle(String bundleLocation, boolean isFactory) throws ResourceProcessorException { Bundle bundle = null; if (!isFactory) { // singleton configuration, no foreign bundles allowed, use source deployment package to find specified bundle if (bundleLocation.startsWith(LOCATION_PREFIX)) { DeploymentSession session = m_sessionRef.get(); bundle = session.getSourceDeploymentPackage().getBundle(bundleLocation.substring(LOCATION_PREFIX.length())); } } else { // factory configuration, foreign bundles allowed, use bundle context to find the specified bundle Bundle[] bundles = m_dm.getBundleContext().getBundles(); for (int i = 0; i < bundles.length; i++) { String location = bundles[i].getLocation(); if (bundleLocation.equals(location)) { bundle = bundles[i]; break; } } } return bundle; }
/** * Sets up the necessary environment for a deployment session. */ private void startSession(DeploymentSession session) { if (m_session != null) { throw new IllegalArgumentException("This resource processor is currently processing another deployment session, installing deploymentpackage" + m_session.getTargetDeploymentPackage().getName()); } m_session = session; m_toInstall = new ArrayList<>(); m_toRemove = new ArrayList<>(); String fromSource = session.getSourceDeploymentPackage().getName(); String fromTarget = session.getTargetDeploymentPackage().getName(); if (fromSource.equals("")) { m_deploymentPackageName = fromTarget; } else { m_deploymentPackageName = fromSource; } }