diff options
author | jonmv <venstad@gmail.com> | 2023-11-30 09:48:32 +0100 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-11-30 09:48:32 +0100 |
commit | 31c7fe405206f4aa86ecd0f93309f26adf2e1205 (patch) | |
tree | 9434294959b1b3a4ea2b44f268ae08c7fd9ead7e | |
parent | d3937b5d44a1a13dd3b895029c7dcbfe32d3d7e1 (diff) |
Simplify
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); |