summaryrefslogtreecommitdiffstats
path: root/jdisc_core
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-11-30 09:48:32 +0100
committerjonmv <venstad@gmail.com>2023-11-30 09:48:32 +0100
commit31c7fe405206f4aa86ecd0f93309f26adf2e1205 (patch)
tree9434294959b1b3a4ea2b44f268ae08c7fd9ead7e /jdisc_core
parentd3937b5d44a1a13dd3b895029c7dcbfe32d3d7e1 (diff)
Simplify
Diffstat (limited to 'jdisc_core')
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/Request.java29
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java41
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java8
3 files changed, 31 insertions, 47 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java b/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java
index 0c7b9c2d76d..91741fc7d4d 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/Request.java
@@ -41,7 +41,7 @@ public class Request extends AbstractResource {
private final HeaderFields headers = new HeaderFields();
private final Container container;
private final Request parent;
- private final ResourceReference parentReference;
+ private final ResourceReference resourceReference;
private final long creationTime;
private final boolean serverRequest;
private final URI uri;
@@ -83,15 +83,17 @@ public class Request extends AbstractResource {
this(current, uri, true);
}
- public Request(CurrentContainer current, URI uri, boolean isServerRequest) { this(current, uri, isServerRequest, -1); }
+ public Request(CurrentContainer current, URI uri, boolean isServerRequest) {
+ this(current, uri, isServerRequest, -1);
+ }
public Request(CurrentContainer current, URI uri, boolean isServerRequest, long creationTime) {
- parent = null;
- parentReference = null;
- serverRequest = isServerRequest;
+ this.parent = null;
+ this.container = current.newReference(uri, this);
+ this.resourceReference = container::release;
this.uri = uri.normalize();
- container = current.newReference(uri, this);
this.creationTime = creationTime >= 0 ? creationTime : container.currentTimeMillis();
+ this.serverRequest = isServerRequest;
}
@@ -121,11 +123,11 @@ public class Request extends AbstractResource {
*/
public Request(Request parent, URI uri) {
this.parent = parent;
- container = null;
- creationTime = parent.container().currentTimeMillis();
- serverRequest = false;
+ this.container = null;
+ this.resourceReference = parent.refer(this);
this.uri = uri.normalize();
- parentReference = this.parent.refer(this);
+ this.creationTime = parent.container().currentTimeMillis();
+ this.serverRequest = false;
}
/** Returns the {@link Container} for which this Request was created */
@@ -395,12 +397,7 @@ public class Request extends AbstractResource {
@Override
protected void destroy() {
- if (parentReference != null) {
- parentReference.close();
- }
- if (container != null) {
- container.release();
- }
+ resourceReference.close();
}
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java
index e2cf4574a75..6550d9b5386 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java
@@ -13,6 +13,9 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
+
+import static java.util.stream.Collectors.toUnmodifiableMap;
/**
* <p>This is the inactive, mutable {@link Container}. Because it requires references to the application internals, it
@@ -71,42 +74,26 @@ public class ContainerBuilder {
return serverBindings.get(BindingSet.DEFAULT);
}
- public BindingRepository<RequestHandler> serverBindings(String setName) {
- BindingRepository<RequestHandler> ret = serverBindings.get(setName);
- if (ret == null) {
- ret = new BindingRepository<>();
- serverBindings.put(setName, ret);
- }
- return ret;
+ public BindingRepository<RequestHandler> clientBindings() {
+ return clientBindings.get(BindingSet.DEFAULT);
}
- public Map<String, BindingSet<RequestHandler>> activateServerBindings() {
- Map<String, BindingSet<RequestHandler>> ret = new HashMap<>();
- for (Map.Entry<String, BindingRepository<RequestHandler>> entry : serverBindings.entrySet()) {
- ret.put(entry.getKey(), entry.getValue().activate());
- }
- return ImmutableMap.copyOf(ret);
+ public BindingRepository<RequestHandler> serverBindings(String setName) {
+ return serverBindings.computeIfAbsent(setName, __ -> new BindingRepository<>());
}
- public BindingRepository<RequestHandler> clientBindings() {
- return clientBindings.get(BindingSet.DEFAULT);
+ public BindingRepository<RequestHandler> clientBindings(String setName) {
+ return clientBindings.computeIfAbsent(setName, __ -> new BindingRepository<>());
}
- public BindingRepository<RequestHandler> clientBindings(String setName) {
- BindingRepository<RequestHandler> ret = clientBindings.get(setName);
- if (ret == null) {
- ret = new BindingRepository<>();
- clientBindings.put(setName, ret);
- }
- return ret;
+ public Map<String, BindingSet<RequestHandler>> activateServerBindings() {
+ return serverBindings.entrySet().stream().collect(toUnmodifiableMap(entry -> entry.getKey(),
+ entry -> entry.getValue().activate()));
}
public Map<String, BindingSet<RequestHandler>> activateClientBindings() {
- Map<String, BindingSet<RequestHandler>> ret = new HashMap<>();
- for (Map.Entry<String, BindingRepository<RequestHandler>> entry : clientBindings.entrySet()) {
- ret.put(entry.getKey(), entry.getValue().activate());
- }
- return ImmutableMap.copyOf(ret);
+ return clientBindings.entrySet().stream().collect(toUnmodifiableMap(entry -> entry.getKey(),
+ entry -> entry.getValue().activate()));
}
@SuppressWarnings({ "unchecked" })
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java
index 53fb81fb6db..e2d2da660c7 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ActiveContainer.java
@@ -37,12 +37,12 @@ public class ActiveContainer extends AbstractResource implements CurrentContaine
serverProviders = builder.serverProviders().activate();
serverProviders.forEach(resourceReferences::retain);
serverBindings = builder.activateServerBindings();
- serverBindings.forEach(
- (ignoredName, bindingSet) -> bindingSet.forEach(
+ serverBindings.values().forEach(
+ bindingSet -> bindingSet.forEach(
binding -> resourceReferences.retain(binding.getValue())));
clientBindings = builder.activateClientBindings();
- clientBindings.forEach(
- (ignoredName, bindingSet) -> bindingSet.forEach(
+ clientBindings.values().forEach(
+ bindingSet -> bindingSet.forEach(
binding -> resourceReferences.retain(binding.getValue())));
bindingSetSelector = builder.getInstance(BindingSetSelector.class);
timeoutMgr = builder.getInstance(TimeoutManagerImpl.class);