You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2013/10/24 16:31:48 UTC
svn commit: r1535391 - in /karaf/trunk:
bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java
package/command/src/main/java/org/apache/karaf/packages/command/Exports.java
Author: cschneider
Date: Thu Oct 24 14:31:47 2013
New Revision: 1535391
URL: http://svn.apache.org/r1535391
Log:
KARAF-2527 move duplicate package reporting to package:exports
Modified:
karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java
karaf/trunk/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java
Modified: karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java
URL: http://svn.apache.org/viewvc/karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java?rev=1535391&r1=1535390&r2=1535391&view=diff
==============================================================================
--- karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java (original)
+++ karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/Diag.java Thu Oct 24 14:31:47 2013
@@ -16,20 +16,13 @@
*/
package org.apache.karaf.bundle.command;
-import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
import org.apache.karaf.bundle.core.BundleInfo;
import org.apache.karaf.bundle.core.BundleState;
import org.apache.karaf.shell.commands.Command;
import org.apache.karaf.shell.util.ShellUtil;
import org.osgi.framework.Bundle;
-import org.osgi.framework.Version;
-import org.osgi.framework.wiring.BundleCapability;
-import org.osgi.framework.wiring.BundleRevision;
@Command(scope = "bundle", name = "diag", description = "Displays diagnostic information why a bundle is not Active")
public class Diag extends BundlesCommand {
@@ -39,7 +32,6 @@ public class Diag extends BundlesCommand
}
protected void doExecute(List<Bundle> bundles) throws Exception {
- checkDuplicateExports();
for (Bundle bundle : bundles) {
BundleInfo info = bundleService.getInfo(bundle);
if (info.getState() == BundleState.Failure || info.getState() == BundleState.Waiting
@@ -54,48 +46,4 @@ public class Diag extends BundlesCommand
}
}
- private void checkDuplicateExports() {
- Bundle[] bundles = bundleContext.getBundles();
- SortedMap<String, PackageVersion> packageVersionMap = new TreeMap<String, Diag.PackageVersion>();
- for (Bundle bundle : bundles) {
- BundleRevision rev = bundle.adapt(BundleRevision.class);
- if (rev!=null) {
- List<BundleCapability> caps = rev.getDeclaredCapabilities(BundleRevision.PACKAGE_NAMESPACE);
- for (BundleCapability cap : caps) {
- Map<String, Object> attr = cap.getAttributes();
- String packageName = (String)attr.get(BundleRevision.PACKAGE_NAMESPACE);
- Version version = (Version)attr.get("version");
- String key = packageName + ":" + version.toString();
- PackageVersion pVer = packageVersionMap.get(key);
- if (pVer == null) {
- pVer = new PackageVersion();
- pVer.packageName = packageName;
- pVer.version = version;
- packageVersionMap.put(key, pVer);
- }
- pVer.bundles.add(bundle);
- }
- }
- }
- String title = "Same Package/Version exported by more than one bundle:";
- System.out.println(title);
- System.out.println(ShellUtil.getUnderlineString(title));
- for (String key : packageVersionMap.keySet()) {
- PackageVersion pVer = packageVersionMap.get(key);
- if (pVer.bundles.size() > 1) {
- System.out.print(pVer.packageName + ":" + pVer.version.toString() + " exported by ");
- for (Bundle bundle : pVer.bundles) {
- System.out.print(bundle.getBundleId() + " ");
- }
- System.out.println();
- }
- }
- System.out.println();
- }
-
- class PackageVersion {
- String packageName;
- Version version;
- List<Bundle> bundles = new ArrayList<Bundle>();
- }
}
Modified: karaf/trunk/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java
URL: http://svn.apache.org/viewvc/karaf/trunk/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java?rev=1535391&r1=1535390&r2=1535391&view=diff
==============================================================================
--- karaf/trunk/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java (original)
+++ karaf/trunk/package/command/src/main/java/org/apache/karaf/packages/command/Exports.java Thu Oct 24 14:31:47 2013
@@ -16,20 +16,31 @@
*/
package org.apache.karaf.packages.command;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.SortedMap;
+import java.util.TreeMap;
import org.apache.karaf.packages.core.PackageService;
import org.apache.karaf.packages.core.PackageVersion;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.OsgiCommandSupport;
import org.apache.karaf.shell.table.Col;
import org.apache.karaf.shell.table.ShellTable;
import org.osgi.framework.Bundle;
+import org.osgi.framework.Version;
+import org.osgi.framework.wiring.BundleCapability;
+import org.osgi.framework.wiring.BundleRevision;
@Command(scope = "package", name = "exports", description = "Lists exported packages and the bundles that export them")
public class Exports extends OsgiCommandSupport {
private PackageService packageService;
+
+ @Option(name = "-d", description = "Only show packages that are exported by more than one bundle", required = false, multiValued = false)
+ private boolean onlyDuplicates;
public Exports(PackageService packageService) {
super();
@@ -37,7 +48,16 @@ public class Exports extends OsgiCommand
}
protected Object doExecute() throws Exception {
- SortedMap<String, PackageVersion> exports = packageService.getExports();
+ if (onlyDuplicates) {
+ checkDuplicateExports();
+ } else {
+ showExports();
+ }
+ return null;
+ }
+
+ private void showExports() {
+ SortedMap<String, PackageVersion> exports = packageService.getExports();
ShellTable table = new ShellTable();
table.column(new Col("Package Name"));
table.column(new Col("Version"));
@@ -51,7 +71,55 @@ public class Exports extends OsgiCommand
}
}
table.print(System.out);
- return null;
+ }
+
+ private void checkDuplicateExports() {
+ Bundle[] bundles = bundleContext.getBundles();
+ SortedMap<String, PackageVersion> packageVersionMap = getDuplicatePackages(bundles);
+ ShellTable table = new ShellTable();
+ table.column(new Col("Package Name"));
+ table.column(new Col("Version"));
+ table.column(new Col("Exporting bundles (ID)"));
+
+ for (String key : packageVersionMap.keySet()) {
+ PackageVersion pVer = packageVersionMap.get(key);
+ if (pVer.getBundles().size() > 1) {
+ String pBundles = getBundlesSt(pVer.getBundles());
+ table.addRow().addContent(pVer.getPackageName(), pVer.getVersion().toString(), pBundles);
+ }
+ }
+ table.print(System.out);
}
+ private String getBundlesSt(Set<Bundle> bundles) {
+ StringBuilder st = new StringBuilder();
+ for (Bundle bundle : bundles) {
+ st.append(bundle.getBundleId() + " ");
+ }
+ return st.toString();
+ }
+
+ private SortedMap<String, PackageVersion> getDuplicatePackages(
+ Bundle[] bundles) {
+ SortedMap<String, PackageVersion> packageVersionMap = new TreeMap<String, PackageVersion>();
+ for (Bundle bundle : bundles) {
+ BundleRevision rev = bundle.adapt(BundleRevision.class);
+ if (rev!=null) {
+ List<BundleCapability> caps = rev.getDeclaredCapabilities(BundleRevision.PACKAGE_NAMESPACE);
+ for (BundleCapability cap : caps) {
+ Map<String, Object> attr = cap.getAttributes();
+ String packageName = (String)attr.get(BundleRevision.PACKAGE_NAMESPACE);
+ Version version = (Version)attr.get("version");
+ String key = packageName + ":" + version.toString();
+ PackageVersion pVer = packageVersionMap.get(key);
+ if (pVer == null) {
+ pVer = new PackageVersion(packageName, version);
+ packageVersionMap.put(key, pVer);
+ }
+ pVer.addBundle(bundle);
+ }
+ }
+ }
+ return packageVersionMap;
+ }
}