diff --git a/pom.xml b/pom.xml
index 1b371bd..8b8e2ed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,179 +1,218 @@
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.7.5
-
-
- com.github.russp
- bpe
- 0.0.1-SNAPSHOT
- bpe
- Bad-practice editor
-
- 17
-
- 0.12.1
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.boot
- spring-boot-starter-mustache
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.experimental
- spring-native
- ${spring-native.version}
-
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.7.5
+
+
+ com.github.russp
+ bpe
+ 0.0.1-SNAPSHOT
+ bpe
+ Bad-practice editor
+
+ 17
+ 3.0.3
+
+ 0.12.1
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.experimental
+ spring-native
+ ${spring-native.version}
+
-
- commons-io
- commons-io
- 2.11.0
-
+
+ commons-io
+ commons-io
+ 2.11.0
+
-
- org.springframework.boot
- spring-boot-devtools
- runtime
- true
-
-
- org.projectlombok
- lombok
- true
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- io.projectreactor
- reactor-test
- test
-
-
+
+ gg.jte
+ jte
+ ${jte.version}
+
+
+ gg.jte
+ jte-spring-boot-starter-2
+ ${jte.version}
+
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
- org.projectlombok
- lombok
-
-
- ${repackage.classifier}
-
- paketobuildpacks/builder:tiny
-
- true
-
-
-
-
-
- org.springframework.experimental
- spring-aot-maven-plugin
- ${spring-native.version}
-
-
- test-generate
-
- test-generate
-
-
-
- generate
-
- generate
-
-
-
-
-
-
-
-
- spring-releases
- Spring Releases
- https://repo.spring.io/release
-
- false
-
-
-
-
-
- spring-releases
- Spring Releases
- https://repo.spring.io/release
-
- false
-
-
-
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
-
-
- native
-
- exec
- 0.9.13
-
-
-
- org.junit.platform
- junit-platform-launcher
- test
-
-
-
-
-
- org.graalvm.buildtools
- native-maven-plugin
- ${native-buildtools.version}
- true
-
-
- test-native
- test
-
- test
-
-
-
- build-native
- package
-
- build
-
-
-
-
-
-
-
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+ ${repackage.classifier}
+
+ paketobuildpacks/builder:tiny
+
+ true
+
+
+
+
+
+ org.springframework.experimental
+ spring-aot-maven-plugin
+ ${spring-native.version}
+
+
+ test-generate
+
+ test-generate
+
+
+
+ generate
+
+ generate
+
+
+
+
+
+ gg.jte
+ jte-maven-plugin
+ ${jte.version}
+
+ ${basedir}/src/main/jte
+ Html
+ ${project.build.directory}/classes
+
+
+ gg.jte.nativeimage.NativeResourcesExtension
+
+
+
+
+
+ jte-gen
+ generate-sources
+
+ generate
+
+
+
+
+
+ gg.jte
+ jte-native-resources
+ ${jte.version}
+
+
+
+
+
+
+
+ spring-releases
+ Spring Releases
+ https://repo.spring.io/release
+
+ false
+
+
+
+
+
+ spring-releases
+ Spring Releases
+ https://repo.spring.io/release
+
+ false
+
+
+
+
+
+
+ native
+
+ exec
+ 0.9.13
+
+
+
+ org.junit.platform
+ junit-platform-launcher
+ test
+
+
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ ${native-buildtools.version}
+ true
+
+
+ test-native
+ test
+
+ test
+
+
+
+ build-native
+ package
+
+ build
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/github/russp/bpe/config/JteConfiguration.java b/src/main/java/com/github/russp/bpe/config/JteConfiguration.java
new file mode 100644
index 0000000..f32fff3
--- /dev/null
+++ b/src/main/java/com/github/russp/bpe/config/JteConfiguration.java
@@ -0,0 +1,29 @@
+package com.github.russp.bpe.config;
+
+import gg.jte.springframework.boot.autoconfigure.ReactiveJteAutoConfiguration;
+import gg.jte.springframework.boot.autoconfigure.ReactiveJteViewResolver;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
+import org.springframework.context.annotation.Configuration;
+
+import javax.annotation.PostConstruct;
+import java.util.Locale;
+
+@Slf4j
+@Configuration
+@ImportAutoConfiguration(ReactiveJteAutoConfiguration.class)
+@RequiredArgsConstructor
+public class JteConfiguration {
+
+ private final ReactiveJteViewResolver jteViewResolver;
+
+ @PostConstruct
+ public void vr() {
+ log.info("ReactiveJteViewResolver created: {}", jteViewResolver);
+ jteViewResolver.resolveViewName("login", Locale.ENGLISH)
+ .log()
+ .block();
+ }
+
+}
diff --git a/src/main/java/com/github/russp/bpe/http/BrowserController.java b/src/main/java/com/github/russp/bpe/http/BrowserController.java
index ee9d547..5906528 100644
--- a/src/main/java/com/github/russp/bpe/http/BrowserController.java
+++ b/src/main/java/com/github/russp/bpe/http/BrowserController.java
@@ -72,7 +72,7 @@ public class BrowserController {
model.addAttribute("breadcrumbs", breadcrumbs);
model.addAttribute("selectedFile", path);
- model.addAttribute("selectedFileName", Paths.get(path).getFileName());
+ model.addAttribute("selectedFileName", Paths.get(path).getFileName().toString());
return "edit";
}
diff --git a/src/main/resources/templates/browse/list.mustache b/src/main/jte/.jteroot
similarity index 100%
rename from src/main/resources/templates/browse/list.mustache
rename to src/main/jte/.jteroot
diff --git a/src/main/resources/templates/browse.mustache b/src/main/jte/browse.jte
similarity index 65%
rename from src/main/resources/templates/browse.mustache
rename to src/main/jte/browse.jte
index 1a7620c..f660a0f 100644
--- a/src/main/resources/templates/browse.mustache
+++ b/src/main/jte/browse.jte
@@ -1,3 +1,9 @@
+@import java.util.List
+@import com.github.russp.bpe.http.FileDto
+
+@param List files
+@param List breadcrumbs
+
@@ -26,9 +32,9 @@
@@ -47,26 +53,25 @@
- {{#files}}
-
-
- {{#dir}}
-
-
- {{name}}
-
- {{/dir}}
- {{^dir}}
-
+ @for(FileDto file : files)
+
+ |
+ @if(file.isDir())
+
+
+ ${file.getName()}
+
+ @else
+
- {{name}}
-
- {{/dir}}
- |
- {{modifiedAt}} |
- {{size}} |
-
- {{/files}}
+ ${file.getName()}
+
+ @endif
+ |
+ ${file.getModifiedAt()} |
+ ${file.getSize()} |
+
+ @endfor
@@ -87,7 +92,7 @@
Built with Pico • Source code
+ href="https://github.com/picocss/examples/blob/master/basic-template/">Source code
diff --git a/src/main/resources/templates/edit.mustache b/src/main/jte/edit.jte
similarity index 63%
rename from src/main/resources/templates/edit.mustache
rename to src/main/jte/edit.jte
index fcd20ce..37796bc 100644
--- a/src/main/resources/templates/edit.mustache
+++ b/src/main/jte/edit.jte
@@ -1,3 +1,14 @@
+@import java.util.List
+@import org.springframework.security.web.server.csrf.CsrfToken
+@import com.github.russp.bpe.http.FileDto
+
+@param String selectedFile
+@param String selectedFileName
+@param List breadcrumbs
+
+@param CsrfToken _csrf
+
+
@@ -5,10 +16,10 @@
-
-
+
+
- Edit {{selectedFileName}}
+ Edit ${selectedFileName}
- Edit {{selectedFileName}}
+ Edit ${selectedFileName}