ModuleManager moduleManager = ModuleManager.getInstance(myRunConfiguration.getProject());
int bundleCount = myRunConfiguration.getBundlesToDeploy().size();
for (int i = 0; i < bundleCount; i++) {
progressIndicator.setFraction((double)i / bundleCount);
SelectedBundle selectedBundle = myRunConfiguration.getBundlesToDeploy().get(i);
if (selectedBundle.isModule()) {
// use the output jar name if it is a module
String name = selectedBundle.getName();
Module module = moduleManager.findModuleByName(name);
if (module == null) {
throw new CantRunException("Module '" + name + "' no longer exists. Please check your run configuration.");
}
OsmorcFacet facet = OsmorcFacet.getInstance(module);
if (facet == null) {
throw new CantRunException("Module '" + name + "' has no OSGi facet. Please check your run configuration.");
}
selectedBundle.setBundlePath(facet.getConfiguration().getJarFileLocation());
selectedBundles.add(selectedBundle);
// add all the library dependencies of the bundle
List<String> paths = new BundleCompiler().bundlifyLibraries(module, progressIndicator);
for (String path : paths) {
selectedBundles.add(new SelectedBundle(SelectedBundle.BundleType.PlainLibrary, "Dependency", path));
}
}
else {
if (selectedBundles.contains(selectedBundle)) {
// if the user selected a dependency as runnable library, we need to replace the dependency with
// the runnable library part
selectedBundles.remove(selectedBundle);
}
selectedBundles.add(selectedBundle);
}
}
// filter out bundles which have the same symbolic name
Map<String, SelectedBundle> filteredBundles = new HashMap<String, SelectedBundle>();
for (SelectedBundle selectedBundle : selectedBundles) {
String path = selectedBundle.getBundlePath();
if (path != null) {
String name = CachingBundleInfoProvider.getBundleSymbolicName(path);
String version = CachingBundleInfoProvider.getBundleVersion(path);
String key = name + version;
if (!filteredBundles.containsKey(key)) {