[jboss-cvs] JBossAS SVN: r110696 - in projects/jboss-jca/trunk: core/src/main/java/org/jboss/jca/core/connectionmanager and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Feb 17 09:22:37 EST 2011


Author: maeste
Date: 2011-02-17 09:22:36 -0500 (Thu, 17 Feb 2011)
New Revision: 110696

Modified:
   projects/jboss-jca/trunk/core/.classpath
   projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java
   projects/jboss-jca/trunk/deployers/.classpath
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java
   projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java
Log:
Security deployers impl

Modified: projects/jboss-jca/trunk/core/.classpath
===================================================================
--- projects/jboss-jca/trunk/core/.classpath	2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/core/.classpath	2011-02-17 14:22:36 UTC (rev 110696)
@@ -10,11 +10,8 @@
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-common-core.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-integration.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-jaspi-api.jar"/>
-	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-security-spi-bare.jar"/>
-	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-security-spi.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-threads.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-transaction-api.jar"/>
-	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jbosssx.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jnpserver.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/validation-api.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/embedded/shrinkwrap-api.jar"/>
@@ -25,5 +22,6 @@
 	<classpathentry combineaccessrules="false" kind="src" path="/ironjacamar-embedded"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jbossjts-integration.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jbossjts.jar"/>
+	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/picketbox.jar"/>
 	<classpathentry kind="output" path="eclipse-target/classes"/>
 </classpath>

Modified: projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java
===================================================================
--- projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java	2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/core/src/main/java/org/jboss/jca/core/connectionmanager/ConnectionManagerFactory.java	2011-02-17 14:22:36 UTC (rev 110696)
@@ -31,6 +31,8 @@
 import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
 import javax.transaction.TransactionManager;
 
+import org.jboss.security.SubjectFactory;
+
 /**
  * The connection manager factory.
  * @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
@@ -48,13 +50,15 @@
     * Create a connection manager
     * @param tsl The transaction support level
     * @param pool The pool for the connection manager
+    * @param subjectFactory the subjectFactory for connection manager
     * @param allocationRetry The allocation retry value
     * @param allocationRetryWaitMillis The allocation retry millis value
     * @return The connection manager instance
     */
    public NoTxConnectionManager createNonTransactional(final TransactionSupportLevel tsl,
                                                        final Pool pool,
-                                                       final Integer allocationRetry, 
+                                                       final SubjectFactory subjectFactory,
+                                                       final Integer allocationRetry,
                                                        final Long allocationRetryWaitMillis)
    {
       if (tsl == null)
@@ -81,6 +85,8 @@
             throw new IllegalArgumentException("Unknown transaction support level " + tsl);
       }
 
+      cm.setSubjectFactory(subjectFactory);
+
       setProperties(cm, pool, allocationRetry, allocationRetryWaitMillis, null);
       setNoTxProperties(cm);
 
@@ -91,6 +97,7 @@
     * Create a transactional connection manager
     * @param tsl The transaction support level
     * @param pool The pool for the connection manager
+    * @param subjectFactory the subjectFactory for connection manager
     * @param allocationRetry The allocation retry value
     * @param allocationRetryWaitMillis The allocation retry millis value
     * @param tm The transaction manager
@@ -103,6 +110,7 @@
     */
    public TxConnectionManager createTransactional(final TransactionSupportLevel tsl,
                                                   final Pool pool,
+                                                  final SubjectFactory subjectFactory,
                                                   final Integer allocationRetry,
                                                   final Long allocationRetryWaitMillis,
                                                   final TransactionManager tm,
@@ -140,6 +148,8 @@
             throw new IllegalArgumentException("Unknown transaction support level " + tsl);
       }
 
+      cm.setSubjectFactory(subjectFactory);
+
       setProperties(cm, pool, allocationRetry, allocationRetryWaitMillis, tm);
       setTxProperties(cm, interleaving, xaResourceTimeout, isSameRMOverride, wrapXAResource, padXid);
       handleTxIntegration(tm);
@@ -213,11 +223,11 @@
       if (padXid != null)
          cm.setPadXid(padXid.booleanValue());
    }
-   
+
    /**
     * Associate the transaction synchronizer with the transaction
     * manager.
-    * 
+    *
     * @param tm TransactionManager
     */
    public void handleTxIntegration(final TransactionManager tm)

Modified: projects/jboss-jca/trunk/deployers/.classpath
===================================================================
--- projects/jboss-jca/trunk/deployers/.classpath	2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/deployers/.classpath	2011-02-17 14:22:36 UTC (rev 110696)
@@ -33,5 +33,6 @@
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/jboss-logmanager.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/embedded/shrinkwrap-impl-base.jar"/>
 	<classpathentry kind="lib" path="/ironjacamar-parent/lib/embedded/shrinkwrap-spi.jar"/>
+	<classpathentry kind="lib" path="/ironjacamar-parent/lib/common/picketbox.jar"/>
 	<classpathentry kind="output" path="eclipse-target/classes"/>
 </classpath>

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java	2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractDsDeployer.java	2011-02-17 14:22:36 UTC (rev 110696)
@@ -275,7 +275,7 @@
       // Select the correct connection manager
       TransactionSupportLevel tsl = TransactionSupportLevel.LocalTransaction;
       ConnectionManagerFactory cmf = new ConnectionManagerFactory();
-      ConnectionManager cm = cmf.createTransactional(tsl, pool, allocationRetry, allocationRetryWaitMillis,
+      ConnectionManager cm = cmf.createTransactional(tsl, pool, null, allocationRetry, allocationRetryWaitMillis,
          getTransactionManager(), null, null, null, null, null);
 
       cm.setJndiName(jndiName);
@@ -366,7 +366,7 @@
       // Select the correct connection manager
       TransactionSupportLevel tsl = TransactionSupportLevel.XATransaction;
       ConnectionManagerFactory cmf = new ConnectionManagerFactory();
-      ConnectionManager cm = cmf.createTransactional(tsl, pool, allocationRetry, allocationRetryWaitMillis,
+      ConnectionManager cm = cmf.createTransactional(tsl, pool, null, allocationRetry, allocationRetryWaitMillis,
          getTransactionManager(), interleaving, xaResourceTimeout, isSameRMOverride, wrapXAResource, padXid);
 
       cm.setJndiName(jndiName);

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java	2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/common/AbstractResourceAdapterDeployer.java	2011-02-17 14:22:36 UTC (rev 110696)
@@ -25,6 +25,7 @@
 import org.jboss.jca.common.api.metadata.common.CommonAdminObject;
 import org.jboss.jca.common.api.metadata.common.CommonConnDef;
 import org.jboss.jca.common.api.metadata.common.CommonPool;
+import org.jboss.jca.common.api.metadata.common.CommonSecurity;
 import org.jboss.jca.common.api.metadata.common.CommonTimeOut;
 import org.jboss.jca.common.api.metadata.common.CommonValidation;
 import org.jboss.jca.common.api.metadata.common.CommonXaPool;
@@ -83,6 +84,7 @@
 import javax.transaction.TransactionManager;
 
 import org.jboss.logging.Logger;
+import org.jboss.security.SubjectFactory;
 
 /**
  * An abstract resource adapter deployer which contains common functionality
@@ -872,23 +874,47 @@
                      PoolFactory pf = new PoolFactory();
 
                      Boolean noTxSeparatePool = Boolean.FALSE;
+                     CommonSecurity security = null;
                      if (cdRaXml != null && cdRaXml.getPool() != null && cdRaXml.isXa())
                      {
                         CommonXaPool ijXaPool = (CommonXaPool) cdRaXml.getPool();
-
+                        security = cdRaXml.getSecurity();
                         if (ijXaPool != null)
                            noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
                      }
                      else if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
                      {
                         CommonXaPool ijXaPool = (CommonXaPool) ijCD.getPool();
-
+                        security = ijCD.getSecurity();
                         if (ijXaPool != null)
                            noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
                      }
 
-                     Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc, noTxSeparatePool.booleanValue());
+                     PoolStrategy strategy= PoolStrategy.ONE_POOL;
 
+                     String securityDomain = null;
+                     if (security != null) {
+                        if (security.isApplication())
+                        {
+                           strategy = PoolStrategy.POOL_BY_CRI;
+                        }
+                        else if (security.getSecurityDomain() != null &&
+                                 security.getSecurityDomain().trim().length() != 0)
+                        {
+                           strategy = PoolStrategy.POOL_BY_SUBJECT;
+                           securityDomain = security.getSecurityDomain();
+                        }
+                        else if (security.getSecurityDomainAndApplication() != null &&
+                                 security.getSecurityDomainAndApplication().trim().length() != 0)
+                        {
+                           strategy = PoolStrategy.POOL_BY_SUBJECT_AND_CRI;
+                           securityDomain = security.getSecurityDomainAndApplication();
+                        }
+
+                     }
+
+                     Pool pool = pf.create(strategy, mcf, pc, noTxSeparatePool.booleanValue());
+
                      // Add a connection manager
                      ConnectionManagerFactory cmf = new ConnectionManagerFactory();
                      ConnectionManager cm = null;
@@ -947,7 +973,9 @@
                      // Select the correct connection manager
                      if (tsl == TransactionSupportLevel.NoTransaction)
                      {
-                        cm = cmf.createNonTransactional(tsl, pool, allocationRetry, allocationRetryWaitMillis);
+                        cm = cmf.createNonTransactional(tsl, pool, getSubjectFactory(securityDomain),
+                           allocationRetry,
+                           allocationRetryWaitMillis);
                      }
                      else
                      {
@@ -986,7 +1014,8 @@
                            }
                         }
 
-                        cm = cmf.createTransactional(tsl, pool, allocationRetry, allocationRetryWaitMillis,
+                        cm = cmf.createTransactional(tsl, pool, getSubjectFactory(securityDomain), allocationRetry,
+                           allocationRetryWaitMillis,
                            getTransactionManager(), interleaving, xaResourceTimeout, isSameRMOverride,
                            wrapXAResource, padXid);
                      }
@@ -1178,24 +1207,46 @@
                                  PoolFactory pf = new PoolFactory();
 
                                  Boolean noTxSeparatePool = Boolean.FALSE;
+                                 CommonSecurity security = null;
                                  if (cdRaXml != null && cdRaXml.getPool() != null && cdRaXml.isXa())
                                  {
                                     CommonXaPool ijXaPool = (CommonXaPool) cdRaXml.getPool();
-
+                                    security = cdRaXml.getSecurity();
                                     if (ijXaPool != null)
                                        noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
                                  }
                                  else if (ijCD != null && ijCD.getPool() != null && ijCD.isXa())
                                  {
                                     CommonXaPool ijXaPool = (CommonXaPool) ijCD.getPool();
-
+                                    security = ijCD.getSecurity();
                                     if (ijXaPool != null)
                                        noTxSeparatePool = ijXaPool.isNoTxSeparatePool();
                                  }
 
-                                 Pool pool = pf.create(PoolStrategy.ONE_POOL, mcf, pc,
-                                    noTxSeparatePool.booleanValue());
+                                 PoolStrategy strategy = PoolStrategy.ONE_POOL;
 
+                                 String securityDomain = null;
+                                 if (security != null) {
+                                    if (security.isApplication())
+                                    {
+                                       strategy = PoolStrategy.POOL_BY_CRI;
+                                    }
+                                    else if (security.getSecurityDomain() != null &&
+                                             security.getSecurityDomain().trim().length() != 0)
+                                    {
+                                       strategy = PoolStrategy.POOL_BY_SUBJECT;
+                                       securityDomain = security.getSecurityDomain();
+                                    }
+                                    else if (security.getSecurityDomainAndApplication() != null &&
+                                             security.getSecurityDomainAndApplication().trim().length() != 0)
+                                    {
+                                       strategy = PoolStrategy.POOL_BY_SUBJECT_AND_CRI;
+                                       securityDomain = security.getSecurityDomainAndApplication();
+                                    }
+
+                                 }
+                                 Pool pool = pf.create(strategy, mcf, pc, noTxSeparatePool.booleanValue());
+
                                  // Add a connection manager
                                  ConnectionManagerFactory cmf = new ConnectionManagerFactory();
                                  ConnectionManager cm = null;
@@ -1252,7 +1303,8 @@
                                  // Select the correct connection manager
                                  if (tsl == TransactionSupportLevel.NoTransaction)
                                  {
-                                    cm = cmf.createNonTransactional(tsl, pool, allocationRetry,
+                                    cm = cmf.createNonTransactional(tsl, pool, getSubjectFactory(securityDomain),
+                                       allocationRetry,
                                        allocationRetryWaitMillis);
                                  }
                                  else
@@ -1289,7 +1341,8 @@
                                           padXid = ijXaPool.isPadXid();
                                     }
 
-                                    cm = cmf.createTransactional(tsl, pool, allocationRetry,
+                                    cm = cmf.createTransactional(tsl, pool, getSubjectFactory(securityDomain),
+                                       allocationRetry,
                                        allocationRetryWaitMillis, getTransactionManager(), interleaving,
                                        xaResourceTimeout, isSameRMOverride, wrapXAResource, padXid);
                                  }
@@ -1519,6 +1572,8 @@
       }
    }
 
+   protected abstract SubjectFactory getSubjectFactory(String securityDomain);
+
    /**
     * Get management views for config property's
     * @param cps The config property's

Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java	2011-02-17 13:31:54 UTC (rev 110695)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/AbstractFungalRADeployer.java	2011-02-17 14:22:36 UTC (rev 110696)
@@ -49,6 +49,7 @@
 import javax.transaction.TransactionManager;
 
 import org.jboss.logging.Logger;
+import org.jboss.security.SubjectFactory;
 
 import com.github.fungal.api.Kernel;
 import com.github.fungal.api.util.Injection;
@@ -323,10 +324,10 @@
                      excludeAttributes.add(mgtCpName);
                }
 
-               String raName = baseName + ",type=ResourceAdapter,class=" + 
+               String raName = baseName + ",type=ResourceAdapter,class=" +
                   getClassName(mgtRa.getResourceAdapter().getClass().getName());
 
-               DynamicMBean raDMB = JMX.createMBean(mgtRa.getResourceAdapter(), 
+               DynamicMBean raDMB = JMX.createMBean(mgtRa.getResourceAdapter(),
                                                     "Resource adapter",
                                                     writeable,
                                                     null,
@@ -340,7 +341,7 @@
             }
          }
 
-         for (org.jboss.jca.core.api.management.ManagedConnectionFactory mgtMcf : 
+         for (org.jboss.jca.core.api.management.ManagedConnectionFactory mgtMcf :
                  mgtConnector.getManagedConnectionFactories())
          {
             if (mgtMcf.getManagedConnectionFactory() != null)
@@ -361,10 +362,10 @@
                      excludeAttributes.add(mgtCpName);
                }
 
-               String mcfName = baseName + ",type=ManagedConnectionFactory,class=" + 
+               String mcfName = baseName + ",type=ManagedConnectionFactory,class=" +
                   getClassName(mgtMcf.getManagedConnectionFactory().getClass().getName());
 
-               DynamicMBean mcfDMB = JMX.createMBean(mgtMcf.getManagedConnectionFactory(), 
+               DynamicMBean mcfDMB = JMX.createMBean(mgtMcf.getManagedConnectionFactory(),
                                                      "Managed connection factory",
                                                      writeable,
                                                      null,
@@ -373,34 +374,34 @@
                ObjectName mcfON = new ObjectName(mcfName);
 
                server.registerMBean(mcfDMB, mcfON);
-         
+
                ons.add(mcfON);
             }
 
             if (mgtMcf.getPoolConfiguration() != null)
             {
-               String mcfPCName = baseName + ",type=ManagedConnectionFactory,class=" + 
+               String mcfPCName = baseName + ",type=ManagedConnectionFactory,class=" +
                   getClassName(mgtMcf.getManagedConnectionFactory().getClass().getName()) +
                   ",subcategory=PoolConfiguration";
 
                DynamicMBean mcfPCDMB = JMX.createMBean(mgtMcf.getPoolConfiguration(), "Pool configuration");
                ObjectName mcfPCON = new ObjectName(mcfPCName);
-            
+
                server.registerMBean(mcfPCDMB, mcfPCON);
-         
+
                ons.add(mcfPCON);
             }
 
             if (mgtMcf.getPool() != null)
             {
-               String mcfPName = baseName + ",type=ManagedConnectionFactory,class=" + 
+               String mcfPName = baseName + ",type=ManagedConnectionFactory,class=" +
                   getClassName(mgtMcf.getManagedConnectionFactory().getClass().getName()) + ",subcategory=Pool";
-               
+
                DynamicMBean mcfPDMB = JMX.createMBean(mgtMcf.getPool(), "Pool");
                ObjectName mcfPON = new ObjectName(mcfPName);
-               
+
                server.registerMBean(mcfPDMB, mcfPON);
-               
+
                ons.add(mcfPON);
             }
          }
@@ -424,20 +425,20 @@
                   if (mgtCp.isConfidential())
                      excludeAttributes.add(mgtCpName);
                }
-               
-               String aoName = baseName + ",type=AdminObject,class=" + 
+
+               String aoName = baseName + ",type=AdminObject,class=" +
                   getClassName(mgtAo.getAdminObject().getClass().getName());
-               
-               DynamicMBean aoDMB = JMX.createMBean(mgtAo.getAdminObject(), 
+
+               DynamicMBean aoDMB = JMX.createMBean(mgtAo.getAdminObject(),
                                                     "Admin object",
                                                     writeable,
                                                     null,
                                                     excludeAttributes,
                                                     null);
                ObjectName aoON = new ObjectName(aoName);
-               
+
                server.registerMBean(aoDMB, aoON);
-               
+
                ons.add(aoON);
             }
          }
@@ -461,4 +462,19 @@
 
       return clz;
    }
+
+   @Override
+   protected SubjectFactory getSubjectFactory(String securityDomain)
+   {
+      try
+      {
+         return kernel.getBean(securityDomain, SubjectFactory.class);
+      }
+      catch (Throwable e)
+      {
+         log.error("Kernel loookup of securityDomain " + securityDomain + "got an error", e);
+         return null;
+      }
+
+   }
 }



More information about the jboss-cvs-commits mailing list