public static void mergeEnvironments(Environment environment, Environment additionalEnvironment) { if (additionalEnvironment != null) { //TODO merge configIds?? if (environment.getConfigId() == null) { environment.setConfigId(additionalEnvironment.getConfigId()); } environment.addDependencies(additionalEnvironment.getDependencies()); environment.addToBundleClassPath(additionalEnvironment.getBundleClassPath()); environment.addImportPackages(additionalEnvironment.getImportPackages()); environment.addExportPackages(additionalEnvironment.getExportPackages()); environment.addRequireBundles(additionalEnvironment.getRequireBundles()); environment.addDynamicImportPackages(additionalEnvironment.getDynamicImportPackages()); if (environment.getBundleActivator() == null && additionalEnvironment.getBundleActivator() != null) { environment.setBundleActivator(additionalEnvironment.getBundleActivator()); } environment.setSuppressDefaultEnvironment(environment.isSuppressDefaultEnvironment() || additionalEnvironment.isSuppressDefaultEnvironment()); ClassLoadingRules classLoadingRules = environment.getClassLoadingRules(); ClassLoadingRules additionalClassLoadingRules = additionalEnvironment.getClassLoadingRules(); classLoadingRules.merge(additionalClassLoadingRules); } }
protected Environment buildEnvironment(ConfigurationData configurationData) { Environment environment = new Environment(defaultEnvironment); environment.setConfigId(configurationData.getId()); return environment; }
public void addDependencies(Collection dependencies) { for (Iterator iterator = dependencies.iterator(); iterator.hasNext();) { // make sure they are all dependency objects... generics would be sooooo nice Dependency dependency = (Dependency) iterator.next(); addDependency(dependency); } }
public Environment(Environment environment) { this.configId = environment.getConfigId(); this.dependencies.addAll(environment.dependencies); this.hiddenClasses.addAll(environment.getHiddenClasses()); this.nonOverrideableClasses.addAll(environment.getNonOverrideableClasses()); this.inverseClassLoading = environment.isInverseClassLoading(); this.suppressDefaultEnvironment = environment.isSuppressDefaultEnvironment(); }
public Artifact getId() { return environment.getConfigId(); }
public static Environment buildEnvironment(EnvironmentType environmentType, Environment defaultEnvironment) { Environment environment = new Environment(); if (environmentType != null) { if (environmentType.getModuleId() != null) { environment.setConfigId(toArtifact(environmentType.getModuleId(), null)); for (DependencyType dependencyType : environmentType.getDependencies().getDependency()) { Dependency dependency = toDependency(dependencyType); environment.addDependency(dependency); environment.setBundleActivator(environmentType.getBundleActivator()); environment.addToBundleClassPath(environmentType.getBundleClassPath()); environment.addRequireBundles(environmentType.getRequireBundle()); environment.addExportPackages(environmentType.getExportPackage()); environment.addImportPackages(environmentType.getImportPackage()); environment.addDynamicImportPackages(environmentType.getDynamicImportPackage()); environment.setSuppressDefaultEnvironment(environmentType.isSuppressDefaultEnvironment()); ClassLoadingRules classLoadingRules = environment.getClassLoadingRules(); classLoadingRules.setInverseClassLoading(environmentType.isInverseClassloading()); if (!environment.isSuppressDefaultEnvironment()) { EnvironmentBuilder.mergeEnvironments(environment, defaultEnvironment);
public static EnvironmentType buildEnvironmentType(Environment environment) { EnvironmentType environmentType = EnvironmentType.Factory.newInstance(); if (environment.getConfigId() != null) { ArtifactType configId = toArtifactType(environment.getConfigId()); environmentType.setModuleId(configId); List<DependencyType> dependencies = toDependencyTypes(environment.getDependencies()); DependencyType[] dependencyTypes = dependencies.toArray(new DependencyType[dependencies.size()]); DependenciesType dependenciesType = environmentType.addNewDependencies(); dependenciesType.setDependencyArray(dependencyTypes); if (environment.getBundleActivator() != null) { environmentType.setBundleActivator(environment.getBundleActivator()); for (String bundleClassPath: environment.getBundleClassPath()) { environmentType.addBundleClassPath(bundleClassPath); for (String importPackage: environment.getImportPackages()) { environmentType.addImportPackage(importPackage); for (String exportPackage: environment.getExportPackages()) { environmentType.addExportPackage(exportPackage); for (String requireBundle : environment.getRequireBundles()) { environmentType.addRequireBundle(requireBundle); for (String dynamicImportPackage: environment.getDynamicImportPackages()) { environmentType.addDynamicImportPackage(dynamicImportPackage); ClassLoadingRules classLoadingRules = environment.getClassLoadingRules();
public static Environment buildEnvironment(EnvironmentType environmentType) { Environment environment = new Environment(); if (environmentType != null) { if (environmentType.isSetModuleId()) { environment.setConfigId(toArtifact(environmentType.getModuleId(), null)); DependencyType[] dependencyArray = environmentType.getDependencies().getDependencyArray(); LinkedHashSet dependencies = toDependencies(dependencyArray); environment.setDependencies(dependencies); environment.setBundleActivator(trim(environmentType.getBundleActivator())); environment.addToBundleClassPath(bundleClassPath); environment.addImportPackage(trim(importPackage)); environment.addExportPackage(trim(exportPackage)); environment.addRequireBundle(requireBundle); environment.addDynamicImportPackage(trim(dynamicImportPackage)); environment.setSuppressDefaultEnvironment(environmentType.isSetSuppressDefaultEnvironment()); ClassLoadingRulesUtil.configureRules(environment.getClassLoadingRules(), environmentType);
private void createTempManifest() throws DeploymentException, IOException { Environment env = new Environment(environment); Artifact id = env.getConfigId(); env.setConfigId(new Artifact(id.getGroupId(), id.getArtifactId() + "-DEPLOYMENT", id.getVersion(), id.getType())); env.addToBundleClassPath(bundleClassPath); env.setBundleActivator(null); env.addDynamicImportPackage("*"); OSGiMetaDataBuilder osgiMetaDataBuilder = new OSGiMetaDataBuilder(bundleContext, new DummyExportPackagesSelector()); try { osgiMetaDataBuilder.build(env); } catch (IllegalConfigurationException e) { throw new DeploymentException(e); } Manifest manifest; try { manifest = env.getManifest(); } catch (ManifestException e) { throw new DeploymentException(e); } File metaInf = new File(getConfigurationDir(), "META-INF"); metaInf.mkdirs(); FileWriter fw = new FileWriter(new File(metaInf, "MANIFEST.MF")); PrintWriter pw = new PrintWriter(fw); try { manifest.write(pw); } finally { pw.close(); fw.close(); } }
public PluginType getPluginMetadata() { PluginType pluginType = new PluginType(); pluginType.setName("Temporary Plugin metadata for deployment"); PluginArtifactType instance = new PluginArtifactType(); instance.setModuleId(ArtifactType.newArtifactType(environment.getConfigId())); List<DependencyType> dependenciees = instance.getDependency(); for (Dependency dependency: environment.getDependencies()) { dependenciees.add(DependencyType.newDependencyType(dependency)); } pluginType.getPluginArtifact().add(instance); return pluginType; }
/** * Guarantees that the argument Environment will have a present and fully * qualified module ID when this method returns. If the Environment is * missing a module ID, or has a partial module ID (isResolved() == false) * then this method will fill in any missing values. If the module ID is * present and resolved, then this method does nothing. * * @param environment The Environment to check and populate * @param defaultArtifactId The artifactId to use if the Envrionment does * not have a module ID at all * @param defaultType The type to use if the Environment is lacking * a module ID or the module ID is lacking a type */ public void resolve(Environment environment, String defaultArtifactId, String defaultType) { if(environment.getConfigId() == null) { environment.setConfigId(resolve(new Artifact(null, defaultArtifactId, (Version)null, defaultType), defaultType)); } else if(!environment.getConfigId().isResolved()) { environment.setConfigId(resolve(environment.getConfigId(), defaultType)); } } }
protected boolean matchesDefaultEnvironment(Environment environment) { for (Iterator iterator = defaultEnvironment.getDependencies().iterator(); iterator.hasNext();) { Dependency defaultDependency = (Dependency) iterator.next(); boolean matches = false; for (Iterator iterator1 = environment.getDependencies().iterator(); iterator1.hasNext();) { Dependency actualDependency = (Dependency) iterator1.next(); if (matches(defaultDependency, actualDependency)) { matches = true; break; } } if (!matches) { return false; } } return true; }
private static void insertEnvironment(Artifact configId, Artifact parentId, XmlCursor cursor, QName environmentQname, boolean suppressDefaultEnvironment) { positionEnvironment(cursor); Environment environment = new Environment(); environment.setConfigId(configId); if (parentId != null) { environment.addDependency(parentId, ImportType.ALL); } environment.setSuppressDefaultEnvironment(suppressDefaultEnvironment); extractDependencies(cursor, environment); EnvironmentType environmentType = EnvironmentBuilder.buildEnvironmentType(environment); cursor.beginElement(environmentQname); XmlCursor element = environmentType.newCursor(); try { element.copyXmlContents(cursor); } finally { element.dispose(); } }
environment.addToBundleClassPath(bundleClassPath); if (environment.getBundleActivator() == null) { environment.setBundleActivator(ConfigurationActivator.class.getName()); environment.addImportPackage(getImportPackageName(ConfigurationActivator.class.getName())); environment.addDynamicImportPackage("*"); addImport(imports, environment.getBundleActivator()); environment.addImportPackages(imports); if (environment.getDynamicImportPackages().isEmpty()) { environment.addDynamicImportPackage("*");
} else { List dependencies = configurationData.getEnvironment().getDependencies(); if (!dependencies.isEmpty()) { configurationData.getEnvironment().setDependencies(Collections.EMPTY_SET);
for (String initialImportPackageName : environment.getImportPackages()) { String importPackageName = initialImportPackageName.trim(); if (importPackageName.length() == 0) { environment.removeImportPackages(removedImportPackages); for (String importPackageName : environment.getImportPackages()) { if (hiddenImportPackageNames.contains(importPackageName)) { removedImportPackages.add(importPackageName); environment.removeImportPackages(removedImportPackages); for (String importPackageName : environment.getImportPackages()) { List<HeaderElement> elements = HeaderParser.parseHeader(importPackageName); for (HeaderElement headerElement : elements) { for (String initialDynamicImportPackageName : environment.getDynamicImportPackages()) { String dynamicImportPackageName = initialDynamicImportPackageName.trim(); if (dynamicImportPackageName.length() == 0) { environment.removeDynamicImportPackages(removedDynamicImportPackages); OSGiBuildContext osgiBuildContext = new OSGiBuildContext(environment, hiddenImportPackageNamePrefixes, hiddenImportPackageNames, dependencyManager, environment.getClassLoadingRules() .isInverseClassLoading()); osgiBuildContext.setClientModule(clientModule);
public ConfigurationData(Artifact configId, Naming naming, GBeanState gbeanState) { this(new Environment(configId), naming, gbeanState); }
protected void processClassloadingRules(Environment environment) { //Process Hidden Class for (String hiddenClassPrefix : environment.getClassLoadingRules().getHiddenRule().getClassPrefixes()) { String inversedImportPackage = hiddenClassPrefix.endsWith("*") ? hiddenClassPrefix : hiddenClassPrefix + "*"; environment.addImportPackage("!" + inversedImportPackage); } //Non-Overridable-Classes /*for (String hiddenClassPrefix : environment.getClassLoadingRules().getHiddenRule().getClassPrefixes()) { environment.getImportPackages().add(hiddenClassPrefix); }*/ }
applicationInfo.getEnvironment().setConfigId(configId); try { try {
public Artifact getConfigID() { return environment.getConfigId(); }