User: stark   
  Date: 01/03/13 22:43:53

  Added:       src/main/org/jboss/test/naming TestExternalContext.java
  Log:
  Tests of the ExternalContext naming mbean
  
  Revision  Changes    Path
  1.1                  
jbosstest/src/main/org/jboss/test/naming/TestExternalContext.java
  
  Index: TestExternalContext.java
  ===================================================================
  package org.jboss.test.naming;
  
  import java.net.InetAddress;
  import java.util.ArrayList;
  import java.util.Iterator;
  import java.util.Set;
  import javax.management.ObjectName;
  import javax.management.RuntimeMBeanException;
  import javax.naming.Context;
  import javax.naming.InitialContext;
  import javax.naming.NamingEnumeration;
  import javax.naming.NamingException;
  
  import org.jboss.jmx.interfaces.JMXConnector;
  import org.jboss.jmx.client.RMIClientConnectorImpl;
  
  /** A test of the ExternalContext naming mbean. To test there needs to be
  one or more ExternalContex mbeans setup. An example filesystem context
  setup would be:
  
    <mbean code="org.jboss.naming.ExternalContext" 
name="DefaultDomain:service=ExternalContext,jndiName=external/fs/tmp">
      <attribute name="JndiName">external/fs/Scott</attribute>
      <attribute name="Properties">tmp.fs</attribute>
      <attribute name="RemoteAccess">true</attribute>
    </mbean>
  
  where tmp.fs is a Properties file containing:
  # JNDI properties for /Scott filesystem directory
  java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory
  java.naming.provider.url=file:/tmp
  
  @author [EMAIL PROTECTED]
  @version $Revision: 1.1 $
  */
  public class TestExternalContext extends junit.framework.TestCase
  {
      private ObjectName[] contextNames;
      private JMXConnector connector;
  
      public TestExternalContext(String name)
      {
          super(name);
      }
  
      protected void setUp() throws Exception
      {
          try
          {
              contextNames = null;
              String serverName = InetAddress.getLocalHost().getHostName();
              connector = new RMIClientConnectorImpl(serverName);
              ObjectName pattern = new ObjectName("*:service=ExternalContext,*");
              Set names = connector.queryNames(pattern, null);
              Iterator iter = names.iterator();
              ArrayList tmp = new ArrayList();
              while( iter.hasNext() )
              {
                  Object name = iter.next();
                  System.out.println(name);
                  tmp.add(name);
              }
              if( tmp.size() > 0 )
              {
                  contextNames = new ObjectName[tmp.size()];
                  tmp.toArray(contextNames);
              }
          }
          catch(Exception x)
          {
              x.printStackTrace();
              if (x instanceof RuntimeMBeanException)
              {
                  ((RuntimeMBeanException)x).getTargetException().printStackTrace();
              }
          }
      }
  
      public void testExternalContexts() throws Exception
      {
          if( contextNames == null )
          {
              System.out.println("No ExternalContext names exist");
              return;
          }
  
          InitialContext iniCtx = new InitialContext();
          for(int n = 0; n < contextNames.length; n ++)
          {
              ObjectName name = contextNames[n];
              String jndiName = name.getKeyProperty("jndiName");
              if( jndiName == null )
              {
                  System.out.println("Skipping "+name+" as it has no jndiName 
property");
                  continue;
              }
              Context ctx = (Context) iniCtx.lookup(jndiName);
              System.out.println("+++ Listing for: "+ctx);
              list(ctx);
          }
      }
  
      private void list(Context ctx) throws NamingException
      {
          NamingEnumeration enum = ctx.list("");
          while( enum.hasMore() )
              System.out.println(enum.next());
          enum.close();
      }
  
      public static void main(String[] args) throws Exception
      {
          System.setErr(System.out);
          System.setSecurityManager(new SecurityManager());
          TestExternalContext test = new TestExternalContext("main");
          test.setUp();
          test.testExternalContexts();
      }
  }
  
  
  

Reply via email to