alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

package com.psibt.framework.net;

import java.io.*;
import java.net.*;
import java.util.*;
import org.apache.log4j.*;

/**
 * This class implements a RequestHandler for log4j configuration. It serves the "/log4j/" path
 * in the PluggableHTTPServer. If this path is requested a list of all current log4j categories
 * with their current priorities is created. All priority settings can be changed by the user
 * and can be submitted and taken over.
 *
 * @author Volker Mentzner
 */
public class Log4jRequestHandler extends RootRequestHandler {

  private Priority[] prios = Priority.getAllPossiblePriorities();

 /**
   * Creates a new Log4jRequestHandler object
   */
  public Log4jRequestHandler() {
    this.setTitle("log4j");
    this.setDescription("log4j configuration");
    this.setHandledPath("/log4j/");
  }

 /**
   * Handles the given request and writes the reply to the given out-stream.
   *
   * @param request - client browser request
   * @param out - Out stream for sending data to client browser
   * @return if the request was handled by this handler : true, else : false
   */
  public boolean handleRequest(String request, Writer out) {
    String path = "";
    String query = null;
    String name;
    try {
      // check request url
      URL url = new URL("http://localhost"+request);
      path = url.getPath();
      query = url.getQuery();
      if (path.startsWith(this.getHandledPath()) == false) {
        return false;
      }

      out.write("HTTP/1.0 200 OK\r\n");
      out.write("Content-type: text/html\r\n\r\n");
      out.write("" + this.getTitle() + "\r\n");
      out.write("

log4j

\r\n"); out.write(this.getDescription() + "

\r\n"); // handle a request with query if ((query != null) && (query.length() >= 0)) { StringTokenizer st = new StringTokenizer(query, "&"); String cmd; String catname; String catval; int idx; while (st.hasMoreTokens()) { cmd = st.nextToken(); idx = cmd.indexOf("="); catname = cmd.substring(0, idx); catval = cmd.substring(idx+1, cmd.length()); if (catname.equalsIgnoreCase("root")) Category.getRoot().setPriority(Priority.toPriority(catval)); else Category.getInstance(catname).setPriority(Priority.toPriority(catval)); } } // output category information in a form with a simple table out.write("
"); out.write("\r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); // output for root category Category cat = Category.getRoot(); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); // output for all other categories for (Enumeration en = Category.getCurrentCategories(); en.hasMoreElements();) { cat = (Category)en.nextElement(); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); out.write(" \r\n"); } out.write("
CategoryPriorityAppender
root\r\n"); out.write(" \r\n"); out.write(" \r\n"); for (Enumeration apds = cat.getAllAppenders(); apds.hasMoreElements();) { Appender apd = (Appender)apds.nextElement(); name = apd.getName(); if (name == null) name = "(no name)"; out.write(name); if (apd instanceof AppenderSkeleton) { try { AppenderSkeleton apskel = (AppenderSkeleton)apd; out.write(" [" + apskel.getThreshold().toString() + "]"); } catch (Exception ex) { } } if (apds.hasMoreElements()) out.write(", "); } out.write("
" + cat.getName() + "\r\n"); out.write(" \r\n"); out.write(" \r\n"); for (Enumeration apds = cat.getAllAppenders(); apds.hasMoreElements();) { Appender apd = (Appender)apds.nextElement(); name = apd.getName(); if (name == null) name = "(no name)"; out.write(name); if (apd instanceof AppenderSkeleton) { try { AppenderSkeleton apskel = (AppenderSkeleton)apd; out.write(" [" + apskel.getThreshold().toString() + "]"); } catch (Exception ex) { } } if (apds.hasMoreElements()) out.write(", "); } out.write("
\r\n"); out.write(""); out.write("
"); out.write("\r\n"); out.flush(); return true; } catch (Exception ex) { return false; } } }
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.