Conditional-Package PACKAGE-SPEC (‘,’ PACKAGE-SPEC) *
Description: /** * Answer extra packages. In this case we implement conditional package. Any */ @Override protected Jar getExtra() throws Exception { Parameters conditionals = getParameters(CONDITIONAL_PACKAGE); conditionals.putAll(getParameters(CONDITIONALPACKAGE)); if (conditionals.isEmpty()) return null; trace("do Conditional Package %s", conditionals); Instructions instructions = new Instructions(conditionals);
Date: 2019-10-12T20:27:56-04:00

- Supported by OSGi enRoute

- # Conditional-Package PACKAGE-SPEC (',' PACKAGE-SPEC) *

      /**
       * Answer extra packages. In this case we implement conditional package. Any
       */
      @Override
      protected Jar getExtra() throws Exception {
      	Parameters conditionals = getParameters(CONDITIONAL_PACKAGE);
      	conditionals.putAll(getParameters(CONDITIONALPACKAGE));
      	if (conditionals.isEmpty())
      		return null;
      	trace("do Conditional Package %s", conditionals);
      	Instructions instructions = new Instructions(conditionals);

      	Collection<PackageRef> referred = instructions.select(getReferred().keySet(), false);
      	referred.removeAll(getContained().keySet());

      	Jar jar = new Jar("conditional-import");
      	addClose(jar);
      	for (PackageRef pref : referred) {
      		for (Jar cpe : getClasspath()) {
      			Map<String,Resource> map = cpe.getDirectories().get(pref.getPath());
      			if (map != null) {
      				copy(jar, cpe, pref.getPath(), false);
      				// Now use copy so that bnd.info is processed, next line
      				// should be
      				// removed in the future TODO
      				// jar.addDirectory(map, false);
      				break;
      			}
      		}
      	}
      	if (jar.getDirectories().size() == 0) {
      		trace("extra dirs %s", jar.getDirectories());
      		return null;
      	}
      	return jar;
      }