You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2015/05/12 14:55:37 UTC
karaf git commit: [KARAF-3722] Fix the PackageService interface to
return all packages
Repository: karaf
Updated Branches:
refs/heads/master 8702946db -> 261f30a45
[KARAF-3722] Fix the PackageService interface to return all packages
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/261f30a4
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/261f30a4
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/261f30a4
Branch: refs/heads/master
Commit: 261f30a45f44409e3ace364fe6f9a3985bdf35c4
Parents: 8702946
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Tue May 12 14:55:17 2015 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Tue May 12 14:55:17 2015 +0200
----------------------------------------------------------------------
.../org/apache/karaf/itests/PackageTest.java | 10 +++++-----
.../apache/karaf/packages/command/Exports.java | 5 ++---
.../apache/karaf/packages/command/Imports.java | 8 ++++----
.../karaf/packages/core/PackageService.java | 4 ++--
.../core/internal/PackageServiceImpl.java | 14 ++++++++------
.../core/internal/PackagesMBeanImpl.java | 19 +++++++++++--------
6 files changed, 32 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/261f30a4/itests/src/test/java/org/apache/karaf/itests/PackageTest.java
----------------------------------------------------------------------
diff --git a/itests/src/test/java/org/apache/karaf/itests/PackageTest.java b/itests/src/test/java/org/apache/karaf/itests/PackageTest.java
index 24f1e12..815c587 100644
--- a/itests/src/test/java/org/apache/karaf/itests/PackageTest.java
+++ b/itests/src/test/java/org/apache/karaf/itests/PackageTest.java
@@ -17,6 +17,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.SortedMap;
@@ -88,14 +89,13 @@ public class PackageTest extends KarafTestSupport {
// Leaving out version to make test easier to manage
// We currently expect no duplicate package exports
Map<String, Integer> expectedDups = new HashMap<String, Integer>();
- SortedMap<String, PackageVersion> packageVersionMap = packageService.getExports();
+ List<PackageVersion> packageVersionMap = packageService.getExports();
- for (String packageNameVersion : packageVersionMap.keySet()) {
- PackageVersion pVer = packageVersionMap.get(packageNameVersion);
+ for (PackageVersion pVer : packageVersionMap) {
if (pVer.getBundles().size() > 1) {
- String packageName = packageNameVersion.split(":")[0];
+ String packageName = pVer.getPackageName();
int expectedNum = expectedDups.containsKey(packageName) ? expectedDups.get(packageName) : 0;
- Assert.assertEquals("Expecting number of duplicates for package " + packageNameVersion, expectedNum, pVer.getBundles().size());
+ Assert.assertEquals("Expecting number of duplicates for package " + packageName, expectedNum, pVer.getBundles().size());
}
}
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/261f30a4/package/src/main/java/org/apache/karaf/packages/command/Exports.java
----------------------------------------------------------------------
diff --git a/package/src/main/java/org/apache/karaf/packages/command/Exports.java b/package/src/main/java/org/apache/karaf/packages/command/Exports.java
index 4eb3fd5..e6a1492 100644
--- a/package/src/main/java/org/apache/karaf/packages/command/Exports.java
+++ b/package/src/main/java/org/apache/karaf/packages/command/Exports.java
@@ -70,14 +70,13 @@ public class Exports implements Action {
}
private void showExports() {
- SortedMap<String, PackageVersion> exports = packageService.getExports();
+ List<PackageVersion> exports = packageService.getExports();
ShellTable table = new ShellTable();
table.column("Package Name");
table.column("Version");
table.column("ID");
table.column("Bundle Name");
- for (String key : exports.keySet()) {
- PackageVersion pVer = exports.get(key);
+ for (PackageVersion pVer : exports) {
for (Bundle bundle : pVer.getBundles()) {
if (matchesFilter(pVer, bundle)) {
table.addRow().addContent(pVer.getPackageName(),
http://git-wip-us.apache.org/repos/asf/karaf/blob/261f30a4/package/src/main/java/org/apache/karaf/packages/command/Imports.java
----------------------------------------------------------------------
diff --git a/package/src/main/java/org/apache/karaf/packages/command/Imports.java b/package/src/main/java/org/apache/karaf/packages/command/Imports.java
index 9e9330a..b070dd0 100644
--- a/package/src/main/java/org/apache/karaf/packages/command/Imports.java
+++ b/package/src/main/java/org/apache/karaf/packages/command/Imports.java
@@ -16,6 +16,7 @@
*/
package org.apache.karaf.packages.command;
+import java.util.List;
import java.util.SortedMap;
import org.apache.karaf.packages.core.PackageRequirement;
@@ -50,7 +51,7 @@ public class Imports implements Action {
@Override
public Object execute() throws Exception {
- SortedMap<String, PackageRequirement> imports = packageService.getImports();
+ List<PackageRequirement> imports = packageService.getImports();
ShellTable table = new ShellTable();
if (showFilter) {
table.column("Filter");
@@ -62,13 +63,12 @@ public class Imports implements Action {
table.column("ID");
table.column("Bundle Name");
- for (String filter : imports.keySet()) {
- PackageRequirement req = imports.get(filter);
+ for (PackageRequirement req : imports) {
if (matchesFilter(req)) {
Bundle bundle = req.getBundle();
Row row = table.addRow();
if (showFilter) {
- row.addContent(filter);
+ row.addContent(req.getFilter());
} else {
row.addContent(req.getPackageName(), req.getVersionRange());
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/261f30a4/package/src/main/java/org/apache/karaf/packages/core/PackageService.java
----------------------------------------------------------------------
diff --git a/package/src/main/java/org/apache/karaf/packages/core/PackageService.java b/package/src/main/java/org/apache/karaf/packages/core/PackageService.java
index 28a065d..0ea285b 100644
--- a/package/src/main/java/org/apache/karaf/packages/core/PackageService.java
+++ b/package/src/main/java/org/apache/karaf/packages/core/PackageService.java
@@ -38,7 +38,7 @@ public interface PackageService {
*
* @return
*/
- SortedMap<String, PackageVersion> getExports();
+ List<PackageVersion> getExports();
/**
* Gets a map of all package imports.
@@ -46,6 +46,6 @@ public interface PackageService {
*
* @return
*/
- SortedMap<String, PackageRequirement> getImports();
+ List<PackageRequirement> getImports();
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/261f30a4/package/src/main/java/org/apache/karaf/packages/core/internal/PackageServiceImpl.java
----------------------------------------------------------------------
diff --git a/package/src/main/java/org/apache/karaf/packages/core/internal/PackageServiceImpl.java b/package/src/main/java/org/apache/karaf/packages/core/internal/PackageServiceImpl.java
index 7fc2949..6629543 100644
--- a/package/src/main/java/org/apache/karaf/packages/core/internal/PackageServiceImpl.java
+++ b/package/src/main/java/org/apache/karaf/packages/core/internal/PackageServiceImpl.java
@@ -17,6 +17,8 @@
package org.apache.karaf.packages.core.internal;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
@@ -40,7 +42,7 @@ public class PackageServiceImpl implements PackageService {
this.bundleContext = bundleContext;
}
- public SortedMap<String, PackageVersion> getExports() {
+ public List<PackageVersion> getExports() {
Bundle[] bundles = bundleContext.getBundles();
SortedMap<String, PackageVersion> packageVersionMap = new TreeMap<String, PackageVersion>();
for (Bundle bundle : bundles) {
@@ -61,24 +63,24 @@ public class PackageServiceImpl implements PackageService {
}
}
}
- return packageVersionMap;
+ return new ArrayList<>(packageVersionMap.values());
}
@Override
- public SortedMap<String, PackageRequirement> getImports() {
+ public List<PackageRequirement> getImports() {
Bundle[] bundles = bundleContext.getBundles();
- SortedMap<String, PackageRequirement> filterMap = new TreeMap<String, PackageRequirement>();
+ SortedMap<String, PackageRequirement> requirements = new TreeMap<>();
for (Bundle bundle : bundles) {
BundleRevision rev = bundle.adapt(BundleRevision.class);
if (rev != null) {
List<BundleRequirement> reqs = rev.getDeclaredRequirements(BundleRevision.PACKAGE_NAMESPACE);
for (BundleRequirement req : reqs) {
PackageRequirement preq = create(req, bundle);
- filterMap.put(preq.getFilter(), preq);
+ requirements.put(preq.getPackageName() + "|" + preq.getFilter() + "|" + preq.getBundle().getBundleId(), preq);
}
}
}
- return filterMap;
+ return new ArrayList<>(requirements.values());
}
private boolean checkResolveAble(BundleRequirement req) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/261f30a4/package/src/main/java/org/apache/karaf/packages/core/internal/PackagesMBeanImpl.java
----------------------------------------------------------------------
diff --git a/package/src/main/java/org/apache/karaf/packages/core/internal/PackagesMBeanImpl.java b/package/src/main/java/org/apache/karaf/packages/core/internal/PackagesMBeanImpl.java
index bce7b8f..57d098f 100644
--- a/package/src/main/java/org/apache/karaf/packages/core/internal/PackagesMBeanImpl.java
+++ b/package/src/main/java/org/apache/karaf/packages/core/internal/PackagesMBeanImpl.java
@@ -24,6 +24,7 @@ import javax.management.StandardMBean;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.KeyAlreadyExistsException;
import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.OpenType;
import javax.management.openmbean.SimpleType;
@@ -65,10 +66,9 @@ public class PackagesMBeanImpl extends StandardMBean implements PackagesMBean {
new String[] {"Name", "Version", "ID"});
TabularData table = new TabularDataSupport(tableType);
- SortedMap<String, PackageVersion> exports = packageService.getExports();
+ List<PackageVersion> exports = packageService.getExports();
- for (String key : exports.keySet()) {
- PackageVersion export = exports.get(key);
+ for (PackageVersion export : exports) {
for (Bundle bundle : export.getBundles()) {
Object[] data = new Object[] {
export.getPackageName(),
@@ -76,7 +76,7 @@ public class PackagesMBeanImpl extends StandardMBean implements PackagesMBean {
bundle.getBundleId(),
bundle.getSymbolicName()};
CompositeData comp = new CompositeDataSupport(bundleType, names, data);
- LOGGER.debug("Adding CompositeDataSupport {} for key: {}", comp, key);
+ LOGGER.debug("Adding CompositeDataSupport {}", comp);
table.put(comp);
}
}
@@ -104,10 +104,9 @@ public class PackagesMBeanImpl extends StandardMBean implements PackagesMBean {
new String[] {"Filter", "ID"});
TabularData table = new TabularDataSupport(tableType);
- SortedMap<String, PackageRequirement> imports = packageService.getImports();
+ List<PackageRequirement> imports = packageService.getImports();
- for (String key : imports.keySet()) {
- PackageRequirement req = imports.get(key);
+ for (PackageRequirement req : imports) {
Object[] data = new Object[] {
req.getPackageName(),
req.getFilter(),
@@ -116,7 +115,11 @@ public class PackagesMBeanImpl extends StandardMBean implements PackagesMBean {
req.getBundle().getSymbolicName(),
req.isResolveable()};
CompositeData comp = new CompositeDataSupport(bundleType, names, data);
- table.put(comp);
+ try {
+ table.put(comp);
+ }catch (KeyAlreadyExistsException e) {
+ throw new RuntimeException("Id: " + req.getBundle().getBundleId() + ", filter: " + req.getFilter(), e);
+ }
}
return table;
} catch (RuntimeException e) {