Bug 510583 - [region] optimize the ALL filter
Change-Id: Ib0c546f4449b6db05a1aa27749aec43c8bb69a57
Signed-off-by: Thomas Watson <tjwatson@us.ibm.com>
diff --git a/bundles/org.eclipse.equinox.region/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.region/META-INF/MANIFEST.MF
index c176438..1ab9dcd 100644
--- a/bundles/org.eclipse.equinox.region/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.region/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.eclipse.equinox.region
-Bundle-Version: 1.3.1.qualifier
+Bundle-Version: 1.3.2.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Fragment-Host: system.bundle
ExtensionBundle-Activator: org.eclipse.equinox.internal.region.RegionManager
diff --git a/bundles/org.eclipse.equinox.region/pom.xml b/bundles/org.eclipse.equinox.region/pom.xml
index 3b5e333..7bb49c5 100644
--- a/bundles/org.eclipse.equinox.region/pom.xml
+++ b/bundles/org.eclipse.equinox.region/pom.xml
@@ -19,6 +19,6 @@
</parent>
<groupId>org.eclipse.equinox</groupId>
<artifactId>org.eclipse.equinox.region</artifactId>
- <version>1.3.1-SNAPSHOT</version>
+ <version>1.3.2-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionFilter.java b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionFilter.java
index ab8a618..46c7865 100644
--- a/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionFilter.java
+++ b/bundles/org.eclipse.equinox.region/src/org/eclipse/equinox/internal/region/StandardRegionFilter.java
@@ -19,6 +19,18 @@
import org.osgi.framework.wiring.BundleRevision;
public final class StandardRegionFilter implements RegionFilter {
+ final static Filter ALL;
+
+ static {
+ try {
+ ALL = FrameworkUtil.createFilter("(|(!(all=*))(all=*))"); //$NON-NLS-1$
+ } catch (InvalidSyntaxException e) {
+ // should never happen!
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+ }
+
private static final String BUNDLE_ID_ATTR = "id"; //$NON-NLS-1$
private final Map<String, Collection<Filter>> filters;
@@ -75,7 +87,7 @@
if (filters == null)
return false;
for (Filter filter : filters) {
- if (filter.matches(attrs))
+ if (filter == ALL || filter.matches(attrs))
return true;
}
return false;
@@ -85,7 +97,7 @@
if (filters == null)
return false;
for (Filter filter : filters) {
- if (filter.match(service))
+ if (filter == ALL || filter.match(service))
return true;
}
return false;
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 d031540..b61ab08 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
@@ -21,20 +21,6 @@
public final class StandardRegionFilterBuilder implements RegionFilterBuilder {
- private final static String ALL_SPEC = "(|(!(all=*))(all=*))"; //$NON-NLS-1$
-
- private final static Filter ALL;
-
- static {
- try {
- ALL = FrameworkUtil.createFilter(ALL_SPEC);
- } catch (InvalidSyntaxException e) {
- // should never happen!
- e.printStackTrace();
- throw new RuntimeException(e);
- }
- }
-
private final Object monitor = new Object();
private final Map<String, Collection<Filter>> policy = new HashMap<String, Collection<Filter>>();
@@ -52,8 +38,8 @@
namespaceFilters = new LinkedHashSet<Filter>();
policy.put(namespace, namespaceFilters);
}
- // TODO need to use BundleContext.createFilter here
- namespaceFilters.add(FrameworkUtil.createFilter(filter));
+
+ namespaceFilters.add(createFilter(filter));
}
if (VISIBLE_SERVICE_NAMESPACE.equals(namespace)) {
// alias the deprecated namespace to osgi.service
@@ -62,6 +48,12 @@
return this;
}
+ public Filter createFilter(String spec) throws InvalidSyntaxException {
+ // TODO need to use BundleContext.createFilter here
+ Filter filter = FrameworkUtil.createFilter(spec);
+ return (StandardRegionFilter.ALL.equals(filter)) ? StandardRegionFilter.ALL : filter;
+ }
+
@SuppressWarnings("deprecation")
public RegionFilterBuilder allowAll(String namespace) {
if (namespace == null)
@@ -75,7 +67,7 @@
}
// remove any other filters since this will override them all.
namespaceFilters.clear();
- namespaceFilters.add(ALL);
+ namespaceFilters.add(StandardRegionFilter.ALL);
}
if (VISIBLE_SERVICE_NAMESPACE.equals(namespace)) {
// alias the deprecated namespace to osgi.service