User: starksm 
  Date: 01/06/09 17:19:33

  Modified:    src/main/org/jboss/test/web/servlets DebugServlet.java
  Log:
  Add dump of the java:comp/env context
  
  Revision  Changes    Path
  1.3       +75 -1     jbosstest/src/main/org/jboss/test/web/servlets/DebugServlet.java
  
  Index: DebugServlet.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jbosstest/src/main/org/jboss/test/web/servlets/DebugServlet.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DebugServlet.java 2001/06/01 14:08:49     1.2
  +++ DebugServlet.java 2001/06/10 00:19:33     1.3
  @@ -5,7 +5,13 @@
   import java.net.URL;
   import java.net.URLClassLoader;
   import java.security.Principal;
  +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;
   import javax.servlet.ServletConfig;
   import javax.servlet.ServletException;
   import javax.servlet.http.HttpServlet;
  @@ -14,7 +20,7 @@
   
   /** A servlet that dumps out debugging information about its environment.
    * @author  [EMAIL PROTECTED]
  - * @version $Revision: 1.2 $
  + * @version $Revision: 1.3 $
    */
   public class DebugServlet extends HttpServlet
   {
  @@ -44,6 +50,8 @@
               InitialContext iniCtx = new InitialContext();
               super.log("InitialContext.env: "+iniCtx.getEnvironment());
               out.println("InitialContext.env: "+iniCtx.getEnvironment());
  +            out.println("</pre><h3>java:comp/env</h3><pre>");
  +            showTree(" ", (Context) iniCtx.lookup("java:comp/env"), out);
           }
           catch(Exception e)
           {
  @@ -92,4 +100,70 @@
               level ++;
           }
       }
  +
  +    private 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());
  +                }
  +           }
  +
  +        }
  +    }
  +
   }
  
  
  

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

Reply via email to