User: starksm 
  Date: 01/05/19 20:29:29

  Added:       src/main/org/jboss/test ThreadLocalTest.java
  Log:
  Default the SecurityAssociation server mode of storing security information
  to use InheritableThreadLocal to allow the propagation of the security
  information to child threads.
  
  Revision  Changes    Path
  1.1                  jbosssx/src/main/org/jboss/test/ThreadLocalTest.java
  
  Index: ThreadLocalTest.java
  ===================================================================
  package org.jboss.test;
  
  import junit.framework.TestCase;
  import junit.framework.TestSuite;
  
  import org.jboss.security.SimplePrincipal;
  
  /** Tests of propagating the security identity across threads using
  InheritableThreadLocal.
  
  @author [EMAIL PROTECTED]
  @version $Revision: 1.1 $
  */
  public class ThreadLocalTest extends TestCase
  {
      private static InheritableThreadLocal thread_principal = new 
InheritableThreadLocal();
      private static InheritableThreadLocal thread_credential = new 
InheritableThreadLocal();
      private static String USER = "jduke";
      private static String PASSWORD = "theduke";
  
      public ThreadLocalTest(String name)
      {
          super(name);
      }
  
      public void testSecurityPropagation() throws Exception
      {
          // Assign the principal & crendentials for this thread
          SimplePrincipal user = new SimplePrincipal(USER);
          thread_principal.set(user);
          thread_credential.set(PASSWORD);
          // Spawn a thread 
          Thread t = new Thread(new Child(), "testSecurityPropagation");
          t.start();
          t.join();
      }
  
      public void testSecurityPropagation2() throws Exception
      {
          // Assign the principal & crendentials for this thread
          SimplePrincipal user = new SimplePrincipal(USER);
          thread_principal.set(user);
          thread_credential.set(PASSWORD);
          // Spawn a thread 
          Thread t = new Thread(new Child(), "testSecurityPropagation");
          // See that changing the current thread info is not seen by children threads
          thread_principal.set(new SimplePrincipal("other"));
          thread_credential.set("otherpass");
          t.start();
          t.join();
      }
  
      static class Child implements Runnable
      {
          public void run()
          {
              Thread t = Thread.currentThread();
              System.out.println("Child.run begin, t="+t);
              if( t.getName().equals("testSecurityPropagation") )
              {
                  SimplePrincipal user = (SimplePrincipal) thread_principal.get();
                  String password = (String) thread_credential.get();
                  if( user.getName().equals(USER) == false )
                      fail("Thread user != "+USER);
                  if( password.equals(PASSWORD) == false )
                      fail("Thread password != "+PASSWORD);
              }
              System.out.println("Child.run end, t="+t);
          }
      }
  
      public static void main(java.lang.String[] args)
      {
          System.setErr(System.out);
          TestSuite suite = new TestSuite(ThreadLocalTest.class);
          junit.textui.TestRunner.run(suite);
      }
      
  }
  
  
  

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

Reply via email to