Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionDigraphPersistence.java11
-rw-r--r--bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionFilterBuilder.java25
2 files changed, 20 insertions, 16 deletions
diff --git a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionDigraphPersistence.java b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionDigraphPersistence.java
index c26ecda06..79447a21e 100644
--- a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionDigraphPersistence.java
+++ b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionDigraphPersistence.java
@@ -159,7 +159,7 @@ public final class StandardRegionDigraphPersistence implements RegionDigraphPers
if (head == null)
throw new IOException("Could not find head region: " + headName); //$NON-NLS-1$
// read the sharing policy
- RegionFilterBuilder builder = digraph.createRegionFilterBuilder();
+ Map<String, Collection<Filter>> filters = new HashMap<>();
// read the number of name spaces
int numSpaces = in.readInt();
// read each name space policy
@@ -170,10 +170,15 @@ public final class StandardRegionDigraphPersistence implements RegionDigraphPers
int numFilters = in.readInt();
for (int j = 0; j < numFilters; j++) {
String filter = in.readUTF();
- builder.allow(namespace, filter);
+ Collection<Filter> namespaceFilters = filters.get(namespace);
+ if (namespaceFilters == null) {
+ namespaceFilters = new ArrayList<>(numFilters);
+ filters.put(namespace, namespaceFilters);
+ }
+ namespaceFilters.add(FrameworkUtil.createFilter(filter));
}
}
- digraph.connect(tail, builder.build(), head);
+ digraph.connect(tail, new StandardRegionFilter(filters), head);
}
/**
diff --git a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionFilterBuilder.java b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionFilterBuilder.java
index befd81493..b6cf224f0 100644
--- a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionFilterBuilder.java
+++ b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionFilterBuilder.java
@@ -36,13 +36,7 @@ public final class StandardRegionFilterBuilder implements RegionFilterBuilder {
if (filter == null)
throw new IllegalArgumentException("The filter must not be null."); //$NON-NLS-1$
synchronized (this.monitor) {
- Collection<Filter> namespaceFilters = policy.get(namespace);
- if (namespaceFilters == null) {
- // use set to avoid duplicates
- namespaceFilters = new LinkedHashSet<Filter>();
- policy.put(namespace, namespaceFilters);
- }
-
+ Collection<Filter> namespaceFilters = getNamespaceFilters(namespace);
namespaceFilters.add(createFilter(filter));
}
if (VISIBLE_SERVICE_NAMESPACE.equals(namespace)) {
@@ -64,12 +58,7 @@ public final class StandardRegionFilterBuilder implements RegionFilterBuilder {
if (namespace == null)
throw new IllegalArgumentException("The namespace must not be null."); //$NON-NLS-1$
synchronized (this.monitor) {
- Collection<Filter> namespaceFilters = policy.get(namespace);
- if (namespaceFilters == null) {
- // use set to avoid duplicates
- namespaceFilters = new LinkedHashSet<Filter>();
- policy.put(namespace, namespaceFilters);
- }
+ Collection<Filter> namespaceFilters = getNamespaceFilters(namespace);
// remove any other filters since this will override them all.
namespaceFilters.clear();
namespaceFilters.add(StandardRegionFilter.ALL);
@@ -81,6 +70,16 @@ public final class StandardRegionFilterBuilder implements RegionFilterBuilder {
return this;
}
+ private Collection<Filter> getNamespaceFilters(String namespace) {
+ Collection<Filter> namespaceFilters = policy.get(namespace);
+ if (namespaceFilters == null) {
+ // use set to avoid duplicates
+ namespaceFilters = new LinkedHashSet<Filter>();
+ policy.put(namespace, namespaceFilters);
+ }
+ return namespaceFilters;
+ }
+
@Override
public RegionFilter build() {
synchronized (this.monitor) {

Back to the top