Asciidoctor mit Neon transformieren
ulrich
2021-06-25 f5adf51f59628c210d6bc8838df99d9b64002ee5
commit | author | age
9c5db9 1 /*
U 2   http-adoc - Asciidoctor extensions to jdk.httpserver
3   Copyright (C) 2021  Ulrich Hilger
4
5   This program is free software: you can redistribute it and/or modify
6   it under the terms of the GNU Affero General Public License as
7   published by the Free Software Foundation, either version 3 of the
8   License, or (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU Affero General Public License for more details.
14
15   You should have received a copy of the GNU Affero General Public License
16   along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  */
18 package de.uhilger.httpserver.adoc;
19
20 import com.sun.net.httpserver.Filter;
21 import com.sun.net.httpserver.HttpExchange;
22 import com.sun.net.httpserver.HttpHandler;
0de53a 23 import de.uhilger.httpserver.base.handler.FileHandler;
9c5db9 24 import java.io.File;
U 25 import java.io.IOException;
26 import java.net.URI;
27 import java.util.logging.Logger;
28
29 /**
30  * AdocFilter prueft, ob fuer eine 
31  * Asciidoctor-Quelldatei bereits eine HTML-Version vorliegt. Wenn nicht,
32  * verwendet der AdocFilter den AdocActor, um eine HTML-Version zu erzeugen.
33  * 
34  * @author Ulrich Hilger
35  * @version 1, 16.06.2021
36  */
37 public class AdocFilter extends Filter {
38   
39   private static final Logger logger = Logger.getLogger(AdocFilter.class.getName());
40   
41   public static final String DESCRIPTION = "Asciidoctor Filter";
42   
43   public static final String ADOC = ".adoc";
44
45   @Override
46   public void doFilter(HttpExchange exchange, Chain chain) throws IOException {
47     URI uri = exchange.getRequestURI();
48     String query = uri.getQuery();
49     //String[] params = query.split("?&"); // hier noch Regex ermitteln
50     String requestPathStr = uri.getPath();
51     //logger.fine("filter: " + requestUriStr);
52     
53     if(requestPathStr.toLowerCase().endsWith(ADOC)) {
54       logger.fine("filter: " + requestPathStr);
55       HttpHandler handler = exchange.getHttpContext().getHandler();
0de53a 56       if(handler instanceof FileHandler) {
U 57         FileHandler fileHandler = (FileHandler) handler;
58         String fileBase = fileHandler.getFileBase();
9c5db9 59         AdocActor actor = new AdocActor();
0de53a 60         actor.processAdocFile(new File(fileBase, fileHandler.getFileName(exchange)), Boolean.FALSE.toString());
9c5db9 61       }
5ca813 62     }    
9c5db9 63     chain.doFilter(exchange);
U 64   }
65
66   @Override
67   public String description() {
68     return DESCRIPTION;
69   }
70   
71 }