From cf173715c28c6ac820df44009dd5bc3222af46fb Mon Sep 17 00:00:00 2001
From: ulrich
Date: Sun, 10 Nov 2024 16:14:57 +0000
Subject: [PATCH] an AsciidoctorJ Version 3 angepasst

---
 src/de/uhilger/neon/adoc/AdocFilter.java |   28 +++++++++++++++++-----------
 1 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/src/de/uhilger/neon/adoc/AdocFilter.java b/src/de/uhilger/neon/adoc/AdocFilter.java
index 7a304e1..f02a607 100644
--- a/src/de/uhilger/neon/adoc/AdocFilter.java
+++ b/src/de/uhilger/neon/adoc/AdocFilter.java
@@ -21,6 +21,7 @@
 import com.sun.net.httpserver.HttpContext;
 import com.sun.net.httpserver.HttpExchange;
 import de.uhilger.neon.FileServer;
+import de.uhilger.neon.HttpHelper;
 import java.io.File;
 import java.io.IOException;
 import java.net.URI;
@@ -37,19 +38,24 @@
   @Override
   public void doFilter(HttpExchange exchange, Chain chain) throws IOException {
     URI uri = exchange.getRequestURI();
-    String path = uri.getPath();
-    if(path.endsWith(".adoc")) {
-      HttpContext ctx = exchange.getHttpContext();
-      String fileBase = ctx.getAttributes().get(FileServer.ATTR_FILE_BASE).toString();
-      String fileName = path.substring(ctx.getPath().length());
-      String query = uri.getQuery();
-      if (query instanceof String && query.contains("pdf=true")) {
-        processAdocFile(new File(fileBase, fileName), true);
-      } else {
-        processAdocFile(new File(fileBase, fileName), false);
+    try {
+      String fileName = new HttpHelper().getFileName(exchange);
+      if(fileName.endsWith(".adoc")) {
+        HttpContext ctx = exchange.getHttpContext();
+        String fileBase = ctx.getAttributes().get(FileServer.ATTR_FILE_BASE).toString();
+        String query = uri.getQuery();
+        if (query instanceof String && query.contains("pdf=true")) {
+          processAdocFile(new File(fileBase, fileName), true);
+        } else {
+          processAdocFile(new File(fileBase, fileName), false);
+        }
       }
+    } catch (IllegalArgumentException ex) {
+      // ungueltiger Dateiname, keine Transformation noetig, also tue nichts
+    } finally {
+      chain.doFilter(exchange);
     }
-    chain.doFilter(exchange);
+           
   }
 
   /**

--
Gitblit v1.9.3