User: starksm 
  Date: 01/06/23 20:47:11

  Modified:    src/main/org/jboss/test/web/util Util.java
  Added:       src/main/org/jboss/test/web/util ClassInClasses.java
                        weblog4j.properties
  Log:
  Add tests of accessing WEB-INF elements from a JSP page
  
  Revision  Changes    Path
  1.3       +123 -1    jbosstest/src/main/org/jboss/test/web/util/Util.java
  
  Index: Util.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosstest/src/main/org/jboss/test/web/util/Util.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Util.java 2001/06/01 14:08:49     1.2
  +++ Util.java 2001/06/24 03:47:11     1.3
  @@ -1,14 +1,24 @@
   package org.jboss.test.web.util;
   
  +import java.io.PrintWriter;
  +import java.io.StringWriter;
   import java.net.URL;
  +import java.net.URLClassLoader;
   import java.util.Date;
  +import javax.naming.Context;
  +import javax.naming.InitialContext;
  +import javax.naming.LinkRef;
  +import javax.naming.NamingEnumeration;
  +import javax.naming.NamingException;
  +import javax.naming.NameClassPair;
  +import javax.naming.NameParser;
   
   /** A trivial utility class that is placed into the lib/util.jar directory
   of the war archive and used by servlets in the war to test access to the
   lib jars.
   
   @author  [EMAIL PROTECTED]
  -@version $Revision: 1.2 $
  +@version $Revision: 1.3 $
   */
   public class Util
   {
  @@ -32,5 +42,117 @@
           System.out.println("getResource('web2log4j.properties') via CL = 
"+web2PropsURL2);
           System.out.println("getResource('/log4j.properties') via CL = "+propsURL2);
           return propsURL;
  +    }
  +
  +    public static void showTree(String indent, Context ctx, PrintWriter out)
  +        throws NamingException
  +    {
  +        ClassLoader loader = Thread.currentThread().getContextClassLoader();
  +        NamingEnumeration enum = ctx.list("");
  +        while( enum.hasMoreElements() )
  +        {
  +            NameClassPair ncp = (NameClassPair)enum.next();
  +            String name = ncp.getName();
  +            out.print(indent +  " +- " + name);
  +            boolean recursive = false;
  +            boolean isLinkRef = false;
  +            try
  +            {
  +                Class c = loader.loadClass(ncp.getClassName());
  +                if( Context.class.isAssignableFrom(c) )
  +                    recursive = true;
  +                if( LinkRef.class.isAssignableFrom(c) )
  +                    isLinkRef = true;
  +            }
  +            catch(ClassNotFoundException cnfe)
  +            {
  +            }
  +
  +            if( isLinkRef )
  +            {
  +                try
  +                {
  +                    LinkRef link = (LinkRef) ctx.lookupLink(name);
  +                    out.print("[link -> ");
  +                    out.print(link.getLinkName());
  +                    out.print(']');
  +                }
  +                catch(Throwable e)
  +                {
  +                    e.printStackTrace();
  +                    out.print("[invalid]");
  +                }
  +            }
  +            out.println();
  +
  +            if( recursive )
  +            {
  +               try
  +                {
  +                    Object value = ctx.lookup(name);
  +                    if( value instanceof Context )
  +                    {
  +                        Context subctx = (Context) value;
  +                        showTree(indent + " |  ", subctx, out);
  +                    }
  +                    else
  +                    {
  +                        out.println(indent + " |   NonContext: "+value);
  +                    }
  +                }
  +                catch(Throwable t)
  +                {
  +                    out.println("Failed to lookup: "+name+", 
errmsg="+t.getMessage());
  +                }
  +           }
  +
  +        }
  +    }
  +
  +    public static void dumpClassLoader(ClassLoader cl, PrintWriter out)
  +    {
  +        int level = 0;
  +        while( cl != null )
  +        {
  +            String msg = "Servlet ClassLoader["+level+"]: 
"+cl.getClass().getName()+':'+cl.hashCode();
  +            out.println(msg);
  +            if( cl instanceof URLClassLoader )
  +            {
  +                URLClassLoader ucl = (URLClassLoader) cl;
  +                URL[] urls = ucl.getURLs();
  +                msg = "  URLs:";
  +                out.println(msg);
  +                for(int u = 0; u < urls.length; u ++)
  +                {
  +                    msg = "  ["+u+"] = "+urls[u];
  +                    out.println(msg);
  +                }
  +            }
  +            cl = cl.getParent();
  +            level ++;
  +        }
  +    }
  +
  +    public static void dumpENC(PrintWriter out) throws NamingException
  +    {
  +       InitialContext iniCtx = new InitialContext();
  +       Context enc = (Context) iniCtx.lookup("java:comp/env");
  +       showTree("", enc, out);
  +    }
  +
  +    public String displayClassLoaders(ClassLoader cl) throws NamingException
  +    {
  +       StringWriter sw = new StringWriter();
  +       PrintWriter out = new PrintWriter(sw);
  +       dumpClassLoader(cl, out);
  +       return sw.toString();
  +    }
  +
  +    public String displayENC() throws NamingException
  +    {
  +       StringWriter sw = new StringWriter();
  +       PrintWriter out = new PrintWriter(sw);
  +       dumpENC(out);
  +       return sw.toString();
       }
   }
  
  
  
  1.1                  jbosstest/src/main/org/jboss/test/web/util/ClassInClasses.java
  
  Index: ClassInClasses.java
  ===================================================================
  package org.jboss.test.web.util;
  
  /** A class that is placed into the WEB-INF/classes directory to test the
  access of classes in that directory.
  
  @author [EMAIL PROTECTED]
  @version 
  */
  public class ClassInClasses
  {
      public ClassInClasses()
      {
      }
  }
  
  
  
  1.1                  jbosstest/src/main/org/jboss/test/web/util/weblog4j.properties
  
  Index: weblog4j.properties
  ===================================================================
  # A war local log4j.properties file
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to