From f856c8f27c7fc1f48a5e8664da62e145da791912 Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Sat, 30 Dec 2023 17:19:15 +0200 Subject: [PATCH] #65 move all groovy-related code from "framework" to "fastergt" it allows to fully avoid Groovy dependencies for users with another templating engine (e.g. Kotlin templates). --- fastergt/build.gradle | 5 +++++ .../src/play/templates/ExecutableTemplate.java | 0 .../src/play/templates/FastTags.java | 0 .../src/play/templates/GroovyInlineTags.java | 0 .../src/play/templates/JavaExtensions.java | 14 +++----------- .../src/play/templates/TemplateParser.java | 0 .../test/play/templates/FastTagsTest.java | 0 .../test/play/templates/JavaExtensionsTest.java | 0 framework/build.gradle | 3 --- framework/src/play/Play.java | 4 ---- framework/src/play/utils/Utils.java | 13 +++++++++++++ javanet/src/play/server/javanet/PlayHandler.java | 4 ++-- netty3/src/play/server/netty3/PlayHandler.java | 8 ++++---- netty4/src/play/server/netty4/PlayHandler.java | 5 +++-- 14 files changed, 30 insertions(+), 26 deletions(-) rename {framework => fastergt}/src/play/templates/ExecutableTemplate.java (100%) rename {framework => fastergt}/src/play/templates/FastTags.java (100%) rename {framework => fastergt}/src/play/templates/GroovyInlineTags.java (100%) rename {framework => fastergt}/src/play/templates/JavaExtensions.java (97%) rename {framework => fastergt}/src/play/templates/TemplateParser.java (100%) rename {framework => fastergt}/test/play/templates/FastTagsTest.java (100%) rename {framework => fastergt}/test/play/templates/JavaExtensionsTest.java (100%) diff --git a/fastergt/build.gradle b/fastergt/build.gradle index cdf9db21..f54f1ae5 100644 --- a/fastergt/build.gradle +++ b/fastergt/build.gradle @@ -4,6 +4,11 @@ dependencies { transitive = false because "ECJ 3.34.0 dropped Java 11 compatibility, see https://github.com/eclipse-jdt/eclipse.jdt.core/commit/c25e22b15eebcc780b1a6c54d7af1911841c49b8" } + + // Groovy 4 can be found in org.apache.groovy + api("org.codehaus.groovy:groovy:$groovyVersion") + api("org.codehaus.groovy:groovy-xml:$groovyVersion") + implementation("org.apache.commons:commons-lang3:$commonsLangVersion") implementation "org.apache.commons:commons-text:$commonsTextVersion" testImplementation project(':framework').sourceSets.test.compileClasspath diff --git a/framework/src/play/templates/ExecutableTemplate.java b/fastergt/src/play/templates/ExecutableTemplate.java similarity index 100% rename from framework/src/play/templates/ExecutableTemplate.java rename to fastergt/src/play/templates/ExecutableTemplate.java diff --git a/framework/src/play/templates/FastTags.java b/fastergt/src/play/templates/FastTags.java similarity index 100% rename from framework/src/play/templates/FastTags.java rename to fastergt/src/play/templates/FastTags.java diff --git a/framework/src/play/templates/GroovyInlineTags.java b/fastergt/src/play/templates/GroovyInlineTags.java similarity index 100% rename from framework/src/play/templates/GroovyInlineTags.java rename to fastergt/src/play/templates/GroovyInlineTags.java diff --git a/framework/src/play/templates/JavaExtensions.java b/fastergt/src/play/templates/JavaExtensions.java similarity index 97% rename from framework/src/play/templates/JavaExtensions.java rename to fastergt/src/play/templates/JavaExtensions.java index 249ab276..c3f5c3d0 100644 --- a/framework/src/play/templates/JavaExtensions.java +++ b/fastergt/src/play/templates/JavaExtensions.java @@ -35,6 +35,7 @@ import java.util.TimeZone; import static org.apache.commons.text.StringEscapeUtils.escapeXml11; +import static play.utils.Utils.formatMemorySize; /** * Java extensions in templates @@ -255,17 +256,8 @@ public static String urlEncode(String entity) { return URLEncoder.encode(entity, encoding); } - public static String formatSize(Long bytes) { - if (bytes < 1024L) { - return bytes + " B"; - } - if (bytes < 1048576L) { - return bytes / 1024L + "KB"; - } - if (bytes < 1073741824L) { - return bytes / 1048576L + "MB"; - } - return bytes / 1073741824L + "GB"; + public static String formatSize(long bytes) { + return formatMemorySize(bytes); } public static String formatCurrency(Number number, String currencyCode) { diff --git a/framework/src/play/templates/TemplateParser.java b/fastergt/src/play/templates/TemplateParser.java similarity index 100% rename from framework/src/play/templates/TemplateParser.java rename to fastergt/src/play/templates/TemplateParser.java diff --git a/framework/test/play/templates/FastTagsTest.java b/fastergt/test/play/templates/FastTagsTest.java similarity index 100% rename from framework/test/play/templates/FastTagsTest.java rename to fastergt/test/play/templates/FastTagsTest.java diff --git a/framework/test/play/templates/JavaExtensionsTest.java b/fastergt/test/play/templates/JavaExtensionsTest.java similarity index 100% rename from framework/test/play/templates/JavaExtensionsTest.java rename to fastergt/test/play/templates/JavaExtensionsTest.java diff --git a/framework/build.gradle b/framework/build.gradle index d8b4c67a..9aaa10f7 100644 --- a/framework/build.gradle +++ b/framework/build.gradle @@ -24,9 +24,6 @@ dependencies { implementation('ch.qos.reload4j:reload4j:1.2.25') implementation('org.ehcache:ehcache:3.10.8') api('net.sf.oval:oval:3.2.1') - // Groovy 4 can be found in org.apache.groovy - api("org.codehaus.groovy:groovy:$groovyVersion") - api("org.codehaus.groovy:groovy-xml:$groovyVersion") api('org.hibernate:hibernate-core-jakarta:5.6.15.Final') // Hibernate 5.6 series is only compatible with persistence-api:3.0.0 api('jakarta.persistence:jakarta.persistence-api:3.1.0') diff --git a/framework/src/play/Play.java b/framework/src/play/Play.java index 3b42126e..d6cbae35 100644 --- a/framework/src/play/Play.java +++ b/framework/src/play/Play.java @@ -14,8 +14,6 @@ import play.mvc.Router; import play.mvc.SessionStore; import play.plugins.PluginCollection; -import play.templates.FastTags; -import play.templates.JavaExtensions; import play.templates.TemplateLoader; import javax.annotation.Nullable; @@ -268,8 +266,6 @@ public synchronized void start() { private void injectStaticFields() { injectStaticFields(Play.classes.getAssignableClasses(PlayController.class)); injectStaticFields(Play.classes.getAssignableClasses(Job.class)); - injectStaticFields(Play.classes.getAssignableClasses(FastTags.class)); - injectStaticFields(Play.classes.getAssignableClasses(JavaExtensions.class)); } private void injectStaticFields(List> classes) { diff --git a/framework/src/play/utils/Utils.java b/framework/src/play/utils/Utils.java index 0617fa20..25b1c1dc 100644 --- a/framework/src/play/utils/Utils.java +++ b/framework/src/play/utils/Utils.java @@ -120,4 +120,17 @@ public static String urlDecodePath(@Nullable String enc) { public static String urlEncodePath(String plain) { return URLEncoder.encode(plain, Play.defaultWebEncoding); } + + public static String formatMemorySize(long bytes) { + if (bytes < 1024L) { + return bytes + " B"; + } + if (bytes < 1048576L) { + return bytes / 1024L + "KB"; + } + if (bytes < 1073741824L) { + return bytes / 1048576L + "MB"; + } + return bytes / 1073741824L + "GB"; + } } diff --git a/javanet/src/play/server/javanet/PlayHandler.java b/javanet/src/play/server/javanet/PlayHandler.java index 36af8448..f60152d4 100644 --- a/javanet/src/play/server/javanet/PlayHandler.java +++ b/javanet/src/play/server/javanet/PlayHandler.java @@ -28,7 +28,6 @@ import play.server.IpParser; import play.server.ServerAddress; import play.server.ServerHelper; -import play.templates.JavaExtensions; import play.utils.ErrorsCookieCrypter; import play.utils.Utils; @@ -67,6 +66,7 @@ import static play.mvc.Http.StatusCode.INTERNAL_ERROR; import static play.mvc.Http.StatusCode.NOT_FOUND; import static play.mvc.Http.StatusCode.NOT_MODIFIED; +import static play.utils.Utils.formatMemorySize; @ParametersAreNonnullByDefault public class PlayHandler implements HttpHandler { @@ -178,7 +178,7 @@ private void saveExceededSizeError(HttpExchange exchange, Http.Request request) error.append(":"); String size; try { - size = JavaExtensions.formatSize(Long.parseLong(length)); + size = formatMemorySize(Long.parseLong(length)); } catch (Exception e) { size = length + " bytes"; } diff --git a/netty3/src/play/server/netty3/PlayHandler.java b/netty3/src/play/server/netty3/PlayHandler.java index bd95d8ba..a83a13e8 100644 --- a/netty3/src/play/server/netty3/PlayHandler.java +++ b/netty3/src/play/server/netty3/PlayHandler.java @@ -51,7 +51,6 @@ import play.server.IpParser; import play.server.ServerAddress; import play.server.ServerHelper; -import play.templates.JavaExtensions; import play.utils.ErrorsCookieCrypter; import play.utils.Utils; @@ -92,6 +91,7 @@ import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.LAST_MODIFIED; import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.SET_COOKIE; import static play.server.ServerHelper.maxContentLength; +import static play.utils.Utils.formatMemorySize; @ParametersAreNonnullByDefault public class PlayHandler extends SimpleChannelUpstreamHandler { @@ -179,7 +179,7 @@ private class Netty3Invocation extends Invocation { private final HttpRequest nettyRequest; private final MessageEvent event; - public Netty3Invocation(Request request, Response response, ChannelHandlerContext ctx, HttpRequest nettyRequest, MessageEvent e) { + private Netty3Invocation(Request request, Response response, ChannelHandlerContext ctx, HttpRequest nettyRequest, MessageEvent e) { this.ctx = ctx; this.request = request; this.response = response; @@ -277,7 +277,7 @@ public void execute() { return; } - // Check the exceeded size before re rendering so we can render the + // Check the exceeded size before re-rendering, so we can render the // error if the size is exceeded saveExceededSizeError(nettyRequest, request); actionInvoker.invoke(request, response); @@ -311,7 +311,7 @@ private void saveExceededSizeError(HttpRequest nettyRequest, Request request) { error.append(":"); String size; try { - size = JavaExtensions.formatSize(Long.parseLong(length)); + size = formatMemorySize(Long.parseLong(length)); } catch (Exception e) { size = length + " bytes"; } diff --git a/netty4/src/play/server/netty4/PlayHandler.java b/netty4/src/play/server/netty4/PlayHandler.java index 82154931..f396de92 100644 --- a/netty4/src/play/server/netty4/PlayHandler.java +++ b/netty4/src/play/server/netty4/PlayHandler.java @@ -51,7 +51,6 @@ import play.server.IpParser; import play.server.ServerAddress; import play.server.ServerHelper; -import play.templates.JavaExtensions; import play.utils.Utils; import javax.annotation.CheckReturnValue; @@ -90,10 +89,12 @@ import static io.netty.handler.codec.http.HttpResponseStatus.INTERNAL_SERVER_ERROR; import static io.netty.handler.codec.http.HttpResponseStatus.NOT_MODIFIED; import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1; +import static java.lang.Long.parseLong; import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Collections.unmodifiableList; import static java.util.Objects.requireNonNullElse; import static org.apache.commons.lang3.StringUtils.defaultString; +import static play.utils.Utils.formatMemorySize; @ParametersAreNonnullByDefault public class PlayHandler extends SimpleChannelInboundHandler { @@ -302,7 +303,7 @@ private void saveExceededSizeError(FullHttpRequest nettyRequest, Request request error.append(":"); String size; try { - size = JavaExtensions.formatSize(Long.parseLong(length)); + size = formatMemorySize(parseLong(length)); } catch (Exception e) { size = length + " bytes"; }