WebBox Klassenbibliothek
ulrich@undisclosed
2020-05-28 bf412a896b52694891bc4b72dee092e026f6e667
src/de/uhilger/wbx/web/AdocServlet.java
@@ -33,6 +33,8 @@
import static org.asciidoctor.Asciidoctor.Factory.create;
import org.asciidoctor.Asciidoctor;
import static org.asciidoctor.AttributesBuilder.attributes;
import static org.asciidoctor.OptionsBuilder.options;
@@ -40,7 +42,7 @@
 * Das AdocServlet wandelt AsciiDoc-Inhalte (*.adoc) 
 * zu HTML-Seiten und PDF-Dokumenten
 * 
 * ?pdf=true im URL fuegt PDF-Ausgabe hinzu
 * Mit Angabe des Parameters ?pdf=true im URL wird PDF erzeugt, andernfalls HTML
 */
public class AdocServlet extends HttpServlet  {
  
@@ -50,13 +52,13 @@
  private static final String SERVLET_NAME = "AdocServlet";
  
  /**
   * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
   * methods.
   * Die Methode processRequest verarbeitet HTTP-Anfragen des Typs
   * <code>GET</code> und <code>POST</code>.
   *
   * @param request servlet request
   * @param response servlet response
   * @throws ServletException if a servlet-specific error occurs
   * @throws IOException if an I/O error occurs
   * @param request die Servlet-Anfrage
   * @param response die Servlet-Antwort
   * @throws ServletException wenn ein Servlet-spezifischer Fehler passiert
   * @throws IOException wenn ein Eingabe- oder Ausgabe-Fehler passiert
   */
  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException 
@@ -108,14 +110,26 @@
    }
  }
  
  /**
   * Nach HTML transformieren
   * @param fileName der Dateiname der Quelldatei samt absoluter Pfadangabe
   */
  private void transform(String fileName) {
    transform(fileName, null);
  }  
  
  /**
   * In ein Format transformieren, das von einem 'Backend' von Asciidoctor
   * unterstuetzt wird
   * @param fileName der Dateiname der Quelldatei samt absoluter Pfadangabe
   * @param backend das Kuerzel des Backends, z.B. der String 'pdf', wenn
   * nach PDF transformiert werden soll
   */
  private void transform(String fileName, String backend) {    
    /*
    Map<String, Object> attributes = new HashMap<>();
    attributes.put("no_footer", false);
    attributes.put("source_highlighter", "highlightjs");
    //attributes.put("source_highlighter", "highlightjs");
    Map<String, Object> options = new HashMap<>();
    options.put("attributes", attributes); 
@@ -123,18 +137,25 @@
    if(null != backend) {
      options.put("backend", backend);
    }
    */
    Map<String, Object> attributes = attributes().sourceHighlighter("highlightjs")
                                       .asMap();
    Map<String, Object> options = options().inPlace(false).attributes(attributes)
                                       .asMap();
    
    Asciidoctor asciidoctor = create();    
    asciidoctor.convertFile(new File(fileName), options);    
  }
  /**
   * Handles the HTTP <code>GET</code> method.
   * Die HTTP-<code>GET</code>-Methode verarbeiten.
   *
   * @param request servlet request
   * @param response servlet response
   * @throws ServletException if a servlet-specific error occurs
   * @throws IOException if an I/O error occurs
   * @param request die Servlet-Anfrage
   * @param response die Servlet-Antwort
   * @throws ServletException wenn ein Servlet-spezifischer Fehler passiert
   * @throws IOException wenn ein Eingabe- oder Ausgabe-Fehler passiert
   */
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
@@ -143,12 +164,12 @@
  }
  /**
   * Handles the HTTP <code>POST</code> method.
   * Die HTTP-<code>POST</code>-Methode verarbeiten.
   *
   * @param request servlet request
   * @param response servlet response
   * @throws ServletException if a servlet-specific error occurs
   * @throws IOException if an I/O error occurs
   * @param request die Servlet-Anfrage
   * @param response die Servlet-Antwort
   * @throws ServletException wenn ein Servlet-spezifischer Fehler passiert
   * @throws IOException wenn ein Eingabe- oder Ausgabe-Fehler passiert
   */
  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
@@ -157,9 +178,9 @@
  }
  /**
   * Returns a short description of the servlet.
   * Eine Kurzbeschreibung des Servlets ausgeben.
   *
   * @return a String containing servlet description
   * @return einen String mit der Kurzbeschreibung des Servlets
   */
  @Override
  public String getServletInfo() {