[jboss-svn-commits] JBL Code SVN: r33755 - in labs/jbossesb/trunk/product: lib/ext and 14 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 7 09:35:16 EDT 2010


Author: kevin.conner at jboss.com
Date: 2010-07-07 09:35:13 -0400 (Wed, 07 Jul 2010)
New Revision: 33755

Added:
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java
Removed:
   labs/jbossesb/trunk/product/lib/ext/jboss-security-spi.jar
   labs/jbossesb/trunk/product/lib/ext/jbosssx.jar
Modified:
   labs/jbossesb/trunk/product/.classpath
   labs/jbossesb/trunk/product/ivy.xml
   labs/jbossesb/trunk/product/ivysettings.xml
   labs/jbossesb/trunk/product/product.properties
   labs/jbossesb/trunk/product/rosetta/build.xml
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/security/SecurityContext.java
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipelineUnitTest.java
   labs/jbossesb/trunk/product/samples/quickstarts/load_generator/build.xml
   labs/jbossesb/trunk/product/samples/quickstarts/security_saml/picketlink-sts.war
   labs/jbossesb/trunk/product/samples/quickstarts/two_servers/readme.txt
   labs/jbossesb/trunk/product/samples/quickstarts/webservice_proxy_security/war/resources/WEB-INF/web.xml
   labs/jbossesb/trunk/product/services/base-project-build.xml
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/AbstractJmsServiceFactory.java
   labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java
Log:
Update to 4.7_CP2_ER4: JBESB-3328

Modified: labs/jbossesb/trunk/product/.classpath
===================================================================
--- labs/jbossesb/trunk/product/.classpath	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/.classpath	2010-07-07 13:35:13 UTC (rev 33755)
@@ -55,8 +55,8 @@
 	<classpathentry kind="lib" path="build/lib/javassist-3.6.0.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jaxb-api-2.1.jar"/>
 	<classpathentry kind="lib" path="build/lib/jaxb-xjc-2.1.4.jar"/>
-	<classpathentry kind="lib" path="build/lib/jboss-4.2.2.GA.jar"/>
-	<classpathentry kind="lib" path="build/lib/jbossall-client-4.2.2.GA.jar"/>
+	<classpathentry kind="lib" path="build/lib/jboss-4.2.3.GA.jar"/>
+	<classpathentry kind="lib" path="build/lib/jbossall-client-4.2.3.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-cache-1.2.4.SP2.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-classloader-2.0.6.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-classloading-2.0.6.GA.jar"/>
@@ -80,8 +80,8 @@
 	<classpathentry kind="lib" path="build/lib/jboss-metatype-2.1.0.SP1.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-profileservice-spi-5.1.0.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-reflect-2.0.2.GA.jar"/>
-	<classpathentry kind="lib" path="build/lib/jbosssx-4.2.3.GA.jar"/>
-	<classpathentry kind="lib" path="build/lib/jboss-system-4.2.2.GA.jar"/>
+	<classpathentry kind="lib" path="build/lib/jbosssx-2.0.3.SP1.jar"/>
+	<classpathentry kind="lib" path="build/lib/jboss-system-4.2.3.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-test-1.1.4.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jboss-vfs-2.1.2.GA.jar"/>
 	<classpathentry kind="lib" path="build/lib/jcr-1.0.jar"/>
@@ -116,8 +116,8 @@
 	<classpathentry kind="lib" path="build/lib/mina-core-1.1.7.jar"/>
 	<classpathentry kind="lib" path="build/lib/mvel2-2.0.12.jar"/>
 	<classpathentry kind="lib" path="build/lib/ognl-2.6.9.jar"/>
-	<classpathentry kind="lib" path="build/lib/picketlink-fed-api-1.0.1.jar"/>
-	<classpathentry kind="lib" path="build/lib/picketlink-fed-core-1.0.1.jar"/>
+	<classpathentry kind="lib" path="build/lib/picketlink-fed-api-1.0.3.final.jar"/>
+	<classpathentry kind="lib" path="build/lib/picketlink-fed-core-1.0.3.final.jar"/>
 	<classpathentry kind="lib" path="build/lib/quartz-1.5.2.jar"/>
 	<classpathentry kind="lib" path="build/lib/slf4j-api-1.4.3.jar"/>
 	<classpathentry kind="lib" path="build/lib/slf4j-log4j12-1.4.3.jar"/>

Modified: labs/jbossesb/trunk/product/ivy.xml
===================================================================
--- labs/jbossesb/trunk/product/ivy.xml	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/ivy.xml	2010-07-07 13:35:13 UTC (rev 33755)
@@ -39,9 +39,9 @@
 
         <dependency org="jboss.aop" name="jboss-aop-jdk50" rev="1.5.6.GA"/>
         <!-- dependency org="jboss.messaging" name="jboss-messaging-client" rev="1.4.1.CR1"/ -->
-        <dependency org="jboss" name="jboss-system" rev="4.2.2.GA"/>
-        <dependency org="jboss" name="jboss" rev="4.2.2.GA"/>
-        <dependency org="jboss" name="jbossall-client" rev="4.2.2.GA"/>
+        <dependency org="jboss" name="jboss-system" rev="4.2.3.GA"/>
+        <dependency org="jboss" name="jboss" rev="4.2.3.GA"/>
+        <dependency org="org.jboss.client" name="jbossall-client" rev="4.2.3.GA"/>
         <dependency org="com.jcraft" name="jsch" rev="0.1.38"/>
 	<dependency org="org.apache.juddi" name="uddi-ws" rev="3.0.2"/>
 	<dependency org="org.apache.juddi" name="juddi-client" rev="3.0.2"/>
@@ -158,17 +158,17 @@
 
         <dependency org="javax.xml.bind" name="jaxb-api" rev="2.1"/>
 
-        <dependency org="org.jboss.security" name="jboss-security-spi" rev="2.1.0.20090318"/>
-        <dependency org="jboss" name="jbosssx" rev="4.2.3.GA"/>
+        <dependency org="org.jboss.security" name="jboss-security-spi" rev="2.0.3.SP1"/>
+        <dependency org="org.jboss.security" name="jbosssx" rev="2.0.3.SP1"/>
 
 		<!-- JBoss Identity Federation -->
-        <dependency org="org.picketlink" name="picketlink-fed-api" rev="1.0.1"/>
-        <dependency org="org.picketlink" name="picketlink-fed-core" rev="1.0.1"/>
-        <dependency org="org.picketlink" name="picketlink-fed-model" rev="1.0.1"/>
-        <dependency org="org.picketlink" name="picketlink-xmlsec-model" rev="1.0.1"/>
-        <dependency org="org.picketlink" name="picketlink-bindings" rev="1.0.1"/>
-        <dependency org="org.picketlink" name="picketlink-bindings-jboss" rev="1.0.1"/>
-        <dependency org="org.picketlink" name="picketlink-web" rev="1.0.1"/>
+        <dependency org="org.picketlink" name="picketlink-fed-api" rev="1.0.3.final"/>
+        <dependency org="org.picketlink" name="picketlink-fed-core" rev="1.0.3.final"/>
+        <dependency org="org.picketlink" name="picketlink-fed-model" rev="1.0.3.final"/>
+        <dependency org="org.picketlink" name="picketlink-xmlsec-model" rev="1.0.3.final"/>
+        <dependency org="org.picketlink" name="picketlink-bindings" rev="1.0.3.final"/>
+        <dependency org="org.picketlink" name="picketlink-bindings-jboss" rev="1.0.3.final"/>
+        <dependency org="org.picketlink" name="picketlink-web" rev="1.0.3.final"/>
         <dependency org="org.apache" name="xmlsec" rev="1.4.3"/>
 
 	<!-- JOPR dependencies -->

Modified: labs/jbossesb/trunk/product/ivysettings.xml
===================================================================
--- labs/jbossesb/trunk/product/ivysettings.xml	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/ivysettings.xml	2010-07-07 13:35:13 UTC (rev 33755)
@@ -8,6 +8,9 @@
             <url name="jboss" m2compatible="true">
                 <artifact pattern="http://repository.jboss.org/maven2/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]"/>
             </url>
+            <url name="jboss-nexus" m2compatible="true">
+                <artifact pattern="https://repository.jboss.org/nexus/content/groups/public/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]"/>
+            </url>
             <ibiblio name="ibiblio" m2compatible="true"/> 
             <url name="milyn" m2compatible="true">
                 <artifact pattern="http://dist.codehaus.org/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]"/>

Deleted: labs/jbossesb/trunk/product/lib/ext/jboss-security-spi.jar
===================================================================
(Binary files differ)

Deleted: labs/jbossesb/trunk/product/lib/ext/jbosssx.jar
===================================================================
(Binary files differ)

Modified: labs/jbossesb/trunk/product/product.properties
===================================================================
--- labs/jbossesb/trunk/product/product.properties	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/product.properties	2010-07-07 13:35:13 UTC (rev 33755)
@@ -8,6 +8,8 @@
 # uncomment the following if you wish to use an app server installation
 # for tests instead of the included jbossesb-server
 #org.jboss.esb.server.home=<app server home>
+org.jboss.esb.server.home=/home/kevin/jbossas/jbossas5/jboss-5.1.0.GA
+#org.jboss.esb.server.home=/home/kevin/soa/jboss-eap-5.0/jboss-as
 
 # Uncomment all the ftp properties if you wish to override the ftp server
 #org.jboss.esb.test.ftp.hostname=<hostname:port>
@@ -17,4 +19,4 @@
 
 # Uncomment the following if you want more control over junit	 
 #org.jboss.esb.junit.haltonerror=yes	 
-#org.jboss.esb.junit.haltonfailure=yes
\ No newline at end of file
+#org.jboss.esb.junit.haltonfailure=yes

Modified: labs/jbossesb/trunk/product/rosetta/build.xml
===================================================================
--- labs/jbossesb/trunk/product/rosetta/build.xml	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/build.xml	2010-07-07 13:35:13 UTC (rev 33755)
@@ -31,10 +31,13 @@
     <property name="org.jboss.esb.lib.dir" location="${org.jboss.esb.internal.dest}/lib"/>
 	<property name="org.jboss.esb.ext.lib.dir" location="${org.jboss.esb.root.dir}/lib/ext"/>
 	
+	<property name="security.jars" value="jboss-security-spi*.jar jbosssx*.jar"/>
+
 	<path id="org.jboss.esb.rosetta.base.classpath">
         <fileset dir="${org.jboss.esb.ext.lib.dir}" includes="*.jar"/>
         <fileset dir="${org.jboss.esb.ext.lib.dir}/endorsed" includes="jboss-saaj.jar"/>
-        <fileset dir="${org.jboss.esb.lib.dir}" includes="*.jar"/>
+        <fileset dir="${org.jboss.esb.lib.dir}" includes="${security.jars}"/>
+        <fileset dir="${org.jboss.esb.lib.dir}" includes="*.jar" excludes="${security.jars}"/>
         <fileset dir="../../testlib" includes="emma*.jar"/>
         <fileset dir="${org.jboss.esb.ext.lib.dir}/standalone" includes="*.jar"/>
 		<pathelement location="${schema101.classes.dir}"/>

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -20,18 +20,25 @@
  */
 package org.jboss.internal.soa.esb.services.security;
 
+import java.security.AccessController;
 import java.security.Principal;
-import java.util.Iterator;
+import java.security.PrivilegedAction;
 import java.util.Set;
 
 import javax.security.auth.Subject;
 
+import org.apache.log4j.Logger;
 import org.jboss.internal.soa.esb.assertion.AssertArgument;
 import org.jboss.security.RunAsIdentity;
 import org.jboss.security.SecurityAssociation;
+import org.jboss.security.SecurityConstants;
+import org.jboss.security.SecurityContextAssociation;
+import org.jboss.security.SecurityContextFactory;
+import org.jboss.soa.esb.common.Configuration;
 import org.jboss.soa.esb.services.security.SecurityConfig;
 import org.jboss.soa.esb.services.security.SecurityContext;
 import org.jboss.soa.esb.services.security.principals.User;
+import org.jboss.soa.esb.util.ClassUtil;
 
 /**
  * JBoss Application Server(AS) specifiec security context propagator.
@@ -41,6 +48,46 @@
 public final class JBossASContextPropagator implements SecurityContextPropagator
 {
     /**
+     * Logger for this class.
+     */
+    private static final Logger LOGGER = Logger.getLogger(JBossASContextPropagator.class) ;
+    
+    /**
+     * The default implementation of the security context operations.
+     */
+    private static final JBossASSecurityContextOperations OPERATIONS ;
+
+    static
+    {
+        JBossASSecurityContextOperations operations = null ;
+        
+        final String implementation = Configuration.getJBossASSecurityContextOperationsImplementationClass() ;
+        if (implementation != null)
+        {
+            try
+            {
+                final Class<?> implementationClass = ClassUtil.forName(implementation, JBossASContextPropagator.class) ;
+                operations = (JBossASSecurityContextOperations)implementationClass.newInstance() ;
+            }
+            catch (final Throwable th)
+            {
+                LOGGER.error("Unexpected exception creating security context operations implementation, falling back to default", th) ;
+            }
+        }
+        
+        if (operations == null)
+        {
+            operations = (isSecurityContextAssociationPresent() ? new AS5SecurityContextOperations() : new AS4SecurityContextOperations()) ;
+        }
+        
+        if (LOGGER.isDebugEnabled())
+        {
+            LOGGER.debug("Default JBossASSecurityContextOperations initialised to " + operations.getClass().getName()) ;
+        }
+        OPERATIONS = operations ;
+    }
+
+    /**
      * Pushed the subject by calling {@link SecurityAssociation#pushSubjectContext(Subject, Principal, Object)}.
      *
      * @param context The SecurityContext holding the subject to push/propagate. May not be null.
@@ -48,25 +95,50 @@
      */
     public void pushSecurityContext(final SecurityContext context, Set<?> authCredentials, final SecurityConfig config)
     {
+        pushSecurityContext(context, authCredentials, config, OPERATIONS) ;
+    }
+
+    /**
+     * Pushed the subject by calling {@link SecurityAssociation#pushSubjectContext(Subject, Principal, Object)}.
+     *
+     * @param context The SecurityContext holding the subject to push/propagate. May not be null.
+     * @param config The SecurityConfig which contains the information specified from the security configuration element. Can be null.
+     * @param operations The implementation of the security context operations or null.
+     */
+    public void pushSecurityContext(final SecurityContext context, Set<?> authCredentials, final SecurityConfig config, final JBossASSecurityContextOperations operations)
+    {
         AssertArgument.isNotNull(context, "context");
 
         final Subject subject = context.getSubject();
         final Principal principal = getPrincipal(subject);
 
         //  associate the subject with jboss security
-        Object credential = null;
+        final Object credential ;
         if (authCredentials != null && authCredentials.isEmpty() == false)
         {
             credential = authCredentials.iterator().next();
         }
-        SecurityAssociation.pushSubjectContext(subject, principal, credential);
-
-
-        if (isRunAsSet(config))
+        else
         {
-            //  associate the runAs role with jboss security
-            SecurityAssociation.pushRunAsIdentity(new RunAsIdentity(config.getRunAs(), principal.getName()));
+            credential = null ;
         }
+        
+        final JBossASSecurityContextOperations ops = getSecurityContextOperations(operations) ;
+        
+        final String domain = context.getDomain() ;
+        if (System.getSecurityManager() == null)
+        {
+            ops.pushSecurityContext(principal, credential, subject, domain, config) ;
+        }
+        else
+        {
+            AccessController.doPrivileged(new PrivilegedAction<Object>() {
+                public Object run() {
+                    ops.pushSecurityContext(principal, credential, subject, domain, config) ;
+                    return null ;
+                }
+            }) ;
+        }
     }
 
     /**
@@ -77,16 +149,45 @@
      */
     public void popSecurityContext(final SecurityContext context, final SecurityConfig config)
     {
-        //  diassociate the subject with jboss security
-        SecurityAssociation.popSubjectContext();
+        popSecurityContext(context, config, OPERATIONS) ;
+    }
 
-        if (isRunAsSet(config))
+    /**
+     * Pops the subject by calling {@link SecurityAssociation#pushSubjectContext(Subject, Principal, Object)}.
+     *
+     * @param context The SecurityContext holding the subject to push/propagate. Can be null.
+     * @param config The SecurityConfig which contains the information specified from the security configuration element. Can be null.
+     * @param operations The implementation of the security context operations or null.
+     */
+    public void popSecurityContext(final SecurityContext context, final SecurityConfig config, final JBossASSecurityContextOperations operations)
+    {
+        final JBossASSecurityContextOperations ops = getSecurityContextOperations(operations) ;
+        
+        if (System.getSecurityManager() == null)
         {
-            //  associate the runAs role with jboss security
-            SecurityAssociation.popRunAsIdentity();
+            ops.popSecurityContext(config) ;
         }
+        else
+        {
+            AccessController.doPrivileged(new PrivilegedAction<Object>() {
+                public Object run() {
+                    ops.popSecurityContext(config) ;
+                    return null ;
+                }
+            }) ;
+        }
     }
 
+    /**
+     * Get the implementation of the security context operations.
+     * @param operations The specified implementation or null.
+     * @return The specified implementation or default implementation.
+     */
+    private JBossASSecurityContextOperations getSecurityContextOperations(final JBossASSecurityContextOperations operations)
+    {
+        return (operations != null ? operations : OPERATIONS) ;
+    }
+
     private Principal getPrincipal( final Subject subject)
     {
         for (Principal principal : subject.getPrincipals())
@@ -96,9 +197,103 @@
         return new User("NullPrincipal");
     }
 
-    private boolean isRunAsSet(final SecurityConfig config)
+    /**
+     * The security context operations interface.
+     * @author kevin
+     */
+    public interface JBossASSecurityContextOperations
     {
-        return config != null && config.getRunAs() != null;
+        public void pushSecurityContext(final Principal principal, final Object credential,
+            final Subject subject, final String domain, final SecurityConfig securityConfig) ;
+        
+        public void popSecurityContext(final SecurityConfig securityConfig) ;
     }
 
+    /**
+     * The AS4 implementation of the security context operations.
+     * @author kevin
+     */
+    public static class AS4SecurityContextOperations implements JBossASSecurityContextOperations
+    {
+        public void pushSecurityContext(final Principal principal, final Object credential,
+            final Subject subject, final String domain, final SecurityConfig securityConfig)
+        {
+            try
+            {
+                SecurityAssociation.pushSubjectContext(subject, principal, credential) ;
+                if ((securityConfig != null) && securityConfig.hasRunAs())
+                {
+                    SecurityAssociation.pushRunAsIdentity(new RunAsIdentity(securityConfig.getRunAs(), principal.getName()));
+                }
+            }
+            catch (final Exception ex)
+            {
+              throw new RuntimeException("Unexpected exception creating security context", ex) ;
+            }
+        }
+        
+        public void popSecurityContext(final SecurityConfig securityConfig)
+        {
+            if ((securityConfig != null) && securityConfig.hasRunAs())
+            {
+                SecurityAssociation.popRunAsIdentity() ;
+            }
+            SecurityAssociation.popSubjectContext() ;
+        }
+    }
+
+    /**
+     * The AS5 implementation of the security context operations.
+     * @author kevin
+     */
+    public static class AS5SecurityContextOperations implements JBossASSecurityContextOperations
+    {
+        public void pushSecurityContext(final Principal principal, final Object credential,
+            final Subject subject, final String domain, final SecurityConfig securityConfig)
+        {
+            final String securityDomain = domain == null ? SecurityConstants.DEFAULT_APPLICATION_POLICY : domain ;
+            try
+            {
+                final org.jboss.security.SecurityContext securityContext =
+                    SecurityContextFactory.createSecurityContext(principal, credential, subject, securityDomain) ;
+                SecurityContextAssociation.setSecurityContext(securityContext) ;
+                if ((securityConfig != null) && securityConfig.hasRunAs())
+                {
+                    securityContext.setOutgoingRunAs(new RunAsIdentity(securityConfig.getRunAs(), principal.getName()));
+                }
+            }
+            catch (final Exception ex)
+            {
+              throw new RuntimeException("Unexpected exception creating security context", ex) ;
+            }
+        }
+        
+        public void popSecurityContext(final SecurityConfig securityConfig)
+        {
+            final org.jboss.security.SecurityContext securityContext = SecurityContextAssociation.getSecurityContext() ;
+            if(securityContext != null)
+            {
+                if ((securityConfig != null) && securityConfig.hasRunAs())
+                {
+                    securityContext.setOutgoingRunAs(null) ;
+                }
+                SecurityContextAssociation.clearSecurityContext() ;
+            }
+        }
+    }
+
+    private static boolean isSecurityContextAssociationPresent()
+    {
+        try
+        {
+            ClassUtil.forName("org.jboss.security.SecurityContextAssociation", JBossASContextPropagator.class) ;
+            return true ;
+        }
+        catch (final ClassNotFoundException cnfe) {} // ignore
+        catch (final Throwable th)
+        {
+            LOGGER.debug("Exception checking for SecurityContextAssociation", th) ;
+        }
+        return false ;
+    }
 }

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -32,6 +32,7 @@
 import javax.naming.NamingException;
 
 import org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.JBossASSecurityContextOperations;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.helpers.KeyValuePair;
 import org.jboss.soa.esb.helpers.NamingContextException;
@@ -622,8 +623,18 @@
 	{
 		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.SECURITY_MODULE).getProperty(Environment.SECURITY_SERVICE_CONTEXT_PROPAGATOR_CLASS);
 	}
-	
+
 	/**
+	 * The JBossASSecurityContextOperations implementation class to use.
+	 *
+	 * @return String The fully qualified name of the JBossASSecurityContextOperations implementation class
+	 */
+	public static String getJBossASSecurityContextOperationsImplementationClass()
+	{
+		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.SECURITY_MODULE).getProperty(Environment.SECURITY_JBOSSAS_SECURITY_CONTEXT_OPERATIONS_CLASS);
+	}
+
+    /**
 	 * Get the bind address.
 	 * @return the bind address.
 	 */

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -255,6 +255,7 @@
         public static final String SECURITY_SERVICE_SEAL_KEYSIZE                        = "org.jboss.soa.esb.services.security.sealKeySize";
 	public static final String SECURITY_SERVICE_CONTEXT_TIMEOUT			= "org.jboss.soa.esb.services.security.contextTimeout";
 	public static final String SECURITY_SERVICE_CONTEXT_PROPAGATOR_CLASS= "org.jboss.soa.esb.services.security.contextPropagatorImplementationClass";
+	public static final String SECURITY_JBOSSAS_SECURITY_CONTEXT_OPERATIONS_CLASS = "org.jboss.internal.soa.esb.services.security.jbossasSecurityContextOperationsImplementationClass" ;
 
         public static final String SECURITY_SERVICE_PUBLIC_KEYSTORE             = "org.jboss.soa.esb.services.security.publicKeystore";
         public static final String SECURITY_SERVICE_PUBLIC_KEYSTORE_TYPE        = "org.jboss.soa.esb.services.security.publicKeystoreType";

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -520,7 +520,8 @@
 
     			final SecurityService securityService = SecurityServiceFactory.getSecurityService();
 
-		        if (securityContext == null || !securityContext.isValid())
+    			final String moduleName = securityConf.getModuleName() ;
+		        if (securityContext == null || !securityContext.isValid() || ((moduleName != null) && !moduleName.equals(securityContext.getDomain())))
 		        {
 		            if (authRequest == null)
 		            {
@@ -528,7 +529,7 @@
 		            }
 
 		             // No existing security context exist or it had expired. Create a new one to drive the autentication.
-    		        securityContext = new SecurityContext(new Subject(), getSecurityContextTimeout(securityConf));
+    		        securityContext = new SecurityContext(new Subject(), getSecurityContextTimeout(securityConf), moduleName);
 
             		// Authenticate the caller
         			securityService.authenticate(securityConf, securityContext, authRequest);

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/security/SecurityContext.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/security/SecurityContext.java	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/security/SecurityContext.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -85,10 +85,15 @@
     private final long timeout ;
 
     /**
+     * The name of the domain.
+     */
+    private String domain ;
+
+    /**
      * Time of creation.
      */
     private long timeOfCreation = System.currentTimeMillis();
-
+    
 	/**
 	 * Creates a SecurityContext with a default Subject.
 	 */
@@ -106,6 +111,7 @@
 	{
 		this(subject, globalConfiguredTimeout) ;
 	}
+	
 	/**
 	 * Creates a SecurityContext associating the passed in Subject with it.
 	 *
@@ -114,6 +120,18 @@
 	 */
 	public SecurityContext(final Subject subject, final long timeout)
 	{
+		this(subject, timeout, null) ;
+	}
+	
+	/**
+	 * Creates a SecurityContext associating the passed in Subject with it.
+	 *
+	 * @param subject The Subject that is to be associated with this security context.
+	 * @param timeout A timeout which specifies how long this Security Context is valid for. Must be a positiv value.
+	 * @param domain The domain used to validate the security context.
+	 */
+	public SecurityContext(final Subject subject, final long timeout, final String domain)
+	{
 	    AssertArgument.isNotNull(subject, "subject");
 		this.subject = subject;
 
@@ -122,6 +140,7 @@
 	        throw new IllegalArgumentException("'timeout' for SecurityContext must not be negative other then '-1' which indicates a SecurityContext that never expires.");
 	    }
         this.timeout = timeout;
+        this.domain = domain;
 	}
 
 	public boolean isCallerInRole( final String roleName )
@@ -206,6 +225,16 @@
         return timeout;
     }
 
+    /**
+     * Security domain for the context.
+     *
+     * @return The security domain for the context.
+     */
+    public String getDomain()
+    {
+        return domain;
+    }
+
     public boolean isValid()
     {
         if ( timeout == -1 )
@@ -226,7 +255,7 @@
     @Override
     public String toString()
     {
-    	return "SecurityContext [isValid " + isValid() + ", timeout :" + timeout + ", timeOfCreation : " + timeOfCreation + "]";
+    	return "SecurityContext [isValid " + isValid() + ", timeout :" + timeout + ", domain " + domain + ", timeOfCreation : " + timeOfCreation + "]";
     }
 
     //  package protected methods

Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -24,7 +24,12 @@
 
 import javax.security.auth.Subject;
 
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.AS4SecurityContextOperations;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.AS5SecurityContextOperations;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.JBossASSecurityContextOperations;
 import org.jboss.security.SecurityAssociation;
+import org.jboss.security.SecurityContextAssociation;
+import org.jboss.security.SubjectInfo;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.services.security.SecurityConfig;
 import org.jboss.soa.esb.services.security.SecurityConfigTestUtil;
@@ -45,6 +50,8 @@
 public class JBossASContextPropagatorUnitTest
 {
     private JBossASContextPropagator propagator = new JBossASContextPropagator();
+    private JBossASSecurityContextOperations as4Operations = new AS4SecurityContextOperations() ;
+    private JBossASSecurityContextOperations as5Operations = new AS5SecurityContextOperations() ;
 
     @Test
     public void pushAndPop()
@@ -52,12 +59,12 @@
         final SecurityConfig securityConfig = getSecurityConfig();
         final SecurityContext context = getSecurityContext();
 
-        propagator.pushSecurityContext(context, null, securityConfig);
+        propagator.pushSecurityContext(context, null, securityConfig, as4Operations);
 
         Subject pushedSubject = SecurityAssociation.getSubject();
         assertEquals(context.getSubject(), pushedSubject);
 
-        propagator.popSecurityContext(context, securityConfig);
+        propagator.popSecurityContext(context, securityConfig, as4Operations);
         pushedSubject = SecurityAssociation.getSubject();
         assertNull(pushedSubject);
     }
@@ -68,12 +75,12 @@
         final SecurityConfig securityConfig = getSecurityConfig();
         final SecurityContext context = getSecurityContext();
 
-        propagator.pushSecurityContext(context, null, null);
+        propagator.pushSecurityContext(context, null, null, as4Operations);
 
         Subject pushedSubject = SecurityAssociation.getSubject();
         assertEquals(context.getSubject(), pushedSubject);
 
-        propagator.popSecurityContext(context, securityConfig);
+        propagator.popSecurityContext(context, securityConfig, as4Operations);
         pushedSubject = SecurityAssociation.getSubject();
         assertNull(pushedSubject);
     }
@@ -81,9 +88,57 @@
     @Test
     public void popWithNullSecurityConfig()
     {
-        propagator.popSecurityContext(null, null);
+        propagator.popSecurityContext(null, null, as4Operations);
     }
 
+    @Test
+    public void pushAndPopAS5()
+    {
+        final SecurityConfig securityConfig = getSecurityConfig();
+        final SecurityContext context = getSecurityContext();
+
+        propagator.pushSecurityContext(context, null, securityConfig, as5Operations);
+
+        final org.jboss.security.SecurityContext securityContext = SecurityContextAssociation.getSecurityContext() ;
+        assertNotNull("securityContext", securityContext) ;
+        
+        final SubjectInfo subjectInfo = securityContext.getSubjectInfo() ;
+        assertNotNull("subjectInfo", subjectInfo) ;
+        
+        final Subject pushedSubject = subjectInfo.getAuthenticatedSubject() ;
+        assertEquals("Subject comparison", context.getSubject(), pushedSubject);
+
+        propagator.popSecurityContext(context, securityConfig, as5Operations);
+        assertNull("securityContext", SecurityContextAssociation.getSecurityContext());
+    }
+
+    @Test
+    public void pushAndPopWithNullSecurityConfigAS5()
+    {
+        final SecurityConfig securityConfig = getSecurityConfig();
+        final SecurityContext context = getSecurityContext();
+
+        propagator.pushSecurityContext(context, null, null, as5Operations);
+
+        final org.jboss.security.SecurityContext securityContext = SecurityContextAssociation.getSecurityContext() ;
+        assertNotNull("securityContext", securityContext) ;
+        
+        final SubjectInfo subjectInfo = securityContext.getSubjectInfo() ;
+        assertNotNull("subjectInfo", subjectInfo) ;
+        
+        final Subject pushedSubject = subjectInfo.getAuthenticatedSubject() ;
+        assertEquals("Subject comparison", context.getSubject(), pushedSubject);
+
+        propagator.popSecurityContext(context, securityConfig, as5Operations);
+        assertNull("securityContext", SecurityContextAssociation.getSecurityContext());
+    }
+
+    @Test
+    public void popWithNullSecurityConfigAS5()
+    {
+        propagator.popSecurityContext(null, null, as5Operations);
+    }
+
     public static junit.framework.Test suite()
     {
         return new JUnit4TestAdapter(JBossASContextPropagatorUnitTest.class);

Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipelineUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipelineUnitTest.java	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipelineUnitTest.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -52,6 +52,9 @@
 
 public class ActionProcessingPipelineUnitTest extends TestCase
 {
+    private static final String DOMAIN = "SuccessfulLogin" ;
+    private static final String DIFF_DOMAIN = "UnsuccessfulLogin" ;
+    
 	private String jbossEsbProperties;
 
     public void testProperty() {
@@ -450,7 +453,7 @@
     public void testSecuredWithoutExistingSecurityContextOrAuthenticationRequest() throws ConfigurationException
     {
         final ConfigTree configTree = new ConfigTree("parent") ;
-        addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+        addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
         configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
         addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
 
@@ -469,7 +472,7 @@
     {
         final ConfigTree configTree = new ConfigTree("parent") ;
         // Add the security configuration.
-        addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+        addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
         configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
 
         addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
@@ -503,7 +506,7 @@
     public void testSecuredWithPreExistingSecurityContext() throws Exception
     {
         final ConfigTree configTree = new ConfigTree("parent") ;
-        addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+        addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
         configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
 
         addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
@@ -519,7 +522,7 @@
         subject.getPublicCredentials().add(publicCred);
 
         //  Create and encrypt the security context. This simulates a call for a service that has already been authentcated.
-        final SecurityContext securityContext = new SecurityContext(subject, SecurityContext.getConfigurationTimeout());
+        final SecurityContext securityContext = new SecurityContext(subject, SecurityContext.getConfigurationTimeout(), DOMAIN);
         final SealedObject sealedObject = SecurityContext.encryptContext(securityContext);
         final Message message = MessageFactory.getInstance().getMessage();
         message.getContext().setContext(SecurityService.CONTEXT, sealedObject);
@@ -537,7 +540,7 @@
     public void testSecuredWithExistingSecurityContextWhichHasExpired() throws Exception
     {
         final ConfigTree configTree = new ConfigTree("parent") ;
-        addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+        addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
         configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
 
         addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
@@ -557,7 +560,7 @@
 
         //  Create and encrypt the security context. This simulates a call for a service
         //  that has already been authentcated...but with a very short timeout.
-        final SecurityContext securityContext = new SecurityContext(subject, 10);
+        final SecurityContext securityContext = new SecurityContext(subject, 10, DOMAIN);
 
         TimeUnit.SECONDS.sleep(1);
 
@@ -579,7 +582,7 @@
         //  setup config tree
         final ConfigTree configTree = new ConfigTree("parent") ;
         configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
-        final ConfigTree securityConfigTree = addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null, timeout);
+        final ConfigTree securityConfigTree = addSecurityConfig(configTree, "adminRole", null, DOMAIN, null, timeout);
         addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
 
         final ActionProcessingPipeline pipeline = new ActionProcessingPipeline(configTree) ;
@@ -597,7 +600,7 @@
     {
         final ConfigTree configTree = new ConfigTree("parent") ;
         configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
-        final ConfigTree securityConfigTree = addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+        final ConfigTree securityConfigTree = addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
         addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
 
         final ActionProcessingPipeline pipeline = new ActionProcessingPipeline(configTree) ;
@@ -614,7 +617,7 @@
     {
         final ConfigTree configTree = new ConfigTree("parent") ;
         configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
-        addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", "noRole");
+        addSecurityConfig(configTree, "adminRole", null, DOMAIN, "noRole");
 
         addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
 
@@ -628,7 +631,7 @@
         final byte[] publicCred = "publicsecret".getBytes();
         subject.getPublicCredentials().add(publicCred);
 
-        final SecurityContext securityContext = new SecurityContext(subject, SecurityContext.getConfigurationTimeout());
+        final SecurityContext securityContext = new SecurityContext(subject, SecurityContext.getConfigurationTimeout(), DOMAIN);
         final SealedObject sealedObject = SecurityContext.encryptContext(securityContext);
         final Message message = MessageFactory.getInstance().getMessage();
         message.getContext().setContext(SecurityService.CONTEXT, sealedObject);
@@ -640,6 +643,42 @@
         checkOrder(MockActionInfo.getDestroyList()) ;
     }
 
+    public void testSecuredWithDifferentDomain() throws Exception
+    {
+        final ConfigTree configTree = new ConfigTree("parent") ;
+        addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
+        configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
+
+        addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
+
+        final ActionProcessingPipeline pipeline = new ActionProcessingPipeline(configTree) ;
+        pipeline.initialise() ;
+        checkOrder(MockActionInfo.getInitialiseList()) ;
+
+
+        Subject subject = new Subject();
+        //  add principal
+        User user = new User("AustinPowerwich");
+        subject.getPrincipals().add(user);
+        //  add public credentials
+        byte[] publicCred = "publicsecret".getBytes();
+        subject.getPublicCredentials().add(publicCred);
+
+        //  Create and encrypt the security context. This simulates a call for a service
+        //  that has already been authenticated...but with a very long timeout.
+        final SecurityContext securityContext = new SecurityContext(subject, 1000 * 60 * 60 * 24 * 7, DIFF_DOMAIN);
+
+        final SealedObject sealedObject = SecurityContext.encryptContext(securityContext);
+        final Message message = MessageFactory.getInstance().getMessage();
+        message.getContext().setContext(SecurityService.CONTEXT, sealedObject);
+
+        final boolean processingResult = pipeline.process(message);
+        assertFalse("Processing should have failed as the SecurityContext was for a different domain", processingResult);
+
+        pipeline.destroy() ;
+        checkOrder(MockActionInfo.getDestroyList()) ;
+    }
+
     public static void addAction(final ConfigTree configTree, final String actionName) {
         addAction(configTree, actionName, null, null, null);
     }

Modified: labs/jbossesb/trunk/product/samples/quickstarts/load_generator/build.xml
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/load_generator/build.xml	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/samples/quickstarts/load_generator/build.xml	2010-07-07 13:35:13 UTC (rev 33755)
@@ -12,38 +12,8 @@
 		<delete dir="load_generator_classes"/>
 	</target>
 
-	<target name="init-groovy-as4" depends="dependencies" if="jbossas4">
-		<path id="groovy.classpath">
-			<pathelement path="build/classes"/>
-			<fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/deploy">
-				<include name="jboss-aop-jdk50**/*.jar"/>
-			</fileset>
-			<fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/lib" includes="*.jar"/>
-			<fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/deploy/jbossesb.sar/lib" includes="*.jar" />
-			<fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/deploy/jbossesb.sar/lib" includes="commons-*.jar" />
-			<fileset dir="${org.jboss.esb.server.home}/client" includes="jbossall-client.jar" />
-			<fileset dir="${org.jboss.esb.server.home}/lib/endorsed" includes="xercesImpl.jar" />
-		</path>
-
-		<taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="groovy.classpath" />
-	</target>
-
-	<target name="init-groovy-as5" depends="dependencies" if="jbossas5">
-        <path id="groovy.classpath">
-            <pathelement path="build/classes"/>
-            <fileset dir="${org.jboss.esb.server.home}/lib">
-                <include name="*.jar"/>
-            </fileset>
-            <fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/deployers/esb.deployer/lib" includes="*.jar" />
-            <fileset dir="${org.jboss.esb.server.home}/client" includes="jbossall-client.jar" />
-            <fileset dir="${org.jboss.esb.server.home}/lib/endorsed" includes="xercesImpl.jar" />
-        </path>
-
-        <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="groovy.classpath" />
-    </target>
-
-
-	<target name="compile-churn" depends="compile, init-groovy-as4, init-groovy-as5" description="compile groovy to bytecode">
+	<target name="compile-churn" depends="compile" description="compile groovy to bytecode">
+		<taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="exec-classpath" />
 		<mkdir dir="load_generator_classes" />
 		<copy todir="load_generator_classes" overwrite="true">
 			<fileset dir="${basedir}/scripts/">
@@ -54,12 +24,12 @@
 				<include name="log4j.xml" /> 
 			</fileset>
 		</copy>
-		<groovyc destdir="load_generator_classes" srcdir="${basedir}/scripts" includes="*.groovy" classpathref="groovy.classpath" />
+		<groovyc destdir="load_generator_classes" srcdir="${basedir}/scripts" includes="*.groovy" classpathref="exec-classpath" />
 	</target>
 
 	<target name="load-agent" depends="compile-churn" description="Test the load agent script/settings">
 		<java classname="JmsLoadAgent" >
-			<classpath refid="groovy.classpath" />
+			<classpath refid="exec-classpath" />
 			<classpath location="load_generator_classes" />
 			<arg value="load_generator_classes/load.xml" />
 		</java>
@@ -69,7 +39,7 @@
 		<java classname="LoadReport" fork="true">
 			<classpath location="${org.jboss.esb.server.home}/client"/>
 			<classpath location="build/classes"/>
-			<classpath refid="groovy.classpath"/>
+			<classpath refid="exec-classpath"/>
 			<classpath location="load_generator_classes"/>
 			<arg value="load_generator_classes/load.xml"/>
 		</java>
@@ -79,7 +49,7 @@
                 <java classname="LoadReport" fork="true">
                         <classpath location="${org.jboss.esb.server.home}/client"/>
                         <classpath location="build/classes"/>
-                        <classpath refid="groovy.classpath"/>
+                        <classpath refid="exec-classpath"/>
                         <classpath location="load_generator_classes"/>
                         <arg line="load_generator_classes/load.xml admin admin"/>
                 </java>

Modified: labs/jbossesb/trunk/product/samples/quickstarts/security_saml/picketlink-sts.war
===================================================================
(Binary files differ)

Modified: labs/jbossesb/trunk/product/samples/quickstarts/two_servers/readme.txt
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/two_servers/readme.txt	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/samples/quickstarts/two_servers/readme.txt	2010-07-07 13:35:13 UTC (rev 33755)
@@ -25,6 +25,15 @@
   Please refer to 'ant help-quickstarts' for prerequisites about the quickstarts
   and a more detailed descripton of the different ways to run the quickstarts.
 
+Important
+=========
+  This quickstart is intended to be run with embedded databases.  If you have altered
+  the default configuration to use a remote database then this setup will be duplicated,
+  and therefore shared, by both of the generated configurations.  It may be necessary to
+  make additional changes to the configuration of those components which are sharing
+  a database, for example if JBoss Messaging is the current JMS provider then a unique
+  ServerPeerID must be configured within the messaging-service.xml configuration file.
+
 To Run:
 ===========================
   1. In a command terminal window in this folder ("Window1"), 

Modified: labs/jbossesb/trunk/product/samples/quickstarts/webservice_proxy_security/war/resources/WEB-INF/web.xml
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/webservice_proxy_security/war/resources/WEB-INF/web.xml	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/samples/quickstarts/webservice_proxy_security/war/resources/WEB-INF/web.xml	2010-07-07 13:35:13 UTC (rev 33755)
@@ -17,8 +17,6 @@
 		<web-resource-collection>
 			<web-resource-name>webservice_proxy_security</web-resource-name>
 			<url-pattern>/*</url-pattern>
-			<http-method>GET</http-method>
-			<http-method>POST</http-method>
 		</web-resource-collection>
 		<auth-constraint>
 			<role-name>friend</role-name>

Modified: labs/jbossesb/trunk/product/services/base-project-build.xml
===================================================================
--- labs/jbossesb/trunk/product/services/base-project-build.xml	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/services/base-project-build.xml	2010-07-07 13:35:13 UTC (rev 33755)
@@ -37,7 +37,7 @@
 		<pathelement location="build/${ant.project.name}.esb" />
 		<pathelement location="build/classes" />
 		<pathelement location="build/test/classes" />
-        <fileset dir="${esb.main.lib}" includes="jboss-system-4.2.2.GA.jar" />
+        <fileset dir="${esb.main.lib}" includes="jboss-system-*.jar" />
 		<fileset dir="lib/ext" includes="*.jar" />
 		<fileset dir="lib/ext/build-time" includes="*.jar" />
         <fileset dir="${esb.product.lib.ext}/endorsed" includes="jboss-saaj.jar" />

Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/AbstractJmsServiceFactory.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/AbstractJmsServiceFactory.java	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/AbstractJmsServiceFactory.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -23,7 +23,6 @@
 import javax.naming.NamingException;
 
 import org.jboss.jms.jndi.JMSProviderAdapter;
-import org.jboss.jms.jndi.JNDIProviderAdapter;
 import org.jbpm.JbpmException;
 import org.jbpm.svc.ServiceFactory;
 
@@ -55,9 +54,9 @@
     private ConnectionFactory connectionFactory;
 
     /**
-     * The JMS provider adapter.
+     * The provider.
      */
-    private JMSProviderAdapter jmsProviderAdapter ;
+    private Provider provider ;
 
     /**
      * Get the commitEnabled flag.
@@ -76,8 +75,8 @@
      */
     protected Object lookup(String name) throws NamingException
     {
-      final JMSProviderAdapter adapter = getJMSProviderAdapter() ;
-      final Context initial = adapter.getInitialContext() ;
+      final Provider provider = getProvider() ;
+      final Context initial = provider.getInitialContext() ;
       try
       {
         return initial.lookup(name);
@@ -89,14 +88,14 @@
     }
 
     /**
-     * Get the JMS provider adapter.
-     * @return The JMS provider adapter.
+     * Get the provider.
+     * @return The provider.
      * @throws NamingException For errors locating the adapter within JNDI.
      */
-    protected JMSProviderAdapter getJMSProviderAdapter()
+    protected Provider getProvider()
       throws NamingException
     {
-      if (jmsProviderAdapter == null)
+      if (provider == null)
       {
         if (providerAdapterJNDI != null)
         {
@@ -120,21 +119,24 @@
           {
             initial.close();
           }
-          if ((adapter != null) && (adapter instanceof JMSProviderAdapter))
+          if (adapter != null)
           {
-            jmsProviderAdapter = (JMSProviderAdapter)adapter ;
+            if (adapter instanceof JMSProviderAdapter)
+            {
+              provider = new JMSProvider((JMSProviderAdapter)adapter) ;
+            }
+            else if (adapter instanceof Provider)
+            {
+              provider = (Provider)adapter ;
+            }
           }
-          else
-          {
-            jmsProviderAdapter = new JNDIProviderAdapter() ;
-          }
         }
-        else
-        {
-          jmsProviderAdapter = new JNDIProviderAdapter() ;
-        }
       }
-      return jmsProviderAdapter ;
+      if (provider == null)
+      {
+        provider = new DefaultProvider() ;
+      }
+      return provider ;
     }
     
     /**
@@ -147,16 +149,16 @@
       {
         try
         {
-          final JMSProviderAdapter adapter = getJMSProviderAdapter() ;
+          final Provider provider = getProvider() ;
           final String jndiName ;
-          final String adapterQueueFactory = adapter.getQueueFactoryRef() ;
+          final String adapterQueueFactory = provider.getQueueFactoryRef() ;
           if (adapterQueueFactory != null)
           {
               jndiName = adapterQueueFactory ;
           }
           else
           {
-              final String adapterFactory = adapter.getFactoryRef() ;
+              final String adapterFactory = provider.getFactoryRef() ;
               if (adapterFactory != null)
               {
                   jndiName = adapterFactory ;
@@ -181,7 +183,7 @@
      */
     public void close()
     {
-      jmsProviderAdapter = null;
+      provider = null;
       connectionFactory = null;
     }
 }

Copied: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java (from rev 33752, labs/jbossesb/tags/JBESB_4_7_CP2_ER4/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java)
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -0,0 +1,58 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ */
+package org.jboss.soa.esb.services.jbpm.integration;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+
+/**
+ * The default provider
+ */
+class DefaultProvider implements Provider
+{
+    /**
+     * Get the queue factory reference.
+     * @return The queue factory reference or null if not specified.
+     */
+    public String getQueueFactoryRef()
+    {
+        return null ;
+    }
+
+    /**
+     * Get the default factory reference.
+     * @return The default factory reference or null if not specified.
+     */
+    public String getFactoryRef()
+    {
+        return null ;
+    }
+
+    /**
+     * Get the initial context.
+     * @return The JNDI initial context.
+     * @throws NamingException For exceptions creating the context.
+     */
+    public Context getInitialContext()
+        throws NamingException
+    {
+        return new InitialContext() ;
+    }
+}

Copied: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java (from rev 33752, labs/jbossesb/tags/JBESB_4_7_CP2_ER4/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java)
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ */
+package org.jboss.soa.esb.services.jbpm.integration;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+
+import org.jboss.jms.jndi.JMSProviderAdapter;
+
+
+/**
+ * The JMS provider
+ */
+class JMSProvider implements Provider
+{
+    /**
+     * The JMS provider adapter.
+     */
+    private final JMSProviderAdapter providerAdapter ;
+    
+    /**
+     * Construct the JMS provider.
+     * @param providerAdapter The JMS provider adapter.
+     */
+    JMSProvider(final JMSProviderAdapter providerAdapter)
+    {
+        this.providerAdapter = providerAdapter ;
+    }
+    
+    /**
+     * Get the queue factory reference.
+     * @return The queue factory reference or null if not specified.
+     */
+    public String getQueueFactoryRef()
+    {
+        return providerAdapter.getQueueFactoryRef() ;
+    }
+
+    /**
+     * Get the default factory reference.
+     * @return The default factory reference or null if not specified.
+     */
+    public String getFactoryRef()
+    {
+        return providerAdapter.getFactoryRef() ;
+    }
+
+    /**
+     * Get the initial context.
+     * @return The JNDI initial context.
+     * @throws NamingException For exceptions creating the context.
+     */
+    public Context getInitialContext()
+        throws NamingException
+    {
+        return providerAdapter.getInitialContext() ;
+    }
+}

Copied: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java (from rev 33752, labs/jbossesb/tags/JBESB_4_7_CP2_ER4/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java)
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -0,0 +1,48 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ */
+package org.jboss.soa.esb.services.jbpm.integration;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+
+
+/**
+ * Provider interface
+ */
+public interface Provider
+{
+    /**
+     * Get the queue factory reference.
+     * @return The queue factory reference or null if not specified.
+     */
+    public String getQueueFactoryRef();
+
+    /**
+     * Get the default factory reference.
+     * @return The default factory reference or null if not specified.
+     */
+    public String getFactoryRef();
+
+    /**
+     * Get the initial context.
+     * @return The JNDI initial context.
+     * @throws NamingException For exceptions creating the context.
+     */
+    public Context getInitialContext()
+        throws NamingException;
+}

Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java	2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java	2010-07-07 13:35:13 UTC (rev 33755)
@@ -108,7 +108,6 @@
                 {
                     final Set<Long> monitoredJobs = new HashSet<Long>() ;
                     final long now = System.currentTimeMillis() ;
-                    int count = 0 ;
                     do
                     {
                         final Job job = jobSession.getFirstDueJob(RETRY_EXECUTOR, monitoredJobs) ;
@@ -119,7 +118,6 @@
                         monitoredJobs.add(Long.valueOf(job.getId())) ;
                         if (RETRY_EXECUTOR.equals(job.getLockOwner()))
                         {
-                            count++ ;
                             job.setLockOwner(null) ;
                             if (job instanceof Timer)
                             {
@@ -138,7 +136,7 @@
                             }
                         }
                     }
-                    while(count < maxRetryJobs) ;
+                    while(monitoredJobs.size() < maxRetryJobs) ;
                 }
             }
             catch (final Throwable th)



More information about the jboss-svn-commits mailing list