[jboss-cvs] Picketbox SVN: r258 - in trunk/security-jboss-sx: jbosssx/src/main/java/org/jboss/security/auth/message/config and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Sep 21 18:01:09 EDT 2011


Author: sguilhen at redhat.com
Date: 2011-09-21 18:01:09 -0400 (Wed, 21 Sep 2011)
New Revision: 258

Removed:
   trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/AuthProviderRegistrationDelegate.java
Modified:
   trunk/security-jboss-sx/jbosssx/pom.xml
   trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigFactory.java
   trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigProvider.java
   trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossClientAuthConfig.java
   trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java
   trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPILoginModuleDelgateUnitTestCase.java
   trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIServerAuthenticationManagerUnitTestCase.java
   trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIWorkflowUnitTestCase.java
   trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestAuthConfigProvider.java
   trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestClientAuthConfig.java
   trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestServerAuthConfig.java
   trunk/security-jboss-sx/parent/pom.xml
Log:
SECURITY-621: Updated JASPI dependency and adapted code to the new API

Modified: trunk/security-jboss-sx/jbosssx/pom.xml
===================================================================
--- trunk/security-jboss-sx/jbosssx/pom.xml	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/pom.xml	2011-09-21 22:01:09 UTC (rev 258)
@@ -116,8 +116,8 @@
          <scope>compile</scope>
       </dependency>
       <dependency>
-         <groupId>org.jboss.javaee</groupId>
-         <artifactId>jboss-jaspi-api</artifactId>
+         <groupId>org.jboss.spec.javax.security.auth.message</groupId>
+         <artifactId>jboss-jaspi-api_1.0_spec</artifactId>
          <scope>compile</scope>
       </dependency>
       <dependency>

Deleted: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/AuthProviderRegistrationDelegate.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/AuthProviderRegistrationDelegate.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/AuthProviderRegistrationDelegate.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -1,304 +0,0 @@
-/*
-  * JBoss, Home of Professional Open Source
-  * Copyright 2005, JBoss Inc., and individual contributors as indicated
-  * by the @authors tag. See the copyright.txt in the distribution for a
-  * full listing of individual contributors.
-  *
-  * This is free software; you can redistribute it and/or modify it
-  * under the terms of the GNU Lesser General Public License as
-  * published by the Free Software Foundation; either version 2.1 of
-  * the License, or (at your option) any later version.
-  *
-  * This software is distributed in the hope that it will be useful,
-  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  * Lesser General Public License for more details.
-  *
-  * You should have received a copy of the GNU Lesser General Public
-  * License along with this software; if not, write to the Free
-  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  */
-package org.jboss.security.auth.message.config;
-
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.UUID;
-
-import javax.security.auth.message.AuthException;
-import javax.security.auth.message.config.AuthConfigFactory;
-import javax.security.auth.message.config.AuthConfigProvider;
-import javax.security.auth.message.config.RegistrationListener;
-import javax.security.auth.message.config.AuthConfigFactory.RegistrationContext;
-
-import org.jboss.logging.Logger;
-
-//$Id$
-
-/**
- *  Delegate that handles the AuthProvider registration for a 
- *  layer and an Application Context
- *  @author <a href="mailto:Anil.Saldhana at jboss.org">Anil Saldhana</a>
- *  @since  May 15, 2006 
- *  @version $Revision$
- */
-public class AuthProviderRegistrationDelegate
-{
-   private static Logger log = Logger.getLogger(AuthProviderRegistrationDelegate.class);
-   
-   //TODO: Improve the data structures
-   
-   /**
-    * Map of String key to provider
-    */
-   private Map<String,AuthConfigProvider> keyProviderMap = new HashMap<String,AuthConfigProvider>();
-   
-   /**
-    * Map of key to listener 
-    */
-   private Map<String,RegistrationListener> keyListenerMap = new HashMap<String,RegistrationListener>();
-   
-   /**
-    * Map of registration id to description
-    */
-   private Map<String,String> idToDescriptionMap = new HashMap<String,String>();
-   
-   /**
-    * Map of registration id to key  
-    */
-   private Map<String,String> idKeyMap = new HashMap<String,String>();
-   
-   /**
-    * Map of provider to a list of registration ids
-    */
-   private Map<AuthConfigProvider,List<String>> providerToIDListMap = 
-      new HashMap<AuthConfigProvider,List<String>>(); 
-   
-   
-   public AuthProviderRegistrationDelegate()
-   { 
-   }
-   
-   /**
-    * @see AuthConfigFactory#detachListener(RegistrationListener, String, String)
-    */
-   @SuppressWarnings({"unchecked", "rawtypes"})
-   public String[] detachListener(RegistrationListener listener, String layer, 
-         String appContext)
-   { 
-      if(listener == null)
-         throw new IllegalArgumentException("listener is null");
-      String[] arr = new String[0]; 
-      String input = (layer + "_" + appContext).toUpperCase();
-      String allLayer  = ("NULL" + "_" + appContext).toUpperCase(); 
-      String allContext = (layer + "_" + "NULL").toUpperCase();
-      String general = "NULL" + "_" + "NULL"; 
-      
-      RegistrationListener origListener = null;
-      String key = null;
-      for(int i = 0 ; i < 4 && origListener == null; i++)
-      {
-         if(i == 0) key = input;
-         if(i == 1) key = allLayer;
-         if(i == 2) key = allContext;
-         if(i == 3) key = general;
-         origListener = (RegistrationListener)keyListenerMap.get(key);
-      } 
-      
-      if(origListener == listener)
-      {
-         keyListenerMap.remove(key);
-         //Get the ID List
-         AuthConfigProvider provider = (AuthConfigProvider)keyProviderMap.get(key);
-         if(provider != null)
-         {
-            List list = (List)providerToIDListMap.get(provider);
-            arr = new String[list.size()];
-            list.toArray(arr);
-         }
-      } 
-      return arr;   
-   }
-   
-   /**
-    * @see AuthConfigFactory#getConfigProvider(String, String, RegistrationListener)
-    */ 
-   public AuthConfigProvider getConfigProvider(String layer, String appContext, 
-         RegistrationListener listener)
-   { 
-      if(appContext == null)
-         appContext = " ";
-      String input = (layer + "_" + appContext).toUpperCase();
-      String allLayer  = ("NULL" + "_" + appContext).toUpperCase(); 
-      String allContext = (layer + "_" + "NULL").toUpperCase();
-      String general = "NULL" + "_" + "NULL";
-      String blank = (layer + "_" + " ").toUpperCase();
-      
-      AuthConfigProvider acp = null;
-      String key = null;
-      for(int i = 0 ; i < 5 && acp == null; i++)
-      {
-         if(i == 0) key = input;
-         if(i == 1) key = allLayer;
-         if(i == 2) key = allContext;
-         if(i == 3) key = general;
-         if(i == 4) key = blank;
-         acp = (AuthConfigProvider)keyProviderMap.get(key);
-      }  
-      if(acp != null && listener != null)
-        this.keyListenerMap.put(key,listener);
-      
-      return acp;
-   }
-   
-   /**
-    * @see AuthConfigFactory#getRegistrationContext(String)
-    */
-   public RegistrationContext getRegistrationContext(String registrationID)
-   { 
-      final String description = (String)idToDescriptionMap.get(registrationID);
-      String key = (String)idKeyMap.get(registrationID);
-      StringTokenizer st = new StringTokenizer(key, "_");
-      if(st.countTokens() < 2)
-         throw new IllegalStateException("Invalid key obtained="+key);
-      final String layer = st.nextToken();
-      final String appCtx = st.nextToken();
-      
-      return new RegistrationContext()
-      { 
-         public String getAppContext()
-         { 
-            return appCtx.equals("NULL") ? null : appCtx;
-         }
-
-         public String getDescription()
-         { 
-            return description;
-         }
-
-         public String getMessageLayer()
-         { 
-            return layer.equals("NULL")? null : layer;
-         }
-
-		public boolean isPersistent() 
-		{ 
-			return false;
-		} 
-      };
-   }
-   
-   /**
-    * @see AuthConfigFactory#getRegistrationIDs(AuthConfigProvider)
-    */
-   @SuppressWarnings({"unchecked", "rawtypes"})
-   public String[] getRegistrationIDs(AuthConfigProvider provider)
-   {  
-      List al = new ArrayList();
-      if(provider == null)
-      {
-         al.addAll(idToDescriptionMap.keySet());  
-      }
-      else
-      {
-         List list = (List)this.providerToIDListMap.get(provider);
-         if(list != null)
-            al.addAll(list); 
-      }
-      String[] sarr = new String[al.size()];
-      al.toArray(sarr);
-      return sarr;
-   }
-   
-   /**
-    * @see AuthConfigFactory#registerConfigProvider(String, Map, String, String, String)
-    */
-   @SuppressWarnings({"unchecked", "rawtypes"})
-   public String registerConfigProvider(String className, Map properties, 
-         String layer, String appContext, String description)
-   throws AuthException, SecurityException
-   { 
-      if(className == null || className.length() == 0)
-         throw new IllegalArgumentException("className is null or zero length");
- 
-      //Instantiate the provider
-      AuthConfigProvider acp = null;
-      try
-      {
-         Class provClass = SecurityActions.getContextClassLoader().loadClass(className);
-         Constructor ctr = provClass.getConstructor(new Class[] {Map.class});
-         acp = (AuthConfigProvider)ctr.newInstance(new Object[] {properties});
-      }
-      catch(Exception e)
-      {
-        log.error("Cannot register provider:"+className+":",e);
-        throw new AuthException("Cannot register Provider "+ className + ":reason="+e); 
-      } 
-      
-      return this.registerConfigProvider(acp, layer, appContext, description); 
-   }
-   
-   @SuppressWarnings({"unchecked", "rawtypes"})
-   public String registerConfigProvider(AuthConfigProvider provider,
-         String layer,  String appContext,  String description)
-   {
-      if(provider == null)
-         throw new IllegalArgumentException("provider is null");
-      
-      StringBuilder key = new StringBuilder();  
-      key.append(layer == null ? "NULL" : layer.toUpperCase());
-      key.append("_");
-      key.append(appContext == null ? "NULL" : appContext.toUpperCase());
-      
-      String keystr = key.toString();
-      keyProviderMap.put(keystr,provider); 
-      
-      //Generate a GUID
-      UUID guid = UUID.randomUUID();
-      String providerID = guid.toString();
-      this.idKeyMap.put(providerID, keystr);
-      List list = (List)this.providerToIDListMap.get(provider);
-      if(list == null) 
-      {
-         list = new ArrayList(); 
-      }
-      list.add(providerID);
-      this.providerToIDListMap.put(provider,list); 
-      if(description != null)
-         this.idToDescriptionMap.put(providerID, description);
-      
-      //Check if their is a pre-existing listener
-      RegistrationListener listener = (RegistrationListener)keyListenerMap.get(keystr);
-      if(listener != null)
-         listener.notify(layer,appContext);
-      
-      return providerID;  
-   }
-   
-   /**
-    * @see AuthConfigFactory#removeRegistration(String)
-    */
-   public boolean removeRegistration(String registrationID)
-   { 
-      if(registrationID == null)
-         throw new IllegalArgumentException("registrationID is null");
-      
-      String key = (String)idKeyMap.get(registrationID);
-      if(key != null)
-      {
-         RegistrationListener listener = (RegistrationListener)this.keyListenerMap.get(key);
-         RegistrationContext rc = this.getRegistrationContext(registrationID);
-         
-         this.keyProviderMap.remove(key);
-         //Notify the listener of the change
-         if(listener != null)
-            listener.notify(rc.getMessageLayer(),rc.getAppContext()); 
-         return true;
-      }
-      return false;
-   } 
-}
\ No newline at end of file

Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigFactory.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigFactory.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigFactory.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -1,121 +1,331 @@
 /*
-  * JBoss, Home of Professional Open Source
-  * Copyright 2005, JBoss Inc., and individual contributors as indicated
-  * by the @authors tag. See the copyright.txt in the distribution for a
-  * full listing of individual contributors.
-  *
-  * This is free software; you can redistribute it and/or modify it
-  * under the terms of the GNU Lesser General Public License as
-  * published by the Free Software Foundation; either version 2.1 of
-  * the License, or (at your option) any later version.
-  *
-  * This software is distributed in the hope that it will be useful,
-  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  * Lesser General Public License for more details.
-  *
-  * You should have received a copy of the GNU Lesser General Public
-  * License along with this software; if not, write to the Free
-  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  */
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
 package org.jboss.security.auth.message.config;
- 
+
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.UUID;
 
-import javax.security.auth.message.AuthException;
 import javax.security.auth.message.config.AuthConfigFactory;
 import javax.security.auth.message.config.AuthConfigProvider;
 import javax.security.auth.message.config.RegistrationListener;
 
+import org.jboss.logging.Logger;
+
 //$Id$
 
 /**
- *  Default Authentication Configuration Factory
- *  @author <a href="mailto:Anil.Saldhana at jboss.org">Anil Saldhana</a>
- *  @since  May 15, 2006 
- *  @version $Revision$
+ * Default Authentication Configuration Factory
+ * 
+ * @author <a href="mailto:Anil.Saldhana at jboss.org">Anil Saldhana</a>
+ * @since May 15, 2006
+ * @version $Revision$
  */
 public class JBossAuthConfigFactory extends AuthConfigFactory
-{   
-   private AuthProviderRegistrationDelegate delegate = null;  
-   
+{
+   private static Logger log = Logger.getLogger(JBossAuthConfigFactory.class);
+
+   /**
+    * Map of String key to provider
+    */
+   private Map<String, AuthConfigProvider> keyProviderMap = new HashMap<String, AuthConfigProvider>();
+
+   /**
+    * Map of key to listener
+    */
+   private Map<String, RegistrationListener> keyListenerMap = new HashMap<String, RegistrationListener>();
+
+   /**
+    * Map of registration id to description
+    */
+   private Map<String, String> idToDescriptionMap = new HashMap<String, String>();
+
+   /**
+    * Map of registration id to key
+    */
+   private Map<String, String> idKeyMap = new HashMap<String, String>();
+
+   /**
+    * Map of provider to a list of registration ids
+    */
+   private Map<AuthConfigProvider, List<String>> providerToIDListMap = new HashMap<AuthConfigProvider, List<String>>();
+
+   /**
+    * <p>
+    * Creates an instance of {@code JBossAuthConfigFactory}.
+    * </p>
+    */
    public JBossAuthConfigFactory()
-   {   
-      delegate = new AuthProviderRegistrationDelegate();
-      Map<String,Object> props = new HashMap<String,Object>();
-      JBossAuthConfigProvider provider = new JBossAuthConfigProvider(props);
-      //register a few default providers for the layers
-      delegate.registerConfigProvider(provider, "HTTP", " ", "Default Provider");  
-      delegate.registerConfigProvider(provider, "HttpServlet", " ", "Default Provider"); 
+   {
+      Map<String, Object> props = new HashMap<String, Object>();
+      JBossAuthConfigProvider provider = new JBossAuthConfigProvider(props, null);
+      // register a few default providers for the layers
+      this.registerConfigProvider(provider, "HTTP", " ", "Default Provider");
+      this.registerConfigProvider(provider, "HttpServlet", " ", "Default Provider");
    }
-   
-   /**
-    * @see AuthConfigFactory#detachListener(RegistrationListener, String, String)
+
+   /*
+    * (non-Javadoc)
+    * @see javax.security.auth.message.config.AuthConfigFactory#detachListener(javax.security.auth.message.config.RegistrationListener, java.lang.String, java.lang.String)
     */
-   public String[] detachListener(RegistrationListener listener, String layer, 
-         String appContext)
-   { 
-      return delegate.detachListener(listener,layer,appContext);
+   public String[] detachListener(RegistrationListener listener, String layer, String appContext)
+   {
+
+      if (listener == null)
+         throw new IllegalArgumentException("listener is null");
+
+      String[] arr = new String[0];
+      String input = (layer + "_" + appContext).toUpperCase();
+      String allLayer = ("NULL" + "_" + appContext).toUpperCase();
+      String allContext = (layer + "_" + "NULL").toUpperCase();
+      String general = "NULL" + "_" + "NULL";
+
+      RegistrationListener origListener = null;
+      String key = null;
+      for (int i = 0; i < 4 && origListener == null; i++)
+      {
+         if (i == 0)
+            key = input;
+         if (i == 1)
+            key = allLayer;
+         if (i == 2)
+            key = allContext;
+         if (i == 3)
+            key = general;
+         origListener = (RegistrationListener) keyListenerMap.get(key);
+      }
+
+      if (origListener == listener)
+      {
+         keyListenerMap.remove(key);
+         // Get the ID List
+         AuthConfigProvider provider = (AuthConfigProvider) keyProviderMap.get(key);
+         if (provider != null)
+         {
+            List<String> list = providerToIDListMap.get(provider);
+            arr = new String[list.size()];
+            list.toArray(arr);
+         }
+      }
+      return arr;
    }
- 
-   /**
-    * @see AuthConfigFactory#getConfigProvider(String, String, RegistrationListener)
+
+   /*
+    * (non-Javadoc)
+    * @see javax.security.auth.message.config.AuthConfigFactory#getConfigProvider(java.lang.String, java.lang.String, javax.security.auth.message.config.RegistrationListener)
     */
-   public AuthConfigProvider getConfigProvider(String layer, String appContext, 
-          RegistrationListener listener)
-   { 
-      return delegate.getConfigProvider(layer, appContext, listener);
+   public AuthConfigProvider getConfigProvider(String layer, String appContext, RegistrationListener listener)
+   {
+      if (appContext == null)
+         appContext = " ";
+      String input = (layer + "_" + appContext).toUpperCase();
+      String allLayer = ("NULL" + "_" + appContext).toUpperCase();
+      String allContext = (layer + "_" + "NULL").toUpperCase();
+      String general = "NULL" + "_" + "NULL";
+      String blank = (layer + "_" + " ").toUpperCase();
+
+      AuthConfigProvider acp = null;
+      String key = null;
+      for (int i = 0; i < 5 && acp == null; i++)
+      {
+         if (i == 0)
+            key = input;
+         if (i == 1)
+            key = allLayer;
+         if (i == 2)
+            key = allContext;
+         if (i == 3)
+            key = general;
+         if (i == 4)
+            key = blank;
+         acp = (AuthConfigProvider) keyProviderMap.get(key);
+      }
+      
+      if (acp != null && listener != null)
+         this.keyListenerMap.put(key, listener);
+
+      return acp;
    }
- 
-   /**
-    * @see AuthConfigFactory#getRegistrationContext(String)
+
+   /*
+    * (non-Javadoc)
+    * @see javax.security.auth.message.config.AuthConfigFactory#getRegistrationContext(java.lang.String)
     */
    public RegistrationContext getRegistrationContext(String registrationID)
-   { 
-      return delegate.getRegistrationContext(registrationID);
+   {
+      final String description = (String) idToDescriptionMap.get(registrationID);
+      String key = (String) idKeyMap.get(registrationID);
+      StringTokenizer st = new StringTokenizer(key, "_");
+      if (st.countTokens() < 2)
+         throw new IllegalStateException("Invalid key obtained=" + key);
+      final String layer = st.nextToken();
+      final String appCtx = st.nextToken();
+
+      return new RegistrationContext()
+      {
+         public String getAppContext()
+         {
+            return appCtx.equals("NULL") ? null : appCtx;
+         }
+
+         public String getDescription()
+         {
+            return description;
+         }
+
+         public String getMessageLayer()
+         {
+            return layer.equals("NULL") ? null : layer;
+         }
+
+         public boolean isPersistent()
+         {
+            return false;
+         }
+      };
    }
- 
-   /**
-    * @see AuthConfigFactory#getRegistrationIDs(AuthConfigProvider)
+
+   /*
+    * (non-Javadoc)
+    * @see javax.security.auth.message.config.AuthConfigFactory#getRegistrationIDs(javax.security.auth.message.config.AuthConfigProvider)
     */
    public String[] getRegistrationIDs(AuthConfigProvider provider)
-   { 
-      return delegate.getRegistrationIDs(provider);
+   {
+      List<String> al = new ArrayList<String>();
+      if (provider == null)
+      {
+         al.addAll(idToDescriptionMap.keySet());
+      }
+      else
+      {
+         List<String> list = this.providerToIDListMap.get(provider);
+         if (list != null)
+            al.addAll(list);
+      }
+      String[] sarr = new String[al.size()];
+      al.toArray(sarr);
+      return sarr;
    }
- 
-   /**
-    * @see AuthConfigFactory#refresh()
+
+   /*
+    * (non-Javadoc)
+    * @see javax.security.auth.message.config.AuthConfigFactory#refresh()
     */
-   public void refresh() throws AuthException, SecurityException
-   { 
+   public void refresh()
+   {
    }
- 
-   /**
-    * @see AuthConfigFactory#registerConfigProvider(String, Map, String, String, String)
-    */ 
-   @SuppressWarnings("rawtypes")
-   public String registerConfigProvider(String className, Map properties, 
-         String layer, String appContext, String description)
-   throws AuthException, SecurityException
-   { 
-      return delegate.registerConfigProvider(className, properties, 
-           layer,  appContext,  description);
+
+   /*
+    * (non-Javadoc)
+    * @see javax.security.auth.message.config.AuthConfigFactory#registerConfigProvider(java.lang.String, java.util.Map, java.lang.String, java.lang.String, java.lang.String)
+    */
+   public String registerConfigProvider(String className, Map properties, String layer, String appContext,
+         String description)
+   {
+      if (className == null || className.length() == 0)
+         throw new IllegalArgumentException("className is null or zero length");
+
+      // Instantiate the provider
+      AuthConfigProvider acp = null;
+      try
+      {
+         // An AuthConfigProvider must have a two-argument constructor (Map properties, AuthConfigFactory factory). 
+         Class<?> provClass = SecurityActions.getContextClassLoader().loadClass(className);
+         Constructor<?> ctr = provClass.getConstructor(new Class[] {Map.class, AuthConfigFactory.class});
+         acp = (AuthConfigProvider) ctr.newInstance(new Object[] {properties, null});
+      }
+      catch (Exception e)
+      {
+         log.error("Cannot register provider:" + className + ":", e);
+         throw new SecurityException("Cannot register Provider " + className + ":reason=" + e);
+      }
+
+      return this.registerConfigProvider(acp, layer, appContext, description);
    }
- 
-   /**
-    * @see AuthConfigFactory#removeRegistration(String)
+
+   /*
+    * (non-Javadoc)
+    * @see javax.security.auth.message.config.AuthConfigFactory#registerConfigProvider(javax.security.auth.message.config.AuthConfigProvider, java.lang.String, java.lang.String, java.lang.String)
     */
+   public String registerConfigProvider(AuthConfigProvider provider, String layer, String appContext, String description)
+   {
+      if (provider == null)
+         throw new IllegalArgumentException("provider is null");
+
+      StringBuilder key = new StringBuilder();
+      key.append(layer == null ? "NULL" : layer.toUpperCase());
+      key.append("_");
+      key.append(appContext == null ? "NULL" : appContext.toUpperCase());
+
+      String keystr = key.toString();
+      keyProviderMap.put(keystr, provider);
+
+      // Generate a GUID
+      UUID guid = UUID.randomUUID();
+      String providerID = guid.toString();
+      this.idKeyMap.put(providerID, keystr);
+      List<String> list = this.providerToIDListMap.get(provider);
+      if (list == null)
+      {
+         list = new ArrayList<String>();
+      }
+      list.add(providerID);
+      this.providerToIDListMap.put(provider, list);
+      if (description != null)
+         this.idToDescriptionMap.put(providerID, description);
+
+      // Check if their is a pre-existing listener
+      RegistrationListener listener = keyListenerMap.get(keystr);
+      if (listener != null)
+         listener.notify(layer, appContext);
+
+      return providerID;
+   }
+
+   /*
+    * (non-Javadoc)
+    * @see javax.security.auth.message.config.AuthConfigFactory#removeRegistration(java.lang.String)
+    */
    public boolean removeRegistration(String registrationID)
-   { 
-      return delegate.removeRegistration(registrationID);
+   {
+      if (registrationID == null)
+         throw new IllegalArgumentException("registrationID is null");
+
+      String key = idKeyMap.get(registrationID);
+      if (key != null)
+      {
+         RegistrationListener listener = this.keyListenerMap.get(key);
+         RegistrationContext rc = this.getRegistrationContext(registrationID);
+
+         this.keyProviderMap.remove(key);
+         // Notify the listener of the change
+         if (listener != null)
+            listener.notify(rc.getMessageLayer(), rc.getAppContext());
+         return true;
+      }
+      return false;
    }
-
-   @Override
-   public String registerConfigProvider(AuthConfigProvider provider,
-         String layer,  String appContext,  String description)
-   { 
-      return delegate.registerConfigProvider(provider, layer, appContext, description);
-   } 
 }
\ No newline at end of file

Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigProvider.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigProvider.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossAuthConfigProvider.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -25,6 +25,7 @@
 
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.message.AuthException;
+import javax.security.auth.message.config.AuthConfigFactory;
 import javax.security.auth.message.config.AuthConfigProvider;
 import javax.security.auth.message.config.ClientAuthConfig;
 import javax.security.auth.message.config.ServerAuthConfig;
@@ -50,9 +51,13 @@
     * 
     * @param props Context Properties
     */
-   public JBossAuthConfigProvider(Map<String,Object> props)
+   public JBossAuthConfigProvider(Map<String,Object> props, AuthConfigFactory factory)
    {
       this.contextProperties = props;
+      
+      // if a factory has been supplied this provider needs to register itself.
+      if (factory != null)
+         factory.registerConfigProvider(this, null, null, "JBossAuthConfigProvider Self Registration");
    } 
    /**
     * @see AuthConfigProvider#getClientAuthConfig(String, String, CallbackHandler)
@@ -103,7 +108,7 @@
    /**
     * @see AuthConfigProvider#refresh()
     */
-   public void refresh() throws AuthException, SecurityException
+   public void refresh()
    { 
    } 
    

Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossClientAuthConfig.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossClientAuthConfig.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossClientAuthConfig.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -100,7 +100,7 @@
    /**
     * @see AuthConfig#refresh()
     */
-   public void refresh() throws AuthException, SecurityException
+   public void refresh()
    {  
    }
 

Modified: trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/main/java/org/jboss/security/auth/message/config/JBossServerAuthConfig.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -193,7 +193,7 @@
    /**
     * @see AuthConfig#refresh()
     */
-   public void refresh() throws AuthException, SecurityException
+   public void refresh()
    { 
    } 
    

Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPILoginModuleDelgateUnitTestCase.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPILoginModuleDelgateUnitTestCase.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPILoginModuleDelgateUnitTestCase.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -68,7 +68,8 @@
    protected void setUp() throws Exception
    {
       factory = AuthConfigFactory.getFactory();
-      factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap()), layer, appId, "Test Config Provider");
+      factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap(), null), layer, appId,
+            "Test Config Provider");
 
       JBossSecurityContext jsc = new JBossSecurityContext("conf-jaspi-2");
       SecurityContextAssociation.setSecurityContext(jsc);

Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIServerAuthenticationManagerUnitTestCase.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIServerAuthenticationManagerUnitTestCase.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIServerAuthenticationManagerUnitTestCase.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -47,7 +47,7 @@
  * @author Anil.Saldhana at redhat.com
  */
 public class JASPIServerAuthenticationManagerUnitTestCase extends TestCase
-{ 
+{
    AuthConfigFactory factory = null;
 
    String layer = SecurityConstants.SERVLET_LAYER;
@@ -60,7 +60,8 @@
    protected void setUp() throws Exception
    {
       factory = AuthConfigFactory.getFactory();
-      factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap()), layer, appId, "Test Config Provider");
+      factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap(), null), layer, appId,
+            "Test Config Provider");
 
       SecurityContext jsc = new JBossSecurityContext("conf-jaspi");
       SecurityContextAssociation.setSecurityContext(jsc);
@@ -74,26 +75,22 @@
       xli.setConfigURL(configURL);
       xli.loadConfig();
    }
-   
+
    public void testIsValid()
    {
-      CallbackHandler cbh = new AppCallbackHandler("anil",
-            "anilpwd".toCharArray());
+      CallbackHandler cbh = new AppCallbackHandler("anil", "anilpwd".toCharArray());
       MessageInfo messageInfo = new GenericMessageInfo(new Object(), new Object());
       JASPIServerAuthenticationManager jaspiManager = new JASPIServerAuthenticationManager();
-      boolean valid = jaspiManager.isValid(messageInfo, new Subject(), layer, 
-                                       cbh);
+      boolean valid = jaspiManager.isValid(messageInfo, new Subject(), layer, cbh);
       assertTrue(valid);
    }
-   
+
    public void testIsInValid()
    {
-      CallbackHandler cbh = new AppCallbackHandler("anil",
-            "dead".toCharArray());
+      CallbackHandler cbh = new AppCallbackHandler("anil", "dead".toCharArray());
       MessageInfo messageInfo = new GenericMessageInfo(new Object(), new Object());
       JASPIServerAuthenticationManager jaspiManager = new JASPIServerAuthenticationManager();
-      boolean valid = jaspiManager.isValid(messageInfo, new Subject(), layer, 
-                                       cbh);
+      boolean valid = jaspiManager.isValid(messageInfo, new Subject(), layer, cbh);
       assertFalse(valid);
    }
 }
\ No newline at end of file

Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIWorkflowUnitTestCase.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIWorkflowUnitTestCase.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/JASPIWorkflowUnitTestCase.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -48,7 +48,6 @@
 import org.jboss.security.plugins.JBossSecurityContext;
 import org.jboss.test.SecurityActions;
 
-
 /**
  * Test the Server side workflow for JASPI
  * 
@@ -71,7 +70,8 @@
    protected void setUp() throws Exception
    {
       factory = AuthConfigFactory.getFactory();
-      factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap()), layer, appId, "Test Config Provider");
+      factory.registerConfigProvider(new JBossAuthConfigProvider(new HashMap(), null), layer, appId,
+            "Test Config Provider");
 
       SecurityContext jsc = new JBossSecurityContext("conf-jaspi");
       SecurityContextAssociation.setSecurityContext(jsc);
@@ -126,31 +126,29 @@
          AuthStatus status = sctx.validateRequest(mi, clientSubject, serviceSubject);
          assertEquals(AuthStatus.FAILURE, status);
       }
-      catch(AuthException ae)
+      catch (AuthException ae)
       {
          //Ignore - we are fine
       }
    }
-   
+
    private void validateJAASConfiguration()
    {
       //Lets validate the configuration
       Configuration config = Configuration.getConfiguration();
       AppConfigurationEntry[] appConfigEntries = config.getAppConfigurationEntry("conf-jaspi");
       assertTrue(appConfigEntries.length > 0);
-      for(AppConfigurationEntry appConfigEntry: appConfigEntries)
+      for (AppConfigurationEntry appConfigEntry : appConfigEntries)
       {
-         assertEquals("org.jboss.test.authentication.jaspi.TestLoginModule",
-               appConfigEntry.getLoginModuleName());
+         assertEquals("org.jboss.test.authentication.jaspi.TestLoginModule", appConfigEntry.getLoginModuleName());
          assertEquals(LoginModuleControlFlag.OPTIONAL, appConfigEntry.getControlFlag());
       }
-      
+
       appConfigEntries = config.getAppConfigurationEntry("lm-stack");
       assertTrue(appConfigEntries.length > 0);
-      for(AppConfigurationEntry appConfigEntry: appConfigEntries)
+      for (AppConfigurationEntry appConfigEntry : appConfigEntries)
       {
-         assertEquals("org.jboss.test.authentication.jaspi.TestLoginModule",
-               appConfigEntry.getLoginModuleName());
+         assertEquals("org.jboss.test.authentication.jaspi.TestLoginModule", appConfigEntry.getLoginModuleName());
          assertEquals(LoginModuleControlFlag.OPTIONAL, appConfigEntry.getControlFlag());
       }
    }

Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestAuthConfigProvider.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestAuthConfigProvider.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestAuthConfigProvider.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -50,7 +50,7 @@
      return new TestServerAuthConfig() ;
    }
 
-   public void refresh() throws AuthException, SecurityException
+   public void refresh()
    { 
    }   
 }

Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestClientAuthConfig.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestClientAuthConfig.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestClientAuthConfig.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -66,7 +66,7 @@
       return false;
    }
 
-   public void refresh() throws AuthException, SecurityException
+   public void refresh()
    { 
    } 
 }

Modified: trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestServerAuthConfig.java
===================================================================
--- trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestServerAuthConfig.java	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/jbosssx/src/test/java/org/jboss/test/authentication/jaspi/helpers/TestServerAuthConfig.java	2011-09-21 22:01:09 UTC (rev 258)
@@ -65,7 +65,7 @@
       return false;
    }
 
-   public void refresh() throws AuthException, SecurityException
+   public void refresh()
    { 
    } 
 }

Modified: trunk/security-jboss-sx/parent/pom.xml
===================================================================
--- trunk/security-jboss-sx/parent/pom.xml	2011-09-21 21:58:56 UTC (rev 257)
+++ trunk/security-jboss-sx/parent/pom.xml	2011-09-21 22:01:09 UTC (rev 258)
@@ -105,9 +105,9 @@
          <scope>compile</scope>
       </dependency>
       <dependency>
-         <groupId>org.jboss.javaee</groupId>
-         <artifactId>jboss-jaspi-api</artifactId>
-         <version>1.0.0.${org.jboss.javaee.version}</version>
+         <groupId>org.jboss.spec.javax.security.auth.message</groupId>
+         <artifactId>jboss-jaspi-api_1.0_spec</artifactId>
+         <version>1.0.0.Final</version>
          <scope>compile</scope>
       </dependency>
       <dependency>



More information about the jboss-cvs-commits mailing list