From 407f8ad2f87b953249b49915fd9fc54ad534c678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Prante?= Date: Sun, 26 Mar 2023 22:23:46 +0200 Subject: [PATCH] rename attributes() to getAttributes() --- .../src/test/resources/logging.properties | 5 +-- .../config/ConfigApplicationModule.java | 6 ++-- .../database/DatabaseApplicationModule.java | 4 +-- .../server/application/web/Bootstrap.java | 2 +- .../application/web/WebApplication.java | 4 +-- .../NettyHttpsServerMultiRequestLoadTest.java | 4 +-- .../secure/test/NettyHttpsServerTest.java | 4 +-- .../NettyHttp2ServerMultiRequestLoadTest.java | 2 +- .../test/NettyHttpServerFailureTest.java | 2 +- .../NettyHttpServerMultiRequestLoadTest.java | 2 +- .../http/netty/test/NettyHttpServerTest.java | 2 +- .../src/test/resources/logging.properties | 2 +- .../src/test/resources/logging.properties | 8 ++--- net-http-server/build.gradle | 1 + .../src/main/java/module-info.java | 1 + .../xbib/net/http/server/BaseApplication.java | 12 +++---- .../xbib/net/http/server/BaseHttpRequest.java | 2 +- .../http/server/BaseHttpServerContext.java | 29 +++++++++++++---- .../org/xbib/net/http/server/HttpRequest.java | 2 +- .../net/http/server/HttpServerContext.java | 2 +- .../auth/BasicAuthenticationHandler.java | 4 +-- .../auth/FormAuthenticationHandler.java | 8 ++--- .../auth/LoginAuthenticationHandler.java | 4 +-- .../server/cookie/IncomingCookieHandler.java | 2 +- .../server/cookie/OutgoingCookieHandler.java | 2 +- .../handler/InternalServerErrorHandler.java | 2 +- .../http/server/log/CombinedFormatLogger.java | 2 +- .../http/server/log/CommonFormatLogger.java | 2 +- .../resource/AbstractResourceHandler.java | 8 ++--- .../server/resource/FileResourceHandler.java | 6 ++-- .../server/resource/HtmlTemplateResource.java | 2 +- .../resource/WebRootResourceResolver.java | 4 +-- .../net/http/server/route/BaseHttpRouter.java | 6 ++-- .../session/IncomingSessionHandler.java | 8 ++--- .../session/OutgoingSessionHandler.java | 12 +++---- .../groovy/DefaultMarkupTemplate.java | 32 +++++++++++-------- ...oovyHttpResonseStatusTemplateResource.java | 8 ++--- .../GroovyInternalServerErrorHandler.java | 2 +- .../groovy/GroovyMarkupTemplateHandler.java | 8 ++--- .../GroovyTemplateApplicationModule.java | 6 ++-- .../groovy/GroovyTemplateRenderer.java | 4 +-- .../groovy/GroovyTemplateResource.java | 22 ++++++------- .../src/test/resources/logging.properties | 2 +- settings.gradle | 4 +-- 44 files changed, 135 insertions(+), 121 deletions(-) diff --git a/net-http-client/src/test/resources/logging.properties b/net-http-client/src/test/resources/logging.properties index f8086a4..039cb05 100644 --- a/net-http-client/src/test/resources/logging.properties +++ b/net-http-client/src/test/resources/logging.properties @@ -1,9 +1,6 @@ -handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler +handlers=java.util.logging.ConsoleHandler .level=ALL java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL %4$-7s [%3$s] %5$s %6$s%n java.util.logging.ConsoleHandler.level=ALL java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.FileHandler.level=ALL -java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.FileHandler.pattern=build/net.log jdk.event.security.level=INFO diff --git a/net-http-server-application-config/src/main/java/org/xbib/net/http/server/application/config/ConfigApplicationModule.java b/net-http-server-application-config/src/main/java/org/xbib/net/http/server/application/config/ConfigApplicationModule.java index 853f30d..f40a6c2 100644 --- a/net-http-server-application-config/src/main/java/org/xbib/net/http/server/application/config/ConfigApplicationModule.java +++ b/net-http-server-application-config/src/main/java/org/xbib/net/http/server/application/config/ConfigApplicationModule.java @@ -54,9 +54,9 @@ public class ConfigApplicationModule extends BaseApplicationModule { @Override public void onOpen(Application application, HttpServerContext httpServerContext, HttpService httpService) { - httpServerContext.attributes().put("configparams", configParams); - httpServerContext.attributes().put("configloader", configLoader); - httpServerContext.attributes().put("settings", settings); + httpServerContext.getAttributes().put("configparams", configParams); + httpServerContext.getAttributes().put("configloader", configLoader); + httpServerContext.getAttributes().put("settings", settings); } @Override diff --git a/net-http-server-application-database/src/main/java/org/xbib/net/http/server/application/database/DatabaseApplicationModule.java b/net-http-server-application-database/src/main/java/org/xbib/net/http/server/application/database/DatabaseApplicationModule.java index 4033a11..d09e5db 100644 --- a/net-http-server-application-database/src/main/java/org/xbib/net/http/server/application/database/DatabaseApplicationModule.java +++ b/net-http-server-application-database/src/main/java/org/xbib/net/http/server/application/database/DatabaseApplicationModule.java @@ -39,10 +39,10 @@ public class DatabaseApplicationModule extends BaseApplic @Override public void onOpen(Application application, HttpServerContext httpServerContext, HttpService httpService) { if (dataSource != null) { - httpServerContext.attributes().put("datasource", dataSource); + httpServerContext.getAttributes().put("datasource", dataSource); } if (databaseProvider != null) { - httpServerContext.attributes().put("databaseprovider", databaseProvider); + httpServerContext.getAttributes().put("databaseprovider", databaseProvider); } } diff --git a/net-http-server-application-web/src/main/java/org/xbib/net/http/server/application/web/Bootstrap.java b/net-http-server-application-web/src/main/java/org/xbib/net/http/server/application/web/Bootstrap.java index e16183c..849df19 100644 --- a/net-http-server-application-web/src/main/java/org/xbib/net/http/server/application/web/Bootstrap.java +++ b/net-http-server-application-web/src/main/java/org/xbib/net/http/server/application/web/Bootstrap.java @@ -141,7 +141,7 @@ public final class Bootstrap { " SSL session = " + ctx.httpRequest().as(HttpsRequest.class).getSSLSession() + " base URL = " + ctx.httpRequest().getBaseURL() + " parameter = " + ctx.httpRequest().getParameter().allToString() + - " attributes = " + ctx.attributes() + + " attributes = " + ctx.getAttributes() + " local address = " + ctx.httpRequest().getLocalAddress() + " remote address = " + ctx.httpRequest().getRemoteAddress()); ctx.done(); diff --git a/net-http-server-application-web/src/main/java/org/xbib/net/http/server/application/web/WebApplication.java b/net-http-server-application-web/src/main/java/org/xbib/net/http/server/application/web/WebApplication.java index 33a7434..9cf92b2 100644 --- a/net-http-server-application-web/src/main/java/org/xbib/net/http/server/application/web/WebApplication.java +++ b/net-http-server-application-web/src/main/java/org/xbib/net/http/server/application/web/WebApplication.java @@ -35,7 +35,7 @@ public class WebApplication extends BaseApplication { protected HttpHandler buildIncomingSessionHandler(HttpServerContext httpServerContext) { @SuppressWarnings("unchecked") - Codec sessionCodec = httpServerContext.attributes().get(Codec.class, "sessioncodec"); + Codec sessionCodec = httpServerContext.getAttributes().get(Codec.class, "sessioncodec"); return new IncomingSessionHandler( getSecret(), "HmacSHA1", @@ -49,7 +49,7 @@ public class WebApplication extends BaseApplication { protected OutgoingSessionHandler buildOutgoingSessionHandler(HttpServerContext httpServerContext) { @SuppressWarnings("unchecked") - Codec sessionCodec = httpServerContext.attributes().get(Codec.class, "sessioncodec"); + Codec sessionCodec = httpServerContext.getAttributes().get(Codec.class, "sessioncodec"); return new OutgoingSessionHandler( getSecret(), "HmacSHA1", diff --git a/net-http-server-netty-secure/src/test/java/org/xbib/net/http/server/netty/secure/test/NettyHttpsServerMultiRequestLoadTest.java b/net-http-server-netty-secure/src/test/java/org/xbib/net/http/server/netty/secure/test/NettyHttpsServerMultiRequestLoadTest.java index c667a62..195464d 100644 --- a/net-http-server-netty-secure/src/test/java/org/xbib/net/http/server/netty/secure/test/NettyHttpsServerMultiRequestLoadTest.java +++ b/net-http-server-netty-secure/src/test/java/org/xbib/net/http/server/netty/secure/test/NettyHttpsServerMultiRequestLoadTest.java @@ -74,7 +74,7 @@ public class NettyHttpsServerMultiRequestLoadTest { " SSL peer host = " + ctx.httpRequest().as(HttpsRequest.class).getSSLSession() + " base URL = " + ctx.httpRequest().getBaseURL() + " parameter = " + ctx.httpRequest().getParameter().allToString() + - " attributes = " + ctx.attributes() + + " attributes = " + ctx.getAttributes() + " local address = " + ctx.httpRequest().getLocalAddress() + " remote address = " + ctx.httpRequest().getRemoteAddress()); }) @@ -158,7 +158,7 @@ public class NettyHttpsServerMultiRequestLoadTest { " SSL session = " + ctx.httpRequest().as(HttpsRequest.class).getSSLSession() + " base URL = " + ctx.httpRequest().getBaseURL() + " parameter = " + ctx.httpRequest().getParameter().allToString() + - " attributes = " + ctx.attributes() + + " attributes = " + ctx.getAttributes() + " local address = " + ctx.httpRequest().getLocalAddress() + " remote address = " + ctx.httpRequest().getRemoteAddress()); }) diff --git a/net-http-server-netty-secure/src/test/java/org/xbib/net/http/server/netty/secure/test/NettyHttpsServerTest.java b/net-http-server-netty-secure/src/test/java/org/xbib/net/http/server/netty/secure/test/NettyHttpsServerTest.java index a659bfd..38a16a0 100644 --- a/net-http-server-netty-secure/src/test/java/org/xbib/net/http/server/netty/secure/test/NettyHttpsServerTest.java +++ b/net-http-server-netty-secure/src/test/java/org/xbib/net/http/server/netty/secure/test/NettyHttpsServerTest.java @@ -77,7 +77,7 @@ public class NettyHttpsServerTest { " SSL peer host = " + ctx.httpRequest().as(HttpsRequest.class).getSSLSession() + " base URL = " + ctx.httpRequest().getBaseURL() + " parameter = " + ctx.httpRequest().getParameter().allToString() + - " attributes = " + ctx.attributes() + + " attributes = " + ctx.getAttributes() + " local address = " + ctx.httpRequest().getLocalAddress() + " remote address = " + ctx.httpRequest().getRemoteAddress()); }) @@ -152,7 +152,7 @@ public class NettyHttpsServerTest { " SSL session = " + ctx.httpRequest().as(HttpsRequest.class).getSSLSession() + " base URL = " + ctx.httpRequest().getBaseURL() + " parameter = " + ctx.httpRequest().getParameter().allToString() + - " attributes = " + ctx.attributes() + + " attributes = " + ctx.getAttributes() + " local address = " + ctx.httpRequest().getLocalAddress() + " remote address = " + ctx.httpRequest().getRemoteAddress()); }) diff --git a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttp2ServerMultiRequestLoadTest.java b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttp2ServerMultiRequestLoadTest.java index eff123e..71c7792 100644 --- a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttp2ServerMultiRequestLoadTest.java +++ b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttp2ServerMultiRequestLoadTest.java @@ -53,7 +53,7 @@ public class NettyHttp2ServerMultiRequestLoadTest { ctx.write("domain: " + " base URL = " + ctx.httpRequest().getBaseURL() + " parameter = " + ctx.httpRequest().getParameter().allToString() + - " attributes = " + ctx.attributes() + + " attributes = " + ctx.getAttributes() + " local address = " + ctx.httpRequest().getLocalAddress() + " remote address = " + ctx.httpRequest().getRemoteAddress()); }) diff --git a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerFailureTest.java b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerFailureTest.java index 4fba98a..94e9cc5 100644 --- a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerFailureTest.java +++ b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerFailureTest.java @@ -60,7 +60,7 @@ public class NettyHttpServerFailureTest { " parameter = " + ctx.httpRequest().getParameter().allToString() + " local address = " + ctx.httpRequest().getLocalAddress() + " remote address = " + ctx.httpRequest().getRemoteAddress() + - " attributes = " + ctx.attributes() + " attributes = " + ctx.getAttributes() ); }) .build()) diff --git a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerMultiRequestLoadTest.java b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerMultiRequestLoadTest.java index a59ee3c..839d1dd 100644 --- a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerMultiRequestLoadTest.java +++ b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerMultiRequestLoadTest.java @@ -53,7 +53,7 @@ public class NettyHttpServerMultiRequestLoadTest { ctx.write("domain: " + " base URL = " + ctx.httpRequest().getBaseURL() + " parameter = " + ctx.httpRequest().getParameter().allToString() + - " attributes = " + ctx.attributes() + + " attributes = " + ctx.getAttributes() + " local address = " + ctx.httpRequest().getLocalAddress() + " remote address = " + ctx.httpRequest().getRemoteAddress()); }) diff --git a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerTest.java b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerTest.java index 014a71a..9b3792a 100644 --- a/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerTest.java +++ b/net-http-server-netty/src/test/java/org/xbib/net/http/netty/test/NettyHttpServerTest.java @@ -54,7 +54,7 @@ public class NettyHttpServerTest { " parameter = " + ctx.httpRequest().getParameter().allToString() + " local address = " + ctx.httpRequest().getLocalAddress() + " remote address = " + ctx.httpRequest().getRemoteAddress() + - " attributes = " + ctx.attributes() + " attributes = " + ctx.getAttributes() ); }) .build()) diff --git a/net-http-server-simple-secure/src/test/resources/logging.properties b/net-http-server-simple-secure/src/test/resources/logging.properties index d9913d4..4416a73 100644 --- a/net-http-server-simple-secure/src/test/resources/logging.properties +++ b/net-http-server-simple-secure/src/test/resources/logging.properties @@ -1,4 +1,4 @@ -handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler +handlers=java.util.logging.ConsoleHandler .level=ALL java.util.logging.ConsoleHandler.level=ALL java.util.logging.ConsoleHandler.formatter=org.xbib.net.util.ThreadLoggingFormatter diff --git a/net-http-server-simple/src/test/resources/logging.properties b/net-http-server-simple/src/test/resources/logging.properties index f8086a4..4416a73 100644 --- a/net-http-server-simple/src/test/resources/logging.properties +++ b/net-http-server-simple/src/test/resources/logging.properties @@ -1,9 +1,5 @@ -handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler +handlers=java.util.logging.ConsoleHandler .level=ALL -java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL %4$-7s [%3$s] %5$s %6$s%n java.util.logging.ConsoleHandler.level=ALL -java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.FileHandler.level=ALL -java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.FileHandler.pattern=build/net.log +java.util.logging.ConsoleHandler.formatter=org.xbib.net.util.ThreadLoggingFormatter jdk.event.security.level=INFO diff --git a/net-http-server/build.gradle b/net-http-server/build.gradle index e3032b3..0589dca 100644 --- a/net-http-server/build.gradle +++ b/net-http-server/build.gradle @@ -3,4 +3,5 @@ dependencies { api libs.config implementation libs.settings.datastructures.json implementation libs.settings.datastructures.yaml + implementation libs.datastructures.json.tiny } diff --git a/net-http-server/src/main/java/module-info.java b/net-http-server/src/main/java/module-info.java index 49fae31..1896e13 100644 --- a/net-http-server/src/main/java/module-info.java +++ b/net-http-server/src/main/java/module-info.java @@ -24,6 +24,7 @@ module org.xbib.net.http.server { requires org.xbib.net.mime; requires org.xbib.net.http; requires org.xbib.datastructures.common; + requires org.xbib.datastructures.json.tiny; requires org.xbib.config; requires java.logging; requires java.naming; diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/BaseApplication.java b/net-http-server/src/main/java/org/xbib/net/http/server/BaseApplication.java index 52c6f44..90267d8 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/BaseApplication.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/BaseApplication.java @@ -143,7 +143,7 @@ public class BaseApplication implements Application { HttpResponseStatus httpResponseStatus) { Future future = executor.submit(() -> { HttpServerContext httpServerContext = createContext(null, httpRequestBuilder, httpResponseBuilder); - httpServerContext.attributes().put("responsebuilder", httpResponseBuilder); + httpServerContext.getAttributes().put("responsebuilder", httpResponseBuilder); try { getRouter().routeStatus(httpResponseStatus, httpServerContext); } catch (Throwable t) { @@ -159,11 +159,11 @@ public class BaseApplication implements Application { HttpRequestBuilder requestBuilder, HttpResponseBuilder responseBuilder) { HttpServerContext httpServerContext = new BaseHttpServerContext(this, domain, requestBuilder, responseBuilder); - httpServerContext.attributes().put("requestbuilder", requestBuilder); - httpServerContext.attributes().put("responsebuilder", responseBuilder); + httpServerContext.getAttributes().put("requestbuilder", requestBuilder); + httpServerContext.getAttributes().put("responsebuilder", responseBuilder); this.sessionCodec = buildSessionCodec(httpServerContext); if (sessionCodec != null) { - httpServerContext.attributes().put("sessioncodec", sessionCodec); + httpServerContext.getAttributes().put("sessioncodec", sessionCodec); } this.incomingSessionHandler = buildIncomingSessionHandler(httpServerContext); this.outgoingSessionHandler = buildOutgoingSessionHandler(httpServerContext); @@ -188,7 +188,7 @@ public class BaseApplication implements Application { protected HttpHandler buildIncomingSessionHandler(HttpServerContext httpServerContext) { @SuppressWarnings("unchecked") - Codec sessionCodec = httpServerContext.attributes().get(Codec.class, "sessioncodec"); + Codec sessionCodec = httpServerContext.getAttributes().get(Codec.class, "sessioncodec"); return new IncomingSessionHandler( getSecret(), "HmacSHA1", @@ -202,7 +202,7 @@ public class BaseApplication implements Application { protected HttpHandler buildOutgoingSessionHandler(HttpServerContext httpServerContext) { @SuppressWarnings("unchecked") - Codec sessionCodec = httpServerContext.attributes().get(Codec.class, "sessioncodec"); + Codec sessionCodec = httpServerContext.getAttributes().get(Codec.class, "sessioncodec"); return new OutgoingSessionHandler( getSecret(), "HmacSHA1", diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/BaseHttpRequest.java b/net-http-server/src/main/java/org/xbib/net/http/server/BaseHttpRequest.java index 27b7ba4..f26c1c5 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/BaseHttpRequest.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/BaseHttpRequest.java @@ -91,7 +91,7 @@ public abstract class BaseHttpRequest implements HttpRequest { } @Override - public Attributes attributes() { + public Attributes getAttributes() { return attributes; } } diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/BaseHttpServerContext.java b/net-http-server/src/main/java/org/xbib/net/http/server/BaseHttpServerContext.java index 9f28870..5f09771 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/BaseHttpServerContext.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/BaseHttpServerContext.java @@ -1,10 +1,13 @@ package org.xbib.net.http.server; +import java.util.Map; +import org.xbib.datastructures.json.tiny.Json; import org.xbib.net.Attributes; import org.xbib.net.Parameter; import org.xbib.net.ParameterBuilder; import org.xbib.net.URL; import org.xbib.net.buffer.DataBuffer; +import org.xbib.net.http.HttpHeaderNames; import org.xbib.net.http.HttpHeaderValues; import org.xbib.net.http.HttpHeaders; import org.xbib.net.http.HttpMethod; @@ -39,14 +42,14 @@ public class BaseHttpServerContext implements HttpServerContext { private final HttpResponseBuilder httpResponseBuilder; + private final Attributes attributes; + private HttpRouteResolver.Result pathResolverResult; private String contextPath; private URL contextURL; - private Attributes attributes; - private HttpRequest httpRequest; private boolean done; @@ -131,12 +134,8 @@ public class BaseHttpServerContext implements HttpServerContext { return application.resolve(path); } - public void setAttributes(Attributes attributes) { - this.attributes = attributes; - } - @Override - public Attributes attributes() { + public Attributes getAttributes() { return attributes; } @@ -223,6 +222,22 @@ public class BaseHttpServerContext implements HttpServerContext { formParameterBuilder.addPercentEncodedBody(charBuffer.toString()); } } + String contentType = httpRequestBuilder.getHeaders().get(HttpHeaderNames.CONTENT_TYPE); + if (contentType != null && contentType.contains(HttpHeaderValues.APPLICATION_JSON)) { + String content = httpRequestBuilder.getBodyAsChars(StandardCharsets.UTF_8).toString(); + try { + Map map = Json.toMap(content); + for (Map.Entry entry : map.entrySet()) { + if (entry.getValue() instanceof Iterable iterable) { + iterable.forEach(it -> formParameterBuilder.add(entry.getKey(), it)); + } else { + formParameterBuilder.add(entry.getKey(), entry.getValue()); + } + } + } catch (Exception e) { + logger.log(Level.WARNING, "unable to decode json body: " + e.getMessage(), e); + } + } CookieBox cookieBox = attributes.get(CookieBox.class, "incomingcookies"); ParameterBuilder cookieParameterBuilder = Parameter.builder().domain(Parameter.Domain.COOKIE); if (cookieBox != null) { diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/HttpRequest.java b/net-http-server/src/main/java/org/xbib/net/http/server/HttpRequest.java index 4d3a983..908c3c4 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/HttpRequest.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/HttpRequest.java @@ -39,5 +39,5 @@ public interface HttpRequest extends Request { InputStream getInputStream(); - Attributes attributes(); + Attributes getAttributes(); } diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/HttpServerContext.java b/net-http-server/src/main/java/org/xbib/net/http/server/HttpServerContext.java index 2304b5c..75eac5a 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/HttpServerContext.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/HttpServerContext.java @@ -20,7 +20,7 @@ public interface HttpServerContext { void setResolverResult(HttpRouteResolver.Result result); - Attributes attributes(); + Attributes getAttributes(); void done(); diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/auth/BasicAuthenticationHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/auth/BasicAuthenticationHandler.java index 093cccc..a70c510 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/auth/BasicAuthenticationHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/auth/BasicAuthenticationHandler.java @@ -24,7 +24,7 @@ public class BasicAuthenticationHandler extends LoginAuthenticationHandler imple @Override public void handle(HttpServerContext context) throws IOException { HttpRequest httpRequest = context.httpRequest(); - UserProfile userProfile = context.attributes().get(UserProfile.class, "userprofile"); + UserProfile userProfile = context.getAttributes().get(UserProfile.class, "userprofile"); if (userProfile != null && userProfile.getUserId() != null) { return; } @@ -41,7 +41,7 @@ public class BasicAuthenticationHandler extends LoginAuthenticationHandler imple userProfile = new BaseUserProfile(); try { authenticate(userProfile, tokens[0], tokens[1], httpRequest); - context.attributes().put("userprofile", userProfile); + context.getAttributes().put("userprofile", userProfile); return; } catch (Exception e) { logger.log(Level.WARNING, "authentication error"); diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/auth/FormAuthenticationHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/auth/FormAuthenticationHandler.java index d16f744..3589b65 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/auth/FormAuthenticationHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/auth/FormAuthenticationHandler.java @@ -40,14 +40,14 @@ public class FormAuthenticationHandler extends LoginAuthenticationHandler implem logger.log(Level.WARNING, "no loginPage configured"); return; } - UserProfile userProfile = context.attributes().get(UserProfile.class, "userprofile"); + UserProfile userProfile = context.getAttributes().get(UserProfile.class, "userprofile"); if (userProfile != null && userProfile.getUserId() != null) { logger.log(Level.FINE, "user id already set: " + userProfile.getUserId()); return; } // always add an "anonymous" user profile userProfile = new BaseUserProfile(); - context.attributes().put("userprofile", userProfile); + context.getAttributes().put("userprofile", userProfile); Parameter parameter = context.httpRequest().getParameter(); if (!parameter.containsKey(usernameParameter, Parameter.Domain.FORM)) { logger.log(Level.WARNING, "usernameParameter not set, unable to authenticate"); @@ -76,9 +76,9 @@ public class FormAuthenticationHandler extends LoginAuthenticationHandler implem // this will redirect internally to login page, and back to the original path. // We need a full path resolve against the server URL. logger.log(Level.FINE, "templatePath = " + loginPage); - context.attributes().put("templatePath", loginPage); + context.getAttributes().put("templatePath", loginPage); URL loc = context.getContextURL().resolve(context.httpRequest().getRequestURI()).normalize(); logger.log(Level.FINE, "context URL = " + context.getContextURL() + " request URI = " + context.httpRequest().getRequestURI() + " loc = " + loc); - context.attributes().put("originalPath", loc.toExternalForm()); + context.getAttributes().put("originalPath", loc.toExternalForm()); } } diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/auth/LoginAuthenticationHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/auth/LoginAuthenticationHandler.java index 5834c64..e92a189 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/auth/LoginAuthenticationHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/auth/LoginAuthenticationHandler.java @@ -36,7 +36,7 @@ public class LoginAuthenticationHandler implements HttpHandler { @Override public void handle(HttpServerContext context) throws IOException { - UserProfile userProfile = context.attributes().get(UserProfile.class, "userprofile"); + UserProfile userProfile = context.getAttributes().get(UserProfile.class, "userprofile"); if (userProfile != null && userProfile.getUserId() != null) { return; } @@ -46,7 +46,7 @@ public class LoginAuthenticationHandler implements HttpHandler { (String) context.httpRequest().getParameter().get(userParameterName, Parameter.Domain.DEFAULT, Parameter.Domain.FORM), (String) context.httpRequest().getParameter().get(passwordParameterName, Parameter.Domain.DEFAULT, Parameter.Domain.FORM), context.httpRequest()); - context.attributes().put("userprofile", userProfile); + context.getAttributes().put("userprofile", userProfile); } catch (Exception e) { logger.log(Level.SEVERE, "authentication error"); } diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/cookie/IncomingCookieHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/cookie/IncomingCookieHandler.java index b6dbc25..bcff431 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/cookie/IncomingCookieHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/cookie/IncomingCookieHandler.java @@ -30,7 +30,7 @@ public class IncomingCookieHandler implements HttpHandler { cookieBox.addAll(CookieDecoder.LAX.decode(cookieString)); } if (!cookieBox.isEmpty()) { - context.attributes().put("incomingcookies", cookieBox); + context.getAttributes().put("incomingcookies", cookieBox); } } diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/cookie/OutgoingCookieHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/cookie/OutgoingCookieHandler.java index e503420..f1a638e 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/cookie/OutgoingCookieHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/cookie/OutgoingCookieHandler.java @@ -18,7 +18,7 @@ public class OutgoingCookieHandler implements HttpHandler { @Override public void handle(HttpServerContext context) throws HttpException { - CookieBox cookieBox = context.attributes().get(CookieBox.class, "outgoingcookies"); + CookieBox cookieBox = context.getAttributes().get(CookieBox.class, "outgoingcookies"); if (cookieBox != null) { for (Cookie cookie : cookieBox) { context.response().addCookie(cookie); diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/handler/InternalServerErrorHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/handler/InternalServerErrorHandler.java index 8680cc3..8ac5e43 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/handler/InternalServerErrorHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/handler/InternalServerErrorHandler.java @@ -18,7 +18,7 @@ public class InternalServerErrorHandler implements HttpErrorHandler { @Override public void handle(HttpServerContext context) throws IOException { - Throwable throwable = context.attributes().get(Throwable.class, "_throwable"); + Throwable throwable = context.getAttributes().get(Throwable.class, "_throwable"); if (throwable != null) { logger.log(Level.SEVERE, throwable.getMessage(), throwable); } diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/log/CombinedFormatLogger.java b/net-http-server/src/main/java/org/xbib/net/http/server/log/CombinedFormatLogger.java index d192b9d..63a1193 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/log/CombinedFormatLogger.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/log/CombinedFormatLogger.java @@ -28,7 +28,7 @@ public class CombinedFormatLogger implements HttpHandler { HttpResponseStatus httpResponseStatus = httpServerContext.response().getResponseStatus(); int statusInteger = httpResponseStatus != null ? httpResponseStatus.code() : 0; Long contentLength = httpServerContext.response().getLength(); - UserProfile userProfile = httpServerContext.attributes().get(UserProfile.class, "userprofile"); + UserProfile userProfile = httpServerContext.getAttributes().get(UserProfile.class, "userprofile"); String user = userProfile != null ? userProfile.getEffectiveUserId() : ""; String referer = request.getHeaders().get(HttpHeaderNames.REFERER); referer = referer != null ? referer : ""; diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/log/CommonFormatLogger.java b/net-http-server/src/main/java/org/xbib/net/http/server/log/CommonFormatLogger.java index f039005..dc5d909 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/log/CommonFormatLogger.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/log/CommonFormatLogger.java @@ -27,7 +27,7 @@ public class CommonFormatLogger implements HttpHandler { HttpResponseStatus httpResponseStatus = httpServerContext.response().getResponseStatus(); int statusInteger = httpResponseStatus != null ? httpResponseStatus.code() : 0; Long contentLength = httpServerContext.response().getLength(); - UserProfile userProfile = httpServerContext.attributes().get(UserProfile.class, "userprofile"); + UserProfile userProfile = httpServerContext.getAttributes().get(UserProfile.class, "userprofile"); String user = userProfile != null ? userProfile.getEffectiveUserId() : ""; String message = String.format(Locale.US, LOG_FORMAT, inetAddressString, diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/resource/AbstractResourceHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/resource/AbstractResourceHandler.java index e8f5ae1..5c51706 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/resource/AbstractResourceHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/resource/AbstractResourceHandler.java @@ -95,22 +95,22 @@ public abstract class AbstractResourceHandler implements HttpHandler { } context.done(); } else { - logger.log(Level.FINE, "handle: generate cacheable resource"); + logger.log(Level.FINER, "handle: generate cacheable resource"); generateCacheableResource(context, resource); context.done(); } - logger.log(Level.FINE, "handle: done"); + logger.log(Level.FINER, "handle: done"); } private void generateCacheableResource(HttpServerContext context, Resource resource) throws IOException { // if resource is length of 0, there is nothing to send. Do not send any content, if (resource.getLength() == 0) { - logger.log(Level.FINE, "the resource length is 0, do nothing"); + logger.log(Level.FINER, "the resource length is 0, do nothing"); context.response().build().flush(); return; } HttpHeaders headers = context.request().getHeaders(); - logger.log(Level.FINE, "before generating resource, the response headers are " + context.response().getHeaders()); + logger.log(Level.FINER, "before generating resource, the response headers are " + context.response().getHeaders()); String contentType = resource.getMimeType(); context.response().addHeader(HttpHeaderNames.CONTENT_TYPE, contentType); // heuristic for inline disposition diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/resource/FileResourceHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/resource/FileResourceHandler.java index 5315e0e..53b4e2b 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/resource/FileResourceHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/resource/FileResourceHandler.java @@ -37,8 +37,8 @@ public class FileResourceHandler extends AbstractResourceHandler { @Override protected Resource createResource(HttpServerContext httpServerContext) throws IOException { - String pathSpec = httpServerContext.attributes().containsKey("templatePath") ? - (String) httpServerContext.attributes().get("templatePath") : + String pathSpec = httpServerContext.getAttributes().containsKey("templatePath") ? + (String) httpServerContext.getAttributes().get("templatePath") : pathNameOfResource != null ? pathNameOfResource : httpServerContext.getContextPath(); if (pathSpec == null || pathSpec.isEmpty()) { throw new IllegalArgumentException("path must not be null or empty"); @@ -106,7 +106,7 @@ public class FileResourceHandler extends AbstractResourceHandler { protected FileResource(HttpServerContext httpServerContext, String resourcePath) throws IOException { this.resourcePath = resourcePath; - Application application = httpServerContext.attributes().get(Application.class, "application"); + Application application = httpServerContext.getAttributes().get(Application.class, "application"); Path root = application.getHome(); if (root == null) { throw new IllegalArgumentException("no home path set for template resource resolving"); diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/resource/HtmlTemplateResource.java b/net-http-server/src/main/java/org/xbib/net/http/server/resource/HtmlTemplateResource.java index f00f73b..88062b1 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/resource/HtmlTemplateResource.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/resource/HtmlTemplateResource.java @@ -45,7 +45,7 @@ public class HtmlTemplateResource implements HttpServerResource { HttpServerContext httpServerContext) throws IOException { this.templateResourceHandler = templateResourceHandler; String indexFileName = templateResourceHandler.getIndexFileName(); - Application application = httpServerContext.attributes().get(Application.class, "application"); + Application application = httpServerContext.getAttributes().get(Application.class, "application"); this.negotiateLocale = application.getSettings().getAsBoolean("negotiateLocale", false); Path root = templateResourceHandler.getRoot(); root = root != null ? root : application.getHome(); diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/resource/WebRootResourceResolver.java b/net-http-server/src/main/java/org/xbib/net/http/server/resource/WebRootResourceResolver.java index c45ab80..3a38862 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/resource/WebRootResourceResolver.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/resource/WebRootResourceResolver.java @@ -29,8 +29,8 @@ public class WebRootResourceResolver implements ResourceResolver { public Resource resolveResource(HttpServerContext httpServerContext, String templateName, List indexFiles) throws IOException { - String pathSpec = httpServerContext.attributes().containsKey("forwardedPath") ? - (String) httpServerContext.attributes().get("forwardedPath") : + String pathSpec = httpServerContext.getAttributes().containsKey("forwardedPath") ? + (String) httpServerContext.getAttributes().get("forwardedPath") : templateName != null ? templateName : httpServerContext.httpRequest().getRequestPath(); if (pathSpec == null || pathSpec.isEmpty()) { throw new IllegalArgumentException("path must not be null or empty"); diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/route/BaseHttpRouter.java b/net-http-server/src/main/java/org/xbib/net/http/server/route/BaseHttpRouter.java index 66b5b34..88d37d3 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/route/BaseHttpRouter.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/route/BaseHttpRouter.java @@ -73,6 +73,7 @@ public class BaseHttpRouter implements HttpRouter { @Override public void setApplication(Application application) { + Objects.requireNonNull(application); this.application = application; } @@ -88,7 +89,6 @@ public class BaseHttpRouter implements HttpRouter { @Override public void route(HttpRequestBuilder requestBuilder, HttpResponseBuilder responseBuilder) { - Objects.requireNonNull(application); Objects.requireNonNull(requestBuilder); Objects.requireNonNull(requestBuilder.getRequestURI()); Objects.requireNonNull(requestBuilder.getBaseURL()); @@ -139,7 +139,7 @@ public class BaseHttpRouter implements HttpRouter { break; } // after security checks, accept service, open and execute service - httpServerContext.attributes().put("service", httpService); + httpServerContext.getAttributes().put("service", httpService); application.getModules().forEach(module -> module.onOpen(application, httpServerContext, httpService)); logger.log(Level.FINEST, () -> "handling service " + httpService); httpService.handle(httpServerContext); @@ -187,7 +187,7 @@ public class BaseHttpRouter implements HttpRouter { @Override public void routeToErrorHandler(HttpServerContext httpServerContext, Throwable t) { - httpServerContext.attributes().put("_throwable", t); + httpServerContext.getAttributes().put("_throwable", t); httpServerContext.fail(); routeStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR, httpServerContext); } diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/session/IncomingSessionHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/session/IncomingSessionHandler.java index 539245d..5565c72 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/session/IncomingSessionHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/session/IncomingSessionHandler.java @@ -73,7 +73,7 @@ public class IncomingSessionHandler implements HttpHandler { return; } Session session = null; - CookieBox cookieBox = context.attributes().get(CookieBox.class, "incomingcookies"); + CookieBox cookieBox = context.getAttributes().get(CookieBox.class, "incomingcookies"); if (cookieBox != null) { for (Cookie cookie : cookieBox) { if (cookie.name().equals(sessionCookieName)) { @@ -84,11 +84,11 @@ public class IncomingSessionHandler implements HttpHandler { session = toSession(payload); UserProfile userProfile = newUserProfile(payload, session); if (userProfile != null) { - context.attributes().put("userprofile", userProfile); + context.getAttributes().put("userprofile", userProfile); } } catch (CookieSignatureException e) { // set exception in context to discard broken cookie later and render exception message - context.attributes().put("_throwable", e); + context.getAttributes().put("_throwable", e); } catch (Exception e) { logger.log(Level.SEVERE, e.getMessage(), e); throw new HttpException("unable to create session", context, HttpResponseStatus.INTERNAL_SERVER_ERROR); @@ -107,7 +107,7 @@ public class IncomingSessionHandler implements HttpHandler { throw new HttpException("unable to create session", context, HttpResponseStatus.INTERNAL_SERVER_ERROR); } } - context.attributes().put("session", session); + context.getAttributes().put("session", session); logger.log(Level.FINER, "incoming session " + session.id()); } diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/session/OutgoingSessionHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/session/OutgoingSessionHandler.java index 5fc5cb5..33cf7cf 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/session/OutgoingSessionHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/session/OutgoingSessionHandler.java @@ -88,21 +88,21 @@ public class OutgoingSessionHandler implements HttpHandler { logger.log(Level.FINE, "suffix " + suffix + " blocking outgoing session handling"); return; } - CookieBox cookieBox = context.attributes().get(CookieBox.class, "outgoingcookies"); + CookieBox cookieBox = context.getAttributes().get(CookieBox.class, "outgoingcookies"); if (cookieBox == null) { cookieBox = new CookieBox(); } - Application application = context.attributes().get(Application.class, "application"); - UserProfile userProfile = context.attributes().get(UserProfile.class, "userprofile"); + Application application = context.getAttributes().get(Application.class, "application"); + UserProfile userProfile = context.getAttributes().get(UserProfile.class, "userprofile"); String host = context.getContextURL().getHost(); String path = application.getContextPath(); - Throwable throwable = context.attributes().get(Throwable.class, "_throwable"); + Throwable throwable = context.getAttributes().get(Throwable.class, "_throwable"); if (throwable instanceof CookieSignatureException) { cookieBox = new CookieBox(); cookieBox.add(createEmptyCookie(host, path)); return; } - Session session = context.attributes().get(Session.class, "session"); + Session session = context.getAttributes().get(Session.class, "session"); if (session != null) { try { if (userProfile != null) { @@ -125,7 +125,7 @@ public class OutgoingSessionHandler implements HttpHandler { } } logger.log(Level.FINER, "outgoing cookies = " + cookieBox); - context.attributes().put("outgoingcookies", cookieBox); + context.getAttributes().put("outgoingcookies", cookieBox); } private Cookie encodeCookie(Session session, String host, String path) throws IOException, diff --git a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/DefaultMarkupTemplate.java b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/DefaultMarkupTemplate.java index 1db90bf..3bb7a89 100644 --- a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/DefaultMarkupTemplate.java +++ b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/DefaultMarkupTemplate.java @@ -45,11 +45,11 @@ public abstract class DefaultMarkupTemplate extends BaseTemplate { this.application = (Application) model.get("application"); Objects.requireNonNull(this.application, "application must not be null"); this.responseBuilder = (HttpResponseBuilder) model.get("responsebuilder"); - Objects.requireNonNull(this.responseBuilder, "response must not be null"); + Objects.requireNonNull(this.responseBuilder, "responsebuilder must not be null"); this.request = (HttpRequest) model.get("request"); - // request can be null in error templates + Objects.requireNonNull(this.request, "request must not be null"); this.session = (Session) model.get("session"); - // session can be null in error templates + // session can be null in environments without sessions } public void setContentType(String contentType) { @@ -105,23 +105,27 @@ public abstract class DefaultMarkupTemplate extends BaseTemplate { } public String contextPath(String rel) { - return urlProto(rel, false); + return url(rel, false); } public String url(String rel) { - return urlProto(rel, true); + return url(rel, true); } - public String urlProto(String rel, boolean absolute) { + public String url(String rel, boolean absolute) { String prefix = application.getSettings().get("web.prefix", "/"); if (!prefix.endsWith("/")) { prefix = prefix + "/"; } - URL url = request.getServerURL().resolve(prefix).resolve(rel); - logger.log(Level.FINE, "server base URL = " + request.getServerURL() + - " prefix = " + prefix + - " rel = " + rel + " --> " + url); - return absolute ? url.toExternalForm() : toOrigin(url); + if (request != null) { + URL url = request.getServerURL().resolve(prefix).resolve(rel); + logger.log(Level.FINE, "server base URL = " + request.getServerURL() + + " prefix = " + prefix + " rel = " + rel + " --> " + url); + return absolute ? url.toExternalForm() : toOrigin(url); + } else { + logger.log(Level.WARNING, "request is null, returning " + prefix + rel); + return prefix + rel; + } } public String encodeUrl(String rel) { @@ -213,15 +217,15 @@ public abstract class DefaultMarkupTemplate extends BaseTemplate { } public String bootstrapCss() { - return contextPath("webjars/bootstrap/5.2.2/dist/css/bootstrap.min.css"); + return contextPath("webjars/bootstrap/5.2.3/css/bootstrap.min.css"); } public String bootstrapJs() { - return contextPath("webjars/bootstrap/5.2.2/dist/js/bootstrap.min.js"); + return contextPath("webjars/bootstrap/5.2.3/js/bootstrap.min.js"); } public String jqueryJs() { - return contextPath("webjars/jquery/3.6.3/dist/jquery.min.js"); + return contextPath("webjars/jquery/3.6.4/jquery.min.js"); } public String fontawesomeCss() { diff --git a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyHttpResonseStatusTemplateResource.java b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyHttpResonseStatusTemplateResource.java index 06f9e63..bd6c6fe 100644 --- a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyHttpResonseStatusTemplateResource.java +++ b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyHttpResonseStatusTemplateResource.java @@ -32,10 +32,10 @@ class GroovyHttpResonseStatusTemplateResource extends GroovyTemplateResource { @Override public void render(HttpServerContext httpServerContext) throws IOException { logger.log(Level.FINE, "rendering HTTP status by Groovy"); - httpServerContext.attributes().put("_status", httpResponseStatus); - httpServerContext.attributes().put("_message", message); - httpServerContext.attributes().put("_resource", this); - Application application = httpServerContext.attributes().get(Application.class, "application"); + httpServerContext.getAttributes().put("_status", httpResponseStatus); + httpServerContext.getAttributes().put("_message", message); + httpServerContext.getAttributes().put("_resource", this); + Application application = httpServerContext.getAttributes().get(Application.class, "application"); GroovyMarkupTemplateHandler groovyMarkupTemplateHandler = new GroovyMarkupTemplateHandler(application); logger.log(Level.FINE, "handle groovyMarkupTemplateHandler"); groovyMarkupTemplateHandler.handle(httpServerContext); diff --git a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyInternalServerErrorHandler.java b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyInternalServerErrorHandler.java index 9dc08d3..620ed66 100644 --- a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyInternalServerErrorHandler.java +++ b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyInternalServerErrorHandler.java @@ -26,7 +26,7 @@ public class GroovyInternalServerErrorHandler extends GroovyTemplateResourceHand } private String createMessage(HttpServerContext context) throws IOException { - Throwable throwable = context.attributes().get(Throwable.class, "_throwable"); + Throwable throwable = context.getAttributes().get(Throwable.class, "_throwable"); if (throwable != null) { logger.log(Level.SEVERE, throwable.getMessage(), throwable); } diff --git a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyMarkupTemplateHandler.java b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyMarkupTemplateHandler.java index 367210a..f8071e5 100644 --- a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyMarkupTemplateHandler.java +++ b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyMarkupTemplateHandler.java @@ -60,14 +60,14 @@ public class GroovyMarkupTemplateHandler implements HttpHandler { @Override public void handle(HttpServerContext context) throws IOException { - DefaultTemplateResolver templateResolver = context.attributes().get(DefaultTemplateResolver.class, "templateresolver"); + DefaultTemplateResolver templateResolver = context.getAttributes().get(DefaultTemplateResolver.class, "templateresolver"); if (templateResolver == null) { - context.attributes().put("templateresolver", this.templateResolver); + context.getAttributes().put("templateresolver", this.templateResolver); logger.log(Level.FINER, "setting templateresolver " + this.templateResolver); } - TemplateEngine templateEngine = context.attributes().get(TemplateEngine.class, "templateengine"); + TemplateEngine templateEngine = context.getAttributes().get(TemplateEngine.class, "templateengine"); if (templateEngine == null) { - context.attributes().put("templateengine", this.templateEngine); + context.getAttributes().put("templateengine", this.templateEngine); logger.log(Level.FINER, "setting templateengine " + this.templateEngine); } } diff --git a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateApplicationModule.java b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateApplicationModule.java index 85e9234..3901797 100644 --- a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateApplicationModule.java +++ b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateApplicationModule.java @@ -64,9 +64,9 @@ public class GroovyTemplateApplicationModule extends BaseApplicationModule { @Override public void onOpen(Application application, HttpServerContext httpServerContext, HttpService httpService, HttpRequest httpRequest) { - httpServerContext.attributes().put("request", httpRequest); - httpServerContext.attributes().put("params", httpRequest.getParameter().asSingleValuedMap()); - application.getModules().forEach(module -> httpServerContext.attributes().put(module.getName(), module)); + httpServerContext.getAttributes().put("request", httpRequest); + httpServerContext.getAttributes().put("params", httpRequest.getParameter().asSingleValuedMap()); + application.getModules().forEach(module -> httpServerContext.getAttributes().put(module.getName(), module)); } @Override diff --git a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateRenderer.java b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateRenderer.java index e1a8cfc..177e2da 100644 --- a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateRenderer.java +++ b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateRenderer.java @@ -19,14 +19,14 @@ public class GroovyTemplateRenderer implements HttpHandler { @Override public void handle(HttpServerContext context) throws IOException { - Writable writable = context.attributes().get(Writable.class, "writable"); + Writable writable = context.getAttributes().get(Writable.class, "writable"); if (writable != null) { DataBuffer dataBuffer = context.response().getDataBufferFactory().allocateBuffer(); try (OutputStream outputStream = dataBuffer.asOutputStream()) { Writer writer = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8); writable.writeTo(writer); } - HttpResponseStatus httpResponseStatus = context.attributes().get(HttpResponseStatus.class, "_status", HttpResponseStatus.OK); + HttpResponseStatus httpResponseStatus = context.getAttributes().get(HttpResponseStatus.class, "_status", HttpResponseStatus.OK); context.response() .setResponseStatus(httpResponseStatus) .setHeader("content-length", Integer.toString(dataBuffer.writePosition())) diff --git a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateResource.java b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateResource.java index cf8bb93..b053ae6 100644 --- a/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateResource.java +++ b/net-http-template-groovy/src/main/java/org/xbib/net/http/template/groovy/GroovyTemplateResource.java @@ -48,18 +48,18 @@ public class GroovyTemplateResource extends HtmlTemplateResource { @Override public void render(HttpServerContext httpServerContext) throws IOException { logger.log(Level.FINER, "rendering groovy template, path = " + getPath() + " isExists = " + isExists() + " isDirectory =" + isDirectory() ); - Application application = httpServerContext.attributes().get(Application.class, "application"); + Application application = httpServerContext.getAttributes().get(Application.class, "application"); if (application == null) { logger.log(Level.WARNING, "application is null"); return; } - TemplateEngine templateEngine = httpServerContext.attributes().get(TemplateEngine.class, "templateengine"); + TemplateEngine templateEngine = httpServerContext.getAttributes().get(TemplateEngine.class, "templateengine"); if (templateEngine == null) { logger.log(Level.WARNING, "template engine is null"); return; } Path templatePath = getPath(); - HttpService service = httpServerContext.attributes().get(HttpService.class, "service"); + HttpService service = httpServerContext.getAttributes().get(HttpService.class, "service"); if (service instanceof GroovyTemplateService groovyTemplateService) { if (groovyTemplateService.getTemplateName() != null) { templatePath = application.resolve(groovyTemplateService.getTemplateName()); @@ -69,7 +69,7 @@ public class GroovyTemplateResource extends HtmlTemplateResource { } } // status response handlers have priority - GroovyHttpResonseStatusTemplateResource resource = httpServerContext.attributes().get(GroovyHttpResonseStatusTemplateResource.class, "_resource"); + GroovyHttpResonseStatusTemplateResource resource = httpServerContext.getAttributes().get(GroovyHttpResonseStatusTemplateResource.class, "_resource"); if (resource != null) { String indexFileName = resource.getIndexFileName(); if (indexFileName != null) { @@ -78,7 +78,7 @@ public class GroovyTemplateResource extends HtmlTemplateResource { logger.log(Level.FINER, "rendering Groovy HTTP status response with templatePath = " + templatePath); } else { // override if 'templatePath' attribute is set - String overridePath = httpServerContext.attributes().get(String.class, "templatePath"); + String overridePath = httpServerContext.getAttributes().get(String.class, "templatePath"); if (overridePath != null) { logger.log(Level.FINER, "found override templatePath = " + overridePath); templatePath = application.resolve(overridePath); @@ -113,22 +113,22 @@ public class GroovyTemplateResource extends HtmlTemplateResource { Template template = templates.get(templatePath); Logger templateLogger = Logger.getLogger("template." + getName().replace('/', '.')); Binding binding = new Binding(); - httpServerContext.attributes().forEach(binding::setVariable); + httpServerContext.getAttributes().forEach(binding::setVariable); binding.setVariable("logger", templateLogger); binding.setVariable("log", templateLogger); application.getModules().forEach(m -> binding.setVariable(m.getName(), m)); - DefaultTemplateResolver templateResolver = httpServerContext.attributes().get(DefaultTemplateResolver.class, "templateresolver"); + DefaultTemplateResolver templateResolver = httpServerContext.getAttributes().get(DefaultTemplateResolver.class, "templateresolver"); if (templateResolver == null) { // for Groovy template engines without a resolver, no need to set a locale Writable writable = template.make(binding.getVariables()); - httpServerContext.attributes().put("writable", writable); + httpServerContext.getAttributes().put("writable", writable); return; } if (!negotiateLocale) { // if no locale negotiation configured, set always the applicaiton locale. This constant value never changes. templateResolver.setLocale(application.getLocale()); Writable writable = template.make(binding.getVariables()); - httpServerContext.attributes().put("writable", writable); + httpServerContext.getAttributes().put("writable", writable); return; } // handle programmatic locale change plus template making under lock so no other request/response can interrupt us @@ -146,12 +146,12 @@ public class GroovyTemplateResource extends HtmlTemplateResource { } } Writable writable = template.make(binding.getVariables()); - httpServerContext.attributes().put("writable", writable); + httpServerContext.getAttributes().put("writable", writable); } catch (Exception e) { // fail silently by ignoring negotation templateResolver.setLocale(application.getLocale()); Writable writable = template.make(binding.getVariables()); - httpServerContext.attributes().put("writable", writable); + httpServerContext.getAttributes().put("writable", writable); } finally { lock.unlock(); } diff --git a/net-http/src/test/resources/logging.properties b/net-http/src/test/resources/logging.properties index 3bb1ea4..039cb05 100644 --- a/net-http/src/test/resources/logging.properties +++ b/net-http/src/test/resources/logging.properties @@ -3,4 +3,4 @@ handlers=java.util.logging.ConsoleHandler java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL %4$-7s [%3$s] %5$s %6$s%n java.util.logging.ConsoleHandler.level=ALL java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -jdk.event.security.level=ALL +jdk.event.security.level=INFO diff --git a/settings.gradle b/settings.gradle index 4b7a1ee..c07dd66 100644 --- a/settings.gradle +++ b/settings.gradle @@ -26,8 +26,8 @@ dependencyResolutionManagement { library('jna', 'net.java.dev.jna', 'jna').version('5.12.1') library('oracle', 'com.oracle.database.jdbc', 'ojdbc11').version('21.7.0.0') library('groovy-templates', 'org.apache.groovy', 'groovy-templates').versionRef('groovy') - library('webjars-bootstrap', 'org.webjars.bower', 'bootstrap').version('5.2.2') - library('webjars-jquery', 'org.webjars.bower', 'jquery').version('3.6.3') + library('webjars-bootstrap', 'org.webjars', 'bootstrap').version('5.2.3') + library('webjars-jquery', 'org.webjars', 'jquery').version('3.6.4') library('webjars-fontawesome', 'org.webjars', 'font-awesome').version('6.3.0') library('net', 'org.xbib', 'net').versionRef('net') library('net-mime', 'org.xbib', 'net-mime').versionRef('net')