diff options
author | Ed Merks | 2015-11-20 10:32:11 +0000 |
---|---|---|
committer | Thomas Watson | 2015-12-01 14:32:54 +0000 |
commit | b1efdd4f1c5743718bc719082ad505a24458c925 (patch) | |
tree | e9fe4567aa665d83ca043fc60d60d403c53b9c58 | |
parent | 3ec205e365e062eeaa6fad720ed40c3684fb567b (diff) | |
download | rt.equinox.framework-b1efdd4f1c5743718bc719082ad505a24458c925.tar.gz rt.equinox.framework-b1efdd4f1c5743718bc719082ad505a24458c925.tar.xz rt.equinox.framework-b1efdd4f1c5743718bc719082ad505a24458c925.zip |
Bug 482666 Make ModuleDatabase.Persistence.readGenericInfo() faster
Change-Id: I4f77f00c13da81585d181a7cbb8ed03bee31163c
Signed-off-by: Ed Merks <ed.merks@gmail.com>
2 files changed, 17 insertions, 2 deletions
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java index 6d3a5bd4b..aa78ffa7f 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleDatabase.java @@ -1279,9 +1279,9 @@ public class ModuleDatabase { Map<String, Object> attributes = readMap(in); Map<String, ?> directives = readMap(in); if (isCapability) { - builder.addCapability(namespace, (Map<String, String>) directives, attributes); + builder.basicAddCapability(namespace, (Map<String, String>) directives, attributes); } else { - builder.addRequirement(namespace, (Map<String, String>) directives, attributes); + builder.basicAddRequirement(namespace, (Map<String, String>) directives, attributes); } } diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleRevisionBuilder.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleRevisionBuilder.java index 1c12b17e3..e990c7e23 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleRevisionBuilder.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleRevisionBuilder.java @@ -237,4 +237,19 @@ public final class ModuleRevisionBuilder { private static <K, V> Map<K, V> copyUnmodifiableMap(Map<K, V> map) { return Collections.unmodifiableMap(new HashMap<K, V>(map)); } + + void basicAddCapability(String namespace, Map<String, String> directives, Map<String, Object> attributes) { + basicAddGenericInfo(capabilityInfos, namespace, directives, attributes); + } + + void basicAddRequirement(String namespace, Map<String, String> directives, Map<String, Object> attributes) { + basicAddGenericInfo(requirementInfos, namespace, directives, attributes); + } + + private static void basicAddGenericInfo(List<GenericInfo> infos, String namespace, Map<String, String> directives, Map<String, Object> attributes) { + if (infos == null) { + infos = new ArrayList<GenericInfo>(); + } + infos.add(new GenericInfo(namespace, Collections.unmodifiableMap(directives), Collections.unmodifiableMap(attributes))); + } } |