This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git
The following commit(s) were added to refs/heads/master by this push:
new 07823aeb19 FELIX-6683 : Reduce requests to service registry
07823aeb19 is described below
commit 07823aeb19753bf93b60c08eb55256a5d6db900d
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Sat Jan 20 15:57:37 2024 +0100
FELIX-6683 : Reduce requests to service registry
---
.../internal/whiteboard/WhiteboardManager.java | 43 ++++++++++------------
http/bridge/pom.xml | 2 +-
2 files changed, 21 insertions(+), 24 deletions(-)
diff --git
a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
index 93422105ba..f082122f7c 100644
---
a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
+++
b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
@@ -470,35 +470,32 @@ public final class WhiteboardManager
/**
* Find the list of matching contexts for the whiteboard service
*/
- private List<WhiteboardContextHandler> getMatchingContexts(final
WhiteboardServiceInfo<?> info)
- {
+ private List<WhiteboardContextHandler> getMatchingContexts(final
WhiteboardServiceInfo<?> info) {
final List<WhiteboardContextHandler> result = new ArrayList<>();
- for(final List<WhiteboardContextHandler> handlerList :
this.contextMap.values())
- {
+ for(final List<WhiteboardContextHandler> handlerList :
this.contextMap.values()) {
final WhiteboardContextHandler h = handlerList.get(0);
- // check whether the servlet context helper is visible to the
whiteboard bundle
- // see chapter 140.2
- boolean visible = h.getContextInfo().getServiceId() < 0; //
internal ones are always visible
- if ( !visible )
- {
- final String filterString = "(" + Constants.SERVICE_ID + "=" +
String.valueOf(h.getContextInfo().getServiceId()) + ")";
- try
- {
- final ServiceReference<?>[] col =
info.getServiceReference().getBundle().getBundleContext().getServiceReferences(h.getContextInfo().getServiceType(),
filterString);
- if ( col !=null && col.length > 0 )
- {
- visible = true;
+
+ // check if the context matches
+ final boolean matches = h.getContextInfo().match(info);
+ if (matches) {
+ // check whether the servlet context helper is visible to the
whiteboard bundle
+ // see chapter 140.2
+ boolean visible = h.getContextInfo().getServiceId() < 0; //
internal ones are always visible
+ if ( !visible ) {
+ final String filterString = "(" + Constants.SERVICE_ID +
"=" + String.valueOf(h.getContextInfo().getServiceId()) + ")";
+ try {
+ final ServiceReference<?>[] col =
info.getServiceReference().getBundle().getBundleContext().getServiceReferences(h.getContextInfo().getServiceType(),
filterString);
+ if ( col !=null && col.length > 0 ) {
+ visible = true;
+ }
+ } catch ( final InvalidSyntaxException ise ) {
+ // we ignore this and treat it as an invisible service
}
}
- catch ( final InvalidSyntaxException ise )
- {
- // we ignore this and treat it as an invisible service
+ if ( visible ) {
+ result.add(h);
}
}
- if ( visible && h.getContextInfo().match(info) )
- {
- result.add(h);
- }
}
return result;
}
diff --git a/http/bridge/pom.xml b/http/bridge/pom.xml
index 91cb19faee..801c372886 100644
--- a/http/bridge/pom.xml
+++ b/http/bridge/pom.xml
@@ -184,7 +184,7 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.http.base</artifactId>
- <version>5.1.4</version>
+ <version>5.1.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>