Browse Source

Using jte.

Signed-off-by: Santiago Pericas-Geertsen <[email protected]>
Santiago Pericas-Geertsen 8 months ago
parent
commit
d669122a51

+ 12 - 11
frameworks/Java/helidon/nima/pom.xml

@@ -38,6 +38,7 @@
         <rocker.version>1.3.0</rocker.version>
         <rocker.version>1.3.0</rocker.version>
         <vertx-pg-client.version>4.5.3</vertx-pg-client.version>
         <vertx-pg-client.version>4.5.3</vertx-pg-client.version>
         <jsoniter.version>0.9.23</jsoniter.version>
         <jsoniter.version>0.9.23</jsoniter.version>
+        <jte.version>3.1.15</jte.version>
     </properties>
     </properties>
 
 
     <dependencies>
     <dependencies>
@@ -78,9 +79,9 @@
             <version>42.6.1</version>
             <version>42.6.1</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
-            <groupId>com.fizzed</groupId>
-            <artifactId>rocker-runtime</artifactId>
-            <version>${rocker.version}</version>
+            <groupId>gg.jte</groupId>
+            <artifactId>jte</artifactId>
+            <version>${jte.version}</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>io.helidon.common.testing</groupId>
             <groupId>io.helidon.common.testing</groupId>
@@ -98,7 +99,6 @@
             <scope>test</scope>
             <scope>test</scope>
         </dependency>
         </dependency>
     </dependencies>
     </dependencies>
-
     <build>
     <build>
         <plugins>
         <plugins>
             <plugin>
             <plugin>
@@ -125,20 +125,21 @@
                     </execution>
                     </execution>
                 </executions>
                 </executions>
             </plugin>
             </plugin>
+
             <plugin>
             <plugin>
-                <groupId>com.fizzed</groupId>
-                <artifactId>rocker-maven-plugin</artifactId>
-                <version>${rocker.version}</version>
+                <groupId>gg.jte</groupId>
+                <artifactId>jte-maven-plugin</artifactId>
+                <version>${jte.version}</version>
+                <configuration>
+                    <sourceDirectory>${project.basedir}/src/main/resources/views</sourceDirectory>
+                    <contentType>Html</contentType>
+                </configuration>
                 <executions>
                 <executions>
                     <execution>
                     <execution>
-                        <id>generate-rocker-templates</id>
                         <phase>generate-sources</phase>
                         <phase>generate-sources</phase>
                         <goals>
                         <goals>
                             <goal>generate</goal>
                             <goal>generate</goal>
                         </goals>
                         </goals>
-                        <configuration>
-                            <templateDirectory>src/main/resources</templateDirectory>
-                        </configuration>
                     </execution>
                     </execution>
                 </executions>
                 </executions>
             </plugin>
             </plugin>

+ 40 - 5
frameworks/Java/helidon/nima/src/main/java/io/helidon/benchmark/nima/services/FortuneHandler.java

@@ -1,16 +1,21 @@
 
 
 package io.helidon.benchmark.nima.services;
 package io.helidon.benchmark.nima.services;
 
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Comparator;
 import java.util.Comparator;
 import java.util.List;
 import java.util.List;
 
 
-import com.fizzed.rocker.runtime.ArrayOfByteArraysOutput;
+import gg.jte.TemplateOutput;
 import io.helidon.benchmark.nima.models.DbRepository;
 import io.helidon.benchmark.nima.models.DbRepository;
 import io.helidon.benchmark.nima.models.Fortune;
 import io.helidon.benchmark.nima.models.Fortune;
 import io.helidon.webserver.http.Handler;
 import io.helidon.webserver.http.Handler;
 import io.helidon.webserver.http.ServerRequest;
 import io.helidon.webserver.http.ServerRequest;
 import io.helidon.webserver.http.ServerResponse;
 import io.helidon.webserver.http.ServerResponse;
-import views.fortunes;
+
+import gg.jte.html.OwaspHtmlTemplateOutput;
+import gg.jte.generated.precompiled.JtefortunesGenerated;
 
 
 import static io.helidon.benchmark.nima.Main.CONTENT_TYPE_HTML;
 import static io.helidon.benchmark.nima.Main.CONTENT_TYPE_HTML;
 import static io.helidon.benchmark.nima.Main.SERVER;
 import static io.helidon.benchmark.nima.Main.SERVER;
@@ -33,8 +38,38 @@ public class FortuneHandler implements Handler {
         List<Fortune> fortuneList = repository.getFortunes();
         List<Fortune> fortuneList = repository.getFortunes();
         fortuneList.add(ADDITIONAL_FORTUNE);
         fortuneList.add(ADDITIONAL_FORTUNE);
         fortuneList.sort(Comparator.comparing(Fortune::getMessage));
         fortuneList.sort(Comparator.comparing(Fortune::getMessage));
-        res.send(fortunes.template(fortuneList)
-                .render(ArrayOfByteArraysOutput.FACTORY)
-                .toByteArray());
+        try (OutputStream os = res.outputStream()) {
+            JtefortunesGenerated.render(new OwaspHtmlTemplateOutput(new HelidonTemplateOutput(os)),
+                    null, fortuneList);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
     }
     }
+
+    static class HelidonTemplateOutput implements TemplateOutput{
+        private final OutputStream os;
+
+        HelidonTemplateOutput(OutputStream os) {
+            this.os = os;
+        }
+
+        @Override
+        public void writeContent(String value) {
+            writeBinaryContent(value.getBytes(StandardCharsets.UTF_8));
+        }
+
+        @Override
+        public void writeContent(String value, int beginIndex, int endIndex) {
+            writeBinaryContent(value.substring(beginIndex, endIndex).getBytes(StandardCharsets.UTF_8));
+        }
+
+        @Override
+        public void writeBinaryContent(byte[] value) {
+            try {
+                os.write(value);
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    };
 }
 }

+ 2 - 0
frameworks/Java/helidon/nima/src/main/resources/views/fortunes.jte

@@ -0,0 +1,2 @@
+@param java.util.List<io.helidon.benchmark.nima.models.Fortune> fortunes
+<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>@for(io.helidon.benchmark.nima.models.Fortune fortune : fortunes)<tr><td>${fortune.getId()}</td><td>${fortune.getMessage()}</td></tr>@endfor</table></body></html>

+ 0 - 4
frameworks/Java/helidon/nima/src/main/resources/views/fortunes.rocker.html

@@ -1,4 +0,0 @@
-@import io.helidon.benchmark.nima.models.Fortune
-@import java.util.List
-@args (List<Fortune> fortunes)
-<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>@for (f : fortunes) {<tr><td>@f.getId()</td><td>@f.getMessage()</td></tr>}</table></body></html>