Asciidoctor mit Neon transformieren
ulrich
2021-06-20 5ca8131e61226dda11d3ff81e12f9fbd39b99a1a
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.HttpExchange;
5ca813 21 import de.uhilger.httpserver.base.HttpResponder;
9c5db9 22 import de.uhilger.httpserver.base.handler.FileHandler;
5ca813 23 import java.io.File;
9c5db9 24 import java.io.IOException;
5ca813 25 import java.net.URI;
9c5db9 26 import java.util.logging.Logger;
U 27
28 /**
29  * Der AdocHandler verwendet den FileHandler zur Auslieferung statischer 
30  * Inhalte und einen AdocFilter, um vorab zu pruefen, 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  * die dann vom AdocHandler mit Hilfe der Methoden des FileHandler 
34  * ausgeliefert werden kann.
35  * 
36  * @author Ulrich Hilger
37  * @version 1, 16.06.2021
38  */
39 public class AdocHandler extends FileHandler {
40         
41   private static final Logger logger = Logger.getLogger(AdocHandler.class.getName());        
42   
43   public AdocHandler(String absoluteDirectoryPathAndName) {
44     super(absoluteDirectoryPathAndName);
45   }
46
47   @Override
48   public void handle(HttpExchange e) throws IOException {
5ca813 49     URI uri = e.getRequestURI();
U 50     logger.fine(uri.toString());
51     String query = uri.getQuery();
52     //String[] params = query.split("?&"); // hier noch Regex ermitteln
53     String requestPathStr = uri.getPath();
54     //logger.fine("filter: " + requestUriStr);    
55     if(requestPathStr.toLowerCase().endsWith(AdocFilter.ADOC)) {
56       File adocfile = new File(fileBase, getFileName(e));
57       AdocActor actor = new AdocActor();
58       File outfile = actor.getTargetFile(adocfile, AdocActor.HTML);
59       HttpResponder fs = new HttpResponder();
60       fs.serveFile(e, outfile);
61     } else {
62       super.handle(e); // andere Inhalte zu FileHandler delegieren
63     }
9c5db9 64   }
U 65   
66   public String getFileBase() {
67     return this.fileBase;
68   }
69   
70   
71 }