You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gr...@apache.org on 2010/10/13 17:06:27 UTC

svn commit: r1022127 [4/15] - in /qpid/branches/grkvlt-network-20101013/qpid/java: ./ broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ broker-plugins/access-control/src/test/java/org/apache/qpid/server/securit...

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java Wed Oct 13 15:05:29 2010
@@ -20,7 +20,6 @@
  */
 package org.apache.qpid.server.registry;
 
-import java.net.InetSocketAddress;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
@@ -41,7 +40,6 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.logging.CompositeStartupMessageLogger;
 import org.apache.qpid.server.logging.Log4jMessageLogger;
 import org.apache.qpid.server.logging.RootMessageLogger;
-import org.apache.qpid.server.logging.AbstractRootMessageLogger;
 import org.apache.qpid.server.logging.SystemOutMessageLogger;
 import org.apache.qpid.server.logging.actors.BrokerActor;
 import org.apache.qpid.server.logging.actors.CurrentActor;
@@ -54,28 +52,26 @@ import org.apache.qpid.server.security.a
 import org.apache.qpid.server.security.auth.database.PrincipalDatabaseManager;
 import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
 import org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthenticationManager;
-import org.apache.qpid.server.transport.QpidAcceptor;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
+import org.apache.qpid.transport.network.NetworkTransport;
 
 /**
  * An abstract application registry that provides access to configuration information and handles the
  * construction and caching of configurable objects.
- * <p/>
+ *
  * Subclasses should handle the construction of the "registered objects" such as the exchange registry.
  */
 public abstract class ApplicationRegistry implements IApplicationRegistry
 {
     protected static final Logger _logger = Logger.getLogger(ApplicationRegistry.class);
 
-    private static Map<Integer, IApplicationRegistry> _instanceMap = new HashMap<Integer, IApplicationRegistry>();
-
+    protected static IApplicationRegistry _instance = null;
+    
     protected final ServerConfiguration _configuration;
 
-    public static final int DEFAULT_INSTANCE = 1;
-
-    protected final Map<InetSocketAddress, QpidAcceptor> _acceptors = new HashMap<InetSocketAddress, QpidAcceptor>();
+    protected final Map<Integer, NetworkTransport> _transports = new HashMap<Integer, NetworkTransport>();
 
     protected ManagedObjectRegistry _managedObjectRegistry;
 
@@ -108,46 +104,45 @@ public abstract class ApplicationRegistr
     static
     {
         Runtime.getRuntime().addShutdownHook(new Thread(new ShutdownService()));
+        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+            public void uncaughtException(Thread t, Throwable e)
+            {
+                _logger.error(String.format("Caught exception trying to escape %s: %s", t.getName(), e.getMessage()), e);
+            }
+        });
     }
 
     private static class ShutdownService implements Runnable
     {
         public void run()
         {
-            removeAll();
+            remove();
         }
     }
 
     public static void initialise(IApplicationRegistry instance) throws Exception
     {
-        initialise(instance, DEFAULT_INSTANCE);
-    }
-
-    @SuppressWarnings("finally")
-    public static void initialise(IApplicationRegistry instance, int instanceID) throws Exception
-    {
         if (instance != null)
         {
-            _logger.info("Initialising Application Registry(" + instance + "):" + instanceID);
-            _instanceMap.put(instanceID, instance);
+            _logger.info("Initialising Application Registry(" + instance + ")");
+            _instance = instance;
 
             final ConfigStore store = ConfigStore.newInstance();
             store.setRoot(new SystemConfigImpl(store));
-            instance.setConfigStore(store);
+            _instance.setConfigStore(store);
 
-            BrokerConfig broker = new BrokerConfigAdapter(instance);
+            BrokerConfig broker = new BrokerConfigAdapter(_instance);
 
             SystemConfig system = (SystemConfig) store.getRoot();
             system.addBroker(broker);
-            instance.setBroker(broker);
+            _instance.setBroker(broker);
 
             try
             {
-                instance.initialise(instanceID);
+                _instance.initialise();
             }
             catch (Exception e)
             {
-                _instanceMap.remove(instanceID);
                 try
                 {
                     system.removeBroker(broker);
@@ -157,10 +152,20 @@ public abstract class ApplicationRegistr
                     throw e;
                 }
             }
+
+            // We have already loaded the BrokerMessages class by this point so we
+            // need to refresh the locale setting incase we had a different value in
+            // the configuration.
+            BrokerMessages.reload();
+
+            // instance.initialise() sets its own actor so we now need to set the actor
+            // for the remainder of the startup
+            CurrentActor.set(new BrokerActor(instance.getRootMessageLogger()));
+            CurrentActor.setDefault(new BrokerActor(instance.getRootMessageLogger()));
         }
         else
         {
-            remove(instanceID);
+            remove();
         }
     }
 
@@ -176,57 +181,31 @@ public abstract class ApplicationRegistr
 
     public static boolean isConfigured()
     {
-        return isConfigured(DEFAULT_INSTANCE);
-    }
-
-    public static boolean isConfigured(int instanceID)
-    {
-        return _instanceMap.containsKey(instanceID);
+        return _instance != null;
     }
 
-    /** Method to cleanly shutdown the default registry running in this JVM */
+    /** Method to cleanly shutdown the registry running in this JVM */
     public static void remove()
     {
-        remove(DEFAULT_INSTANCE);
-    }
-
-    /**
-     * Method to cleanly shutdown specified registry running in this JVM
-     *
-     * @param instanceID the instance to shutdown
-     */
-    public static void remove(int instanceID)
-    {
         try
         {
-            IApplicationRegistry instance = _instanceMap.get(instanceID);
-            if (instance != null)
+            if (_instance != null)
             {
                 if (_logger.isInfoEnabled())
                 {
-                    _logger.info("Shutting down ApplicationRegistry(" + instanceID + "):" + instance);
+                    _logger.info("Shutting down ApplicationRegistry(" + _instance + ")");
                 }
-                instance.close();
-                instance.getBroker().getSystem().removeBroker(instance.getBroker());
+                
+                _instance.close();
+                _instance.getBroker().getSystem().removeBroker(_instance.getBroker());
+                _instance.shutdown();
+                
+                _instance = null;
             }
         }
         catch (Exception e)
         {
-            _logger.error("Error shutting down Application Registry(" + instanceID + "): " + e, e);
-        }
-        finally
-        {
-            _instanceMap.remove(instanceID);
-        }
-    }
-
-    /** Method to cleanly shutdown all registries currently running in this JVM */
-    public static void removeAll()
-    {
-        Object[] keys = _instanceMap.keySet().toArray();
-        for (Object k : keys)
-        {
-            remove((Integer) k);
+            _logger.error("Error shutting down Application Registry(" + _instance + "): " + e.getMessage(), e);
         }
     }
 
@@ -251,11 +230,11 @@ public abstract class ApplicationRegistr
         _configuration.initialise();
     }
 
-    public void initialise(int instanceID) throws Exception
+    public void initialise() throws Exception
     {
         //Create the RootLogger to be used during broker operation
         _rootMessageLogger = new Log4jMessageLogger(_configuration);
-        _registryName = String.valueOf(instanceID);
+        _registryName = _brokerId.toString();
 
         //Create the composite (log4j+SystemOut MessageLogger to be used during startup
         RootMessageLogger[] messageLoggers = {new SystemOutMessageLogger(), _rootMessageLogger};
@@ -323,23 +302,13 @@ public abstract class ApplicationRegistr
 
     public static IApplicationRegistry getInstance()
     {
-        return getInstance(DEFAULT_INSTANCE);
-    }
-
-    public static IApplicationRegistry getInstance(int instanceID)
-    {
         synchronized (IApplicationRegistry.class)
         {
-            IApplicationRegistry instance = _instanceMap.get(instanceID);
-
-            if (instance == null)
-            {
-                throw new IllegalStateException("Application Registry (" + instanceID + ") not created");
-            }
-            else
+            if (!isConfigured())
             {
-                return instance;
+                throw new IllegalStateException("Application Registry not configured");
             }
+            return _instance;
         }
     }
 
@@ -362,6 +331,13 @@ public abstract class ApplicationRegistr
         }
     }
 
+    public void shutdown()
+    {
+        if (CurrentActor.get() != null)
+        {
+            CurrentActor.remove();
+        }
+    }
 
     public void close()
     {
@@ -376,39 +352,34 @@ public abstract class ApplicationRegistr
         //Shutdown virtualhosts
         close(_virtualHostRegistry);
 
-//      close(_accessManager);
-//
-//      close(_databaseManager);
-
-        close(_authenticationManager);
-
         close(_managedObjectRegistry);
 
         close(_qmfService);
 
         close(_pluginManager);
+        
+        //Shutdown Authentication manager
+        close(_authenticationManager);
 
         CurrentActor.get().message(BrokerMessages.STOPPED());
     }
 
     private void unbind()
     {
-        synchronized (_acceptors)
+        synchronized (_transports)
         {
-            for (InetSocketAddress bindAddress : _acceptors.keySet())
+            for (Integer port: _transports.keySet())
             {
-                QpidAcceptor acceptor = _acceptors.get(bindAddress);
-
+                NetworkTransport transport = _transports.get(port);
                 try
                 {
-                    acceptor.getNetworkDriver().close();
+                    transport.close();
                 }
                 catch (Throwable e)
                 {
                     _logger.error("Unable to close network driver due to:" + e.getMessage());
                 }
-
-               CurrentActor.get().message(BrokerMessages.SHUTTING_DOWN(acceptor.toString(), bindAddress.getPort()));
+                CurrentActor.get().message(BrokerMessages.SHUTTING_DOWN(transport.getAddress().toString(), port));
             }
         }
     }
@@ -418,11 +389,11 @@ public abstract class ApplicationRegistr
         return _configuration;
     }
 
-    public void addAcceptor(InetSocketAddress bindAddress, QpidAcceptor acceptor)
+    public void registerTransport(int port, NetworkTransport transport)
     {
-        synchronized (_acceptors)
+        synchronized (_transports)
         {
-            _acceptors.put(bindAddress, acceptor);
+            _transports.put(port, transport);
         }
     }
 

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java Wed Oct 13 15:05:29 2010
@@ -20,24 +20,23 @@
  */
 package org.apache.qpid.server.registry;
 
-import java.net.InetSocketAddress;
 import java.util.UUID;
 
 import org.apache.qpid.qmf.QMFService;
 import org.apache.qpid.server.configuration.BrokerConfig;
 import org.apache.qpid.server.configuration.ConfigStore;
+import org.apache.qpid.server.configuration.ConfigurationManager;
 import org.apache.qpid.server.configuration.ServerConfiguration;
 import org.apache.qpid.server.configuration.VirtualHostConfiguration;
-import org.apache.qpid.server.configuration.ConfigurationManager;
 import org.apache.qpid.server.logging.RootMessageLogger;
 import org.apache.qpid.server.management.ManagedObjectRegistry;
 import org.apache.qpid.server.plugins.PluginManager;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.security.auth.database.PrincipalDatabaseManager;
 import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
-import org.apache.qpid.server.transport.QpidAcceptor;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
+import org.apache.qpid.transport.network.NetworkTransport;
 
 public interface IApplicationRegistry
 {
@@ -47,13 +46,15 @@ public interface IApplicationRegistry
      * initialise in the constructor will lead to failures since the registry reference will not have been set.
      * @param instanceID the instanceID that we can use to identify this AR.
      */
-    void initialise(int instanceID) throws Exception;
+    void initialise() throws Exception;
 
     /**
-     * Shutdown this Registry
+     * Close this Registry
      */
     void close();
 
+    void shutdown();
+    
     /**
      * Get the low level configuration. For use cases where the configured object approach is not required
      * you can get the complete configuration information.
@@ -78,11 +79,9 @@ public interface IApplicationRegistry
     RootMessageLogger getRootMessageLogger();
 
     /**
-     * Register any acceptors for this registry
-     * @param bindAddress The address that the acceptor has been bound with
-     * @param acceptor The acceptor in use
+     * Register any network transports for this registry
      */
-    void addAcceptor(InetSocketAddress bindAddress, QpidAcceptor acceptor);
+    void registerTransport(int port, NetworkTransport transport);
 
     public UUID getBrokerId();
 

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java Wed Oct 13 15:05:29 2010
@@ -40,8 +40,6 @@ public abstract class AbstractPlugin imp
 	{
 		return Result.ABSTAIN;
 	}
-    
-    public abstract Result access(ObjectType object, Object instance);
 
     public abstract Result authorise(Operation operation, ObjectType object, ObjectProperties properties);
 

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractProxyPlugin.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractProxyPlugin.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractProxyPlugin.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractProxyPlugin.java Wed Oct 13 15:05:29 2010
@@ -82,23 +82,6 @@ public abstract class AbstractProxyPlugi
     {
         return getDefault();
     }
-    
-    public Result accessVirtualhost(Object instance)
-    {
-        return getDefault();
-    }
-
-    @Override
-    public Result access(ObjectType objectType, Object instance)
-    {
-        switch (objectType)
-        {
-			case VIRTUALHOST:
-				return accessVirtualhost(instance);
-        }
-		
-		return getDefault();   
-    }
 
     @Override
     public Result authorise(Operation operation, ObjectType objectType, ObjectProperties properties)

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java Wed Oct 13 15:05:29 2010
@@ -41,6 +41,7 @@ import org.apache.qpid.server.protocol.A
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.security.access.ObjectProperties;
 import org.apache.qpid.server.security.access.Operation;
+import org.apache.qpid.server.security.access.ObjectProperties.Property;
 import org.apache.qpid.server.security.auth.sasl.UsernamePrincipal;
 
 /**
@@ -276,8 +277,8 @@ public class SecurityManager
             Result allowed(SecurityPlugin plugin)
             {
                 ObjectProperties properties = new ObjectProperties();
-                properties.put(ObjectProperties.Property.PACKAGE, packageName);
-                properties.put(ObjectProperties.Property.CLASS, className);
+                properties.put(Property.PACKAGE, packageName);
+                properties.put(Property.CLASS, className);
                 return plugin.authorise(ACCESS, OBJECT, properties);
             }
         });
@@ -294,20 +295,22 @@ public class SecurityManager
                 if (componentName != null)
                 {
                     // Only set the property if there is a component name
-	                properties.put(ObjectProperties.Property.COMPONENT, componentName);
+	                properties.put(Property.COMPONENT, componentName);
                 }
                 return plugin.authorise(operation, METHOD, properties);
             }
         });
     }
 
-    public boolean accessVirtualhost(final String vhostname, final SocketAddress remoteAddress)
+    public boolean accessVirtualhost(final String vhostname, final String remoteAddress)
     {
         return checkAllPlugins(new AccessCheck()
         {
             Result allowed(SecurityPlugin plugin)
             {
-                return plugin.access(VIRTUALHOST, remoteAddress);
+                ObjectProperties properties = new ObjectProperties();
+                properties.put(Property.REMOTE_ADDRESS, remoteAddress);
+                return plugin.authorise(ACCESS, VIRTUALHOST, properties);
             }
         });
     }

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPlugin.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPlugin.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPlugin.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPlugin.java Wed Oct 13 15:05:29 2010
@@ -24,21 +24,16 @@ import org.apache.qpid.server.security.a
 import org.apache.qpid.server.security.access.Operation;
 
 /**
- * The two methods, {@link #access(ObjectType, Object)} and {@link #authorise(Operation, ObjectType, ObjectProperties)}, 
- * return the {@link Result} of the security decision, which may be to {@link Result#ABSTAIN} if no decision is made
- * by this plugin.
+ * The method {@link #authorise(Operation, ObjectType, ObjectProperties)}, returns
+ * the {@link Result} of the security decision, which may be to {@link Result#ABSTAIN}
+ * if no decision is made by this plugin.
  */
 public interface SecurityPlugin extends Plugin
 {	
 	/**
-	 * Default result for {@link #access(ObjectType, Object)} or {@link #authorise(Operation, ObjectType, ObjectProperties)}.
+	 * Default result for {@link #authorise(Operation, ObjectType, ObjectProperties)}.
 	 */
 	Result getDefault();
-	
-    /**
-     * Authorise access granted to an object instance.
-     */
-    Result access(ObjectType objectType, Object instance);
     
     /**
      * Authorise an operation on an object defined by a set of properties.

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java Wed Oct 13 15:05:29 2010
@@ -64,7 +64,8 @@ public class ObjectProperties extends Ha
         AUTO_DELETE,
         COMPONENT,
         PACKAGE,
-        CLASS;
+        CLASS,
+        REMOTE_ADDRESS;
         
         public static Property parse(String text)
         {

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/BasicPlugin.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/BasicPlugin.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/BasicPlugin.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/BasicPlugin.java Wed Oct 13 15:05:29 2010
@@ -33,11 +33,6 @@ import org.apache.qpid.server.security.a
  */
 public abstract class BasicPlugin extends AbstractPlugin
 {
-    public Result access(ObjectType objectType, Object instance)
-    {
-        return getDefault();
-    }
-    
     public Result authorise(Operation operation, ObjectType objectType, ObjectProperties properties)
     {
         return getDefault();

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java Wed Oct 13 15:05:29 2010
@@ -22,6 +22,7 @@ package org.apache.qpid.server.security.
 
 import org.apache.qpid.server.security.auth.sasl.AuthenticationProviderInitialiser;
 import org.apache.qpid.server.security.auth.sasl.UsernamePrincipal;
+import org.apache.qpid.server.security.auth.sasl.amqplain.AmqPlainInitialiser;
 import org.apache.qpid.server.security.auth.sasl.crammd5.CRAMMD5Initialiser;
 import org.apache.qpid.server.security.auth.sasl.plain.PlainInitialiser;
 
@@ -52,13 +53,19 @@ public class PropertiesPrincipalDatabase
          *  Create Authenticators for Properties Principal Database.
          */
 
+        // Accept AMQPlain incomming and compare it to the file.
+        AmqPlainInitialiser amqplain = new AmqPlainInitialiser();
+        amqplain.initialise(this);
+
         //  Accept MD5 incomming and use plain comparison with the file
         PlainInitialiser cram = new PlainInitialiser();
         cram.initialise(this);
+        
         // Accept Plain incomming and hash it for comparison to the file.
         CRAMMD5Initialiser plain = new CRAMMD5Initialiser();
         plain.initialise(this, CRAMMD5Initialiser.HashDirection.INCOMMING);
 
+        _saslServers.put(amqplain.getMechanismName(), amqplain);
         _saslServers.put(plain.getMechanismName(), cram);
         _saslServers.put(cram.getMechanismName(), plain);
     }

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HashedServerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HashedServerFactory.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HashedServerFactory.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HashedServerFactory.java Wed Oct 13 15:05:29 2010
@@ -30,7 +30,7 @@ import javax.security.sasl.SaslServerFac
 
 public class CRAMMD5HashedServerFactory implements SaslServerFactory
 {
-    public SaslServer createSaslServer(String mechanism, String protocol, String serverName, Map<String, ?> props,
+    public SaslServer createSaslServer(String mechanism, String protocol, String serverName, Map props,
                                        CallbackHandler cbh) throws SaslException
     {
         if (mechanism.equals(CRAMMD5HashedSaslServer.MECHANISM))

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HexServerFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HexServerFactory.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HexServerFactory.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HexServerFactory.java Wed Oct 13 15:05:29 2010
@@ -30,7 +30,7 @@ import javax.security.sasl.SaslServerFac
 
 public class CRAMMD5HexServerFactory implements SaslServerFactory
 {
-    public SaslServer createSaslServer(String mechanism, String protocol, String serverName, Map<String, ?> props,
+    public SaslServer createSaslServer(String mechanism, String protocol, String serverName, Map props,
                                        CallbackHandler cbh) throws SaslException
     {
         if (mechanism.equals(CRAMMD5HexSaslServer.MECHANISM))

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/Subscription_0_10.java Wed Oct 13 15:05:29 2010
@@ -96,7 +96,6 @@ public class Subscription_0_10 implement
 
     private FlowCreditManager_0_10 _creditManager;
 
-
     private StateListener _stateListener = new StateListener()
                                             {
 

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java Wed Oct 13 15:05:29 2010
@@ -23,6 +23,9 @@ package org.apache.qpid.server.transport
 import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.*;
 
 import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
 
 import org.apache.qpid.AMQException;
 import org.apache.qpid.protocol.AMQConstant;
@@ -33,22 +36,38 @@ import org.apache.qpid.server.logging.ac
 import org.apache.qpid.server.logging.messages.ConnectionMessages;
 import org.apache.qpid.server.protocol.AMQConnectionModel;
 import org.apache.qpid.server.protocol.AMQSessionModel;
+import org.apache.qpid.server.protocol.BrokerReceiver;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 import org.apache.qpid.transport.Connection;
+import org.apache.qpid.transport.ConnectionCloseCode;
 import org.apache.qpid.transport.ExecutionErrorCode;
 import org.apache.qpid.transport.ExecutionException;
 import org.apache.qpid.transport.Method;
+import org.apache.qpid.transport.Session;
 
 public class ServerConnection extends Connection implements AMQConnectionModel, LogSubject
 {
     private ConnectionConfig _config;
     private Runnable _onOpenTask;
 
-    public ServerConnection()
+    private long _connectionId;
+
+    public long getConnectionId()
+    {
+        return _connectionId;
+    }
+
+    public ServerConnection(long connectionId)
     {
+        _connectionId = connectionId;
         CurrentActor.set(GenericActor.getInstance(this));
     }
 
+    public UUID getId()
+    {
+        return _config.getId();
+    }
+
     @Override
     protected void invoke(Method method)
     {
@@ -97,6 +116,7 @@ public class ServerConnection extends Co
     public void setVirtualHost(VirtualHost virtualHost)
     {
         _virtualHost = virtualHost;
+        _virtualHost.getConnectionRegistry().registerConnection(this);
     }
 
     public void setConnectionConfig(final ConnectionConfig config)
@@ -132,8 +152,14 @@ public class ServerConnection extends Co
 
         ((ServerSession)session).close();
     }
+    
+    public LogSubject getLogSubject()
+    {
+        return (LogSubject) this;
+    }
 
-    public String toLogString() {
+    public String toLogString()
+    {
         boolean hasVirtualHost = (null != this.getVirtualHost());
         boolean hasPrincipal = (null != getAuthorizationID());
 
@@ -167,4 +193,30 @@ public class ServerConnection extends Co
         }
     }
 
+    @Override
+    public void close(AMQConstant cause, String message) throws AMQException
+    {
+        ConnectionCloseCode replyCode = ConnectionCloseCode.NORMAL;
+        try
+        {
+	        replyCode = ConnectionCloseCode.get(cause.getCode());
+        }
+        catch (IllegalArgumentException iae)
+        {
+            // Ignore
+        }
+        close(replyCode, message);
+        getVirtualHost().getConnectionRegistry().deregisterConnection(this);
+    }
+
+    @Override
+    public List<AMQSessionModel> getSessionModels()
+    {
+        List<AMQSessionModel> sessions = new ArrayList<AMQSessionModel>();
+        for (Session ssn : getChannels())
+        {
+            sessions.add((AMQSessionModel) ssn);
+        }
+        return sessions;
+    }
 }

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java Wed Oct 13 15:05:29 2010
@@ -20,18 +20,30 @@
  */
 package org.apache.qpid.server.transport;
 
-import org.apache.qpid.transport.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import javax.security.sasl.SaslException;
+import javax.security.sasl.SaslServer;
+
 import org.apache.qpid.server.logging.actors.CurrentActor;
 import org.apache.qpid.server.logging.actors.GenericActor;
-import org.apache.qpid.common.ClientProperties;
-import org.apache.qpid.protocol.ProtocolEngine;
-import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.registry.IApplicationRegistry;
+import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.virtualhost.VirtualHost;
-
-import javax.security.sasl.SaslServer;
-import javax.security.sasl.SaslException;
-import java.util.*;
+import org.apache.qpid.transport.Binary;
+import org.apache.qpid.transport.Connection;
+import org.apache.qpid.transport.ConnectionClose;
+import org.apache.qpid.transport.ConnectionCloseCode;
+import org.apache.qpid.transport.ConnectionOpen;
+import org.apache.qpid.transport.ConnectionOpenOk;
+import org.apache.qpid.transport.ServerDelegate;
+import org.apache.qpid.transport.SessionAttach;
+import org.apache.qpid.transport.SessionDelegate;
 
 public class ServerConnectionDelegate extends ServerDelegate
 {
@@ -106,7 +118,7 @@ public class ServerConnectionDelegate ex
         {
             sconn.setVirtualHost(vhost);
 
-            if (!vhost.getSecurityManager().accessVirtualhost(vhostName, ((ProtocolEngine) sconn.getConfig()).getRemoteAddress()))
+            if (!vhost.getSecurityManager().accessVirtualhost(vhostName, sconn.getConfig().getAddress()))
             {
                 sconn.invoke(new ConnectionClose(ConnectionCloseCode.CONNECTION_FORCED, "Permission denied '"+vhostName+"'"));
                 sconn.setState(Connection.State.CLOSING);
@@ -123,6 +135,7 @@ public class ServerConnectionDelegate ex
             sconn.invoke(new ConnectionClose(ConnectionCloseCode.INVALID_PATH, "Unknown virtualhost '"+vhostName+"'"));
             sconn.setState(Connection.State.CLOSING);
         }
+        
     }
     
     @Override

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java Wed Oct 13 15:05:29 2010
@@ -20,13 +20,26 @@
  */
 package org.apache.qpid.server.transport;
 
-import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CHANNEL_FORMAT;
-import static org.apache.qpid.util.Serial.gt;
+import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.*;
+import static org.apache.qpid.util.Serial.*;
 
-import com.sun.security.auth.UserPrincipal;
+import java.lang.ref.WeakReference;
+import java.security.Principal;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentSkipListMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.qpid.AMQException;
-import org.apache.qpid.protocol.ProtocolEngine;
+import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.server.configuration.ConfigStore;
 import org.apache.qpid.server.configuration.ConfiguredObject;
 import org.apache.qpid.server.configuration.ConnectionConfig;
@@ -37,6 +50,9 @@ import org.apache.qpid.server.logging.ac
 import org.apache.qpid.server.logging.actors.GenericActor;
 import org.apache.qpid.server.logging.messages.ChannelMessages;
 import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.protocol.AMQConnectionModel;
+import org.apache.qpid.server.protocol.AMQSessionModel;
+import org.apache.qpid.server.protocol.ProtocolEngine_0_10;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.BaseQueue;
 import org.apache.qpid.server.queue.QueueEntry;
@@ -47,8 +63,6 @@ import org.apache.qpid.server.txn.AutoCo
 import org.apache.qpid.server.txn.LocalTransaction;
 import org.apache.qpid.server.txn.ServerTransaction;
 import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.qpid.server.protocol.AMQSessionModel;
-import org.apache.qpid.server.protocol.AMQConnectionModel;
 import org.apache.qpid.transport.Binary;
 import org.apache.qpid.transport.Connection;
 import org.apache.qpid.transport.MessageTransfer;
@@ -57,25 +71,15 @@ import org.apache.qpid.transport.Range;
 import org.apache.qpid.transport.RangeSet;
 import org.apache.qpid.transport.Session;
 import org.apache.qpid.transport.SessionDelegate;
-import org.apache.qpid.transport.Session.State;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import java.lang.ref.WeakReference;
-import java.security.Principal;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentSkipListMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.atomic.AtomicLong;
+import com.sun.security.auth.UserPrincipal;
 
 public class ServerSession extends Session implements PrincipalHolder, SessionConfig, AMQSessionModel, LogSubject
 {
+    private static final Logger _logger = LoggerFactory.getLogger(ServerSession.class);
+    
     private static final String NULL_DESTINTATION = UUID.randomUUID().toString();
 
     private final UUID _id;
@@ -110,6 +114,7 @@ public class ServerSession extends Sessi
     private final AtomicLong _txnCommits = new AtomicLong(0);
     private final AtomicLong _txnRejects = new AtomicLong(0);
     private final AtomicLong _txnCount = new AtomicLong(0);
+    private final AtomicLong _txnUpdateTime = new AtomicLong(0);
 
     private Principal _principal;
 
@@ -140,7 +145,7 @@ public class ServerSession extends Sessi
         _connectionConfig = connConfig;        
         _transaction = new AutoCommitTransaction(this.getMessageStore());
         _principal = new UserPrincipal(connection.getAuthorizationID());
-        _reference = new WeakReference(this);
+        _reference = new WeakReference<Session>(this);
         _id = getConfigStore().createId();
         getConfigStore().addConfiguredObject(this);
     }
@@ -188,6 +193,7 @@ public class ServerSession extends Sessi
             });
 
             incrementOutstandingTxnsIfNecessary();
+            updateTransactionalActivity();
     }
 
 
@@ -376,6 +382,7 @@ public class ServerSession extends Sessi
                                      entry.release();
                                  }
                              });
+	    updateTransactionalActivity();
     }
 
     public Collection<Subscription_0_10> getSubscriptions()
@@ -424,6 +431,11 @@ public class ServerSession extends Sessi
         // theory
         return !(_transaction instanceof AutoCommitTransaction);
     }
+    
+    public boolean inTransaction()
+    {
+        return isTransactional() && _txnUpdateTime.get() > 0 && _transaction.getTransactionStartTime() > 0;
+    }
 
     public void selectTx()
     {
@@ -470,6 +482,17 @@ public class ServerSession extends Sessi
         }
     }
 
+    /**
+     * Update last transaction activity timestamp
+     */
+    public void updateTransactionalActivity()
+    {
+        if (isTransactional())
+        {
+            _txnUpdateTime.set(System.currentTimeMillis());
+        }
+    }
+
     public Long getTxnStarts()
     {
         return _txnStarts.get();
@@ -600,18 +623,48 @@ public class ServerSession extends Sessi
         return (LogSubject) this;
     }
 
+    public void checkTransactionStatus(long openWarn, long openClose, long idleWarn, long idleClose) throws AMQException
+    {
+        if (inTransaction())
+        {
+            long currentTime = System.currentTimeMillis();
+            long openTime = currentTime - _transaction.getTransactionStartTime();
+            long idleTime = currentTime - _txnUpdateTime.get();
+
+            // Log a warning on idle or open transactions
+            if (idleWarn > 0L && idleTime > idleWarn)
+            {
+                CurrentActor.get().message(getLogSubject(), ChannelMessages.IDLE_TXN(openTime));
+                _logger.warn("IDLE TRANSACTION ALERT " + getLogSubject().toString() + " " + idleTime + " ms");
+            }
+            else if (openWarn > 0L && openTime > openWarn)
+            {
+                CurrentActor.get().message(getLogSubject(), ChannelMessages.OPEN_TXN(openTime));
+                _logger.warn("OPEN TRANSACTION ALERT " + getLogSubject().toString() + " " + openTime + " ms");
+            }
+
+            // Close connection for idle or open transactions that have timed out
+            if (idleClose > 0L && idleTime > idleClose)
+            {
+                getConnectionModel().closeSession(this, AMQConstant.RESOURCE_ERROR, "Idle transaction timed out");
+            }
+            else if (openClose > 0L && openTime > openClose)
+            {
+                getConnectionModel().closeSession(this, AMQConstant.RESOURCE_ERROR, "Open transaction timed out");
+            }
+        }
+    }
+
     @Override
     public String toLogString()
     {
        return " [" +
                MessageFormat.format(CHANNEL_FORMAT,
-                                   getConnection().getConnectionId(),
+                                   ((ServerConnection) getConnection()).getConnectionId(),
                                    getClientID(),
-                                   ((ProtocolEngine) _connectionConfig).getRemoteAddress().toString(),
+                                   ((ProtocolEngine_0_10) getConnectionConfig()).getAddress(),
                                    getVirtualHost().getName(),
                                    getChannel())
             + "] ";
-
     }
-
 }

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java Wed Oct 13 15:05:29 2010
@@ -234,7 +234,7 @@ public class ServerSessionDelegate exten
                     FlowCreditManager_0_10 creditManager = new WindowCreditManager(0L,0L);
                     
                     FilterManager filterManager = null;
-                    try 
+                    try
                     {
                         filterManager = FilterManagerFactory.createManager(method.getArguments());
                     } 
@@ -371,7 +371,6 @@ public class ServerSessionDelegate exten
         }
 
         ssn.processed(xfr);
-
     }
 
     @Override
@@ -383,6 +382,8 @@ public class ServerSessionDelegate exten
 
         if(sub == null)
         {
+            // FIXME this causes problems during failover if a queue browser is open and is then closed (with unbrowsed messages)
+            //  See QueueBrowser*Test methods testFailoverWithQueueBrowser and testFailoverAsQueueBrowserCreated
             exception(session, method, ExecutionErrorCode.NOT_FOUND, "not-found: destination '"+destination+"'");
         }
         else
@@ -482,8 +483,8 @@ public class ServerSessionDelegate exten
                     exchange = exchangeFactory.createExchange(method.getExchange(),
                                                               method.getType(),
                                                               method.getDurable(),
-                                                              method.getAutoDelete());
-
+                                                              method.getAutoDelete(),
+                                                              method.getArguments());
                     String alternateExchangeName = method.getAlternateExchange();
                     if(alternateExchangeName != null && alternateExchangeName.length() != 0)
                     {
@@ -496,7 +497,6 @@ public class ServerSessionDelegate exten
                         DurableConfigurationStore store = virtualHost.getDurableConfigurationStore();
                         store.createExchange(exchange);
                     }
-
                     exchangeRegistry.registerExchange(exchange);
                 }
                 catch(AMQUnknownExchangeType e)
@@ -645,6 +645,7 @@ public class ServerSessionDelegate exten
             result.setDurable(exchange.isDurable());
             result.setType(exchange.getTypeShortString().toString());
             result.setNotFound(false);
+            result.setArguments(exchange.getArguments());
         }
         else
         {
@@ -893,11 +894,9 @@ public class ServerSessionDelegate exten
 
         synchronized (queueRegistry)
         {
-
             if (((queue = queueRegistry.getQueue(queueName)) == null))
             {
-
-                if (method.getPassive())
+                if (method.hasPassive() && method.getPassive())
                 {
                     String description = "Queue: " + queueName + " not found on VirtualHost(" + virtualHost + ").";
                     ExecutionErrorCode errorCode = ExecutionErrorCode.NOT_FOUND;
@@ -910,21 +909,25 @@ public class ServerSessionDelegate exten
                 {
                     try
                     {
-                        queue = createQueue(queueName, method, virtualHost, (ServerSession)session);
-                        if(method.getExclusive())
+                        final ServerSession s = (ServerSession) session;
+                        final AMQQueue q = createQueue(queueName, method, virtualHost, s);
+                        
+                        if (method.hasExclusive() && method.getExclusive())
                         {
-                            queue.setExclusive(true);
+                            q.setExclusive(true);
+                            q.setExclusiveOwningSession(s);
+                            q.setPrincipalHolder(s);
                         }
                         else if(method.getAutoDelete())
                         {
-                            queue.setDeleteOnNoConsumers(true);
+                            q.setDeleteOnNoConsumers(true);
                         }
 
                         final String alternateExchangeName = method.getAlternateExchange();
                         if(alternateExchangeName != null && alternateExchangeName.length() != 0)
                         {
                             Exchange alternate = getExchange(session, alternateExchangeName);
-                            queue.setAlternateExchange(alternate);
+                            q.setAlternateExchange(alternate);
                         }
 
                         if(method.hasArguments()  && method.getArguments() != null)
@@ -934,13 +937,13 @@ public class ServerSessionDelegate exten
                                 Object no_local = method.getArguments().get("no-local");
                                 if(no_local instanceof Boolean && ((Boolean)no_local))
                                 {
-                                    queue.setNoLocal(true);
+                                    q.setNoLocal(true);
                                 }
                             }
                         }
 
 
-                        if (queue.isDurable() && !queue.isAutoDelete())
+                        if (q.isDurable() && !q.isAutoDelete())
                         {
                             if(method.hasArguments() && method.getArguments() != null)
                             {
@@ -950,80 +953,73 @@ public class ServerSessionDelegate exten
                                 {
                                     ftArgs.put(new AMQShortString(entry.getKey()), entry.getValue());
                                 }
-                                store.createQueue(queue, ftArgs);
+                                store.createQueue(q, ftArgs);
                             }
                             else
                             {
-                                store.createQueue(queue);
+                                store.createQueue(q);
                             }
                         }
-                        queueRegistry.registerQueue(queue);
+                        queueRegistry.registerQueue(q);
                         boolean autoRegister = ApplicationRegistry.getInstance().getConfiguration().getQueueAutoRegister();
 
                         if (autoRegister)
                         {
-
                             ExchangeRegistry exchangeRegistry = getExchangeRegistry(session);
 
                             Exchange defaultExchange = exchangeRegistry.getDefaultExchange();
 
-                            virtualHost.getBindingFactory().addBinding(queueName, queue, defaultExchange, null);
-
+                            virtualHost.getBindingFactory().addBinding(queueName, q, defaultExchange, null);
                         }
 
-                        if(method.hasAutoDelete()
-                           && method.getAutoDelete()
-                           && method.hasExclusive()
-                           && method.getExclusive())
+                        if (method.hasAutoDelete() && method.getAutoDelete() &&
+                                method.hasExclusive() && method.getExclusive())
                         {
-                            final AMQQueue q = queue;
                             final ServerSession.Task deleteQueueTask = new ServerSession.Task()
+                            {
+                                public void doTask(ServerSession session)
                                 {
-                                    public void doTask(ServerSession session)
+                                    try
                                     {
-                                        try
-                                        {
-                                            q.delete();
-                                        }
-                                        catch (AMQException e)
-                                        {
-                                            exception(session, method, e, "Cannot delete '" + method.getQueue());
-                                        }
+                                        q.delete();
                                     }
-                                };
-                            final ServerSession s = (ServerSession) session;
-                            s.addSessionCloseTask(deleteQueueTask);
-                            queue.addQueueDeleteTask(new AMQQueue.Task()
-                                {
-                                    public void doTask(AMQQueue queue) throws AMQException
+                                    catch (AMQException e)
                                     {
-                                        s.removeSessionCloseTask(deleteQueueTask);
+                                        exception(session, method, e, "Cannot delete '" + method.getQueue());
                                     }
-                                });
-                        }
-                        else if(method.getExclusive())
-                        {
-                            final AMQQueue q = queue;
-                            final ServerSession.Task removeExclusive = new ServerSession.Task()
-                            {
-
-                                public void doTask(ServerSession session)
-                                {
-                                    q.setPrincipalHolder(null);
-                                    q.setExclusiveOwningSession(null);
                                 }
                             };
-                            final ServerSession s = (ServerSession) session;
-                            s.addSessionCloseTask(removeExclusive);
-                            queue.addQueueDeleteTask(new AMQQueue.Task()
+                            s.addSessionCloseTask(deleteQueueTask);
+                            q.addQueueDeleteTask(new AMQQueue.Task()
                             {
-
                                 public void doTask(AMQQueue queue) throws AMQException
                                 {
-                                    s.removeSessionCloseTask(removeExclusive);
+                                    s.removeSessionCloseTask(deleteQueueTask);
                                 }
                             });
                         }
+                        else if (method.hasExclusive() && method.getExclusive())
+                        {                            
+	                        if (!method.getDurable())
+	                        {
+                                final ServerSession.Task removeExclusive = new ServerSession.Task()
+                                {
+                                    public void doTask(ServerSession session)
+                                    {
+                                        q.setPrincipalHolder(null);
+                                        q.setExclusiveOwningSession(null);
+                                    }
+                                };
+                                s.addSessionCloseTask(removeExclusive);
+                                q.addQueueDeleteTask(new AMQQueue.Task()
+                                {
+                                    public void doTask(AMQQueue queue) throws AMQException
+                                    {
+                                        s.removeSessionCloseTask(removeExclusive);
+                                    }
+                                });
+                            }
+                        }
                     }
                     catch (AMQException e)
                     {
@@ -1033,14 +1029,14 @@ public class ServerSessionDelegate exten
             }
             else if (method.getExclusive() && (queue.getPrincipalHolder() != null && !queue.getPrincipalHolder().equals(session)))
             {
-                    String description = "Cannot declare queue('" + queueName + "'),"
-                                                                           + " as exclusive queue with same name "
-                                                                           + "declared on another session";
-                    ExecutionErrorCode errorCode = ExecutionErrorCode.RESOURCE_LOCKED;
-    
-                    exception(session, method, errorCode, description);
-    
-                    return;
+                String description = "Cannot declare queue('" + queueName + "'),"
+                                                                       + " as exclusive queue with same name "
+                                                                       + "declared on another session";
+                ExecutionErrorCode errorCode = ExecutionErrorCode.RESOURCE_LOCKED;
+
+                exception(session, method, errorCode, description);
+
+                return;
             }
         }
     }

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/AutoCommitTransaction.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/AutoCommitTransaction.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/AutoCommitTransaction.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/AutoCommitTransaction.java Wed Oct 13 15:05:29 2010
@@ -40,7 +40,11 @@ public class AutoCommitTransaction imple
     {
         _transactionLog = transactionLog;
     }
-
+    
+    public long getTransactionStartTime()
+    {
+        return 0L;
+    }
 
     public void addPostCommitAction(Action postCommitAction)
     {

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransaction.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransaction.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransaction.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransaction.java Wed Oct 13 15:05:29 2010
@@ -20,30 +20,43 @@ package org.apache.qpid.server.txn;
  * 
  */
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 
-import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.queue.QueueEntry;
-import org.apache.qpid.server.queue.BaseQueue;
+import org.apache.qpid.AMQException;
 import org.apache.qpid.server.message.EnqueableMessage;
 import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.queue.BaseQueue;
+import org.apache.qpid.server.queue.QueueEntry;
 import org.apache.qpid.server.store.TransactionLog;
-import org.apache.qpid.AMQException;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Collection;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class LocalTransaction implements ServerTransaction
 {
+    private static final Logger _log = LoggerFactory.getLogger(LocalTransaction.class);
     private final List<Action> _postCommitActions = new ArrayList<Action>();
 
     private volatile TransactionLog.Transaction _transaction;
     private TransactionLog _transactionLog;
+    private long _txnStartTime = 0L;
 
     public LocalTransaction(TransactionLog transactionLog)
     {
         _transactionLog = transactionLog;
     }
+    
+    public boolean inTransaction()
+    {
+        return _transaction != null;
+    }
+    
+    public long getTransactionStartTime()
+    {
+        return _txnStartTime;
+    }
 
     public void addPostCommitAction(Action postCommitAction)
     {
@@ -56,7 +69,6 @@ public class LocalTransaction implements
         {
             try
             {
-
                 beginTranIfNecessary();
                 _transaction.dequeueMessage(queue, message.getMessageNumber());
 
@@ -73,7 +85,6 @@ public class LocalTransaction implements
     {
         try
         {
-
             for(QueueEntry entry : queueEntries)
             {
                 ServerMessage message = entry.getMessage();
@@ -91,7 +102,6 @@ public class LocalTransaction implements
             tidyUpOnError(e);
         }
         _postCommitActions.add(postCommitAction);
-
     }
 
     private void tidyUpOnError(Exception e)
@@ -113,8 +123,7 @@ public class LocalTransaction implements
             {
                 // TODO could try to chain the information to the original error
             }
-            _transaction = null;
-            _postCommitActions.clear();
+            resetDetails();
         }
 
         throw new RuntimeException(e);
@@ -150,13 +159,14 @@ public class LocalTransaction implements
             }
         }
         _postCommitActions.add(postCommitAction);
-
-
     }
 
     public void enqueue(List<? extends BaseQueue> queues, EnqueableMessage message, Action postCommitAction)
     {
-
+        if (_txnStartTime == 0L)
+        {
+            _txnStartTime = System.currentTimeMillis();
+        }
 
         if(message.isPersistent())
         {
@@ -170,11 +180,8 @@ public class LocalTransaction implements
                         break;
                     }
                 }
-
-
             }
 
-
             try
             {
                 for(BaseQueue queue : queues)
@@ -192,8 +199,6 @@ public class LocalTransaction implements
             }
         }
         _postCommitActions.add(postCommitAction);
-
-
     }
 
     public void commit()
@@ -202,7 +207,6 @@ public class LocalTransaction implements
         {
             if(_transaction != null)
             {
-
                 _transaction.commitTran();
             }
 
@@ -222,18 +226,14 @@ public class LocalTransaction implements
         }
         finally
         {
-            _transaction = null;
-            _postCommitActions.clear();
+            resetDetails();
         }
-
     }
 
     public void rollback()
     {
-
         try
         {
-
             if(_transaction != null)
             {
 
@@ -257,9 +257,15 @@ public class LocalTransaction implements
             }
             finally
             {
-                _transaction = null;
-                _postCommitActions.clear();
+                resetDetails();
             }
         }
     }
+    
+    private void resetDetails()
+    {
+        _transaction = null;
+        _postCommitActions.clear();
+        _txnStartTime = 0L;
+    }
 }

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/ServerTransaction.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/ServerTransaction.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/ServerTransaction.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/ServerTransaction.java Wed Oct 13 15:05:29 2010
@@ -31,9 +31,13 @@ public interface ServerTransaction
 {
 
     void addPostCommitAction(Action postCommitAction);
-
-
-
+    
+    /**
+     * Return the time the current transaction started.
+     * 
+     * @return the time this transaction started or 0 if not in a transaction
+     */
+    long getTransactionStartTime();
 
     public static interface Action
     {

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java Wed Oct 13 15:05:29 2010
@@ -20,28 +20,25 @@
 */
 package org.apache.qpid.server.virtualhost;
 
+import java.util.UUID;
+
 import org.apache.qpid.common.Closeable;
+import org.apache.qpid.server.binding.BindingFactory;
+import org.apache.qpid.server.configuration.ConfigStore;
+import org.apache.qpid.server.configuration.VirtualHostConfig;
+import org.apache.qpid.server.configuration.VirtualHostConfiguration;
 import org.apache.qpid.server.connection.IConnectionRegistry;
+import org.apache.qpid.server.exchange.ExchangeFactory;
+import org.apache.qpid.server.exchange.ExchangeRegistry;
 import org.apache.qpid.server.federation.BrokerLink;
-import org.apache.qpid.server.configuration.VirtualHostConfiguration;
-import org.apache.qpid.server.configuration.VirtualHostConfig;
-import org.apache.qpid.server.configuration.ConfigStore;
+import org.apache.qpid.server.management.ManagedObject;
 import org.apache.qpid.server.queue.QueueRegistry;
-import org.apache.qpid.server.exchange.ExchangeRegistry;
-import org.apache.qpid.server.exchange.ExchangeFactory;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.TransactionLog;
-import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.registry.IApplicationRegistry;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
-import org.apache.qpid.server.management.ManagedObject;
-import org.apache.qpid.server.registry.IApplicationRegistry;
-import org.apache.qpid.server.binding.BindingFactory;
-
-import java.util.List;
-import java.util.UUID;
-import java.util.TimerTask;
-import java.util.concurrent.FutureTask;
+import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.TransactionLog;
 
 public interface VirtualHost extends DurableConfigurationStore.Source, VirtualHostConfig, Closeable
 {

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java Wed Oct 13 15:05:29 2010
@@ -46,6 +46,7 @@ import org.apache.log4j.Logger;
 
 import java.nio.ByteBuffer;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Map;
@@ -133,7 +134,7 @@ public class VirtualHostConfigRecoveryHa
             exchange = _virtualHost.getExchangeRegistry().getExchange(exchangeNameSS);
             if (exchange == null)
             {
-                exchange = _virtualHost.getExchangeFactory().createExchange(exchangeNameSS, new AMQShortString(type), true, autoDelete, 0);
+                exchange = _virtualHost.getExchangeFactory().createExchange(exchangeNameSS, new AMQShortString(type), true, autoDelete, Collections.EMPTY_MAP, 0);
                 _virtualHost.getExchangeRegistry().registerExchange(exchange);
             }
         }

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java Wed Oct 13 15:05:29 2010
@@ -24,7 +24,6 @@ import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.TimerTask;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -36,7 +35,6 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.log4j.Logger;
 import org.apache.qpid.AMQException;
-import org.apache.qpid.AMQInternalException;
 import org.apache.qpid.AMQStoreException;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.framing.FieldTable;
@@ -63,6 +61,8 @@ import org.apache.qpid.server.logging.me
 import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject;
 import org.apache.qpid.server.management.AMQManagedObject;
 import org.apache.qpid.server.management.ManagedObject;
+import org.apache.qpid.server.protocol.AMQConnectionModel;
+import org.apache.qpid.server.protocol.AMQSessionModel;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.AMQQueueFactory;
 import org.apache.qpid.server.queue.DefaultQueueRegistry;
@@ -281,19 +281,30 @@ public class VirtualHostImpl implements 
                             // house keeping task from running.
                         }
                     }
+                    for (AMQConnectionModel connection : getConnectionRegistry().getConnections())
+                    {
+                        _logger.debug("Checking for long running open transactions on connection " + connection);
+                        for (AMQSessionModel session : connection.getSessionModels())
+                        {
+	                        _logger.debug("Checking for long running open transactions on session " + session);
+                            try
+                            {
+                                session.checkTransactionStatus(_configuration.getTransactionTimeoutOpenWarn(),
+	                                                           _configuration.getTransactionTimeoutOpenClose(),
+	                                                           _configuration.getTransactionTimeoutIdleWarn(),
+	                                                           _configuration.getTransactionTimeoutIdleClose());
+	                            }
+                            catch (Exception e)
+                            {
+                                _logger.error("Exception in housekeeping for connection: " + connection.toString(), e);
+                            }
+                        }
+                    }
                 }
             }
 
             scheduleHouseKeepingTask(period, new ExpiredMessagesTask(this));
 
-            class ForceChannelClosuresTask extends TimerTask
-            {
-                public void run()
-                {
-                    _connectionRegistry.expireClosedChannels();
-                }
-            }
-
             Map<String, VirtualHostPluginFactory> plugins =
                 ApplicationRegistry.getInstance().getPluginManager().getVirtualHostPlugins();
 
@@ -433,7 +444,7 @@ public class VirtualHostImpl implements 
     		boolean durable = exchangeConfiguration.getDurable();
     		boolean autodelete = exchangeConfiguration.getAutoDelete();
 
-            Exchange newExchange = _exchangeFactory.createExchange(exchangeName, type, durable, autodelete, 0);
+            Exchange newExchange = _exchangeFactory.createExchange(exchangeName, type, durable, autodelete, Collections.EMPTY_MAP, 0);
             _exchangeRegistry.registerExchange(newExchange);
 
             if (newExchange.isDurable())

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/policies/TopicDeletePolicy.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/policies/TopicDeletePolicy.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/policies/TopicDeletePolicy.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/policies/TopicDeletePolicy.java Wed Oct 13 15:05:29 2010
@@ -88,9 +88,7 @@ public class TopicDeletePolicy implement
         {
             CurrentActor.get().message(owner.getLogSubject(),TopicDeletePolicyMessages.DISCONNECTING());
             // Close the consumer . this will cause autoDelete Queues to be purged
-            owner.getConnectionModel().
-                    closeSession(owner, AMQConstant.RESOURCE_ERROR,
-                                 "Consuming to slow.");
+            owner.getConnectionModel().closeSession(owner, AMQConstant.RESOURCE_ERROR, "Consuming too slow.");
 
             // Actively delete non autoDelete queues if deletePersistent is set
             if (!q.isAutoDelete() && (_configuration != null && _configuration.deletePersistent()))

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/log4j/xml/QpidLog4JConfiguratorTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/log4j/xml/QpidLog4JConfiguratorTest.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/log4j/xml/QpidLog4JConfiguratorTest.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/log4j/xml/QpidLog4JConfiguratorTest.java Wed Oct 13 15:05:29 2010
@@ -27,10 +27,9 @@ import java.io.FileWriter;
 import java.io.IOException;
 
 import org.apache.log4j.xml.QpidLog4JConfigurator.IllegalLoggerLevelException;
+import org.apache.qpid.test.utils.QpidTestCase;
 
-import junit.framework.TestCase;
-
-public class QpidLog4JConfiguratorTest extends TestCase
+public class QpidLog4JConfiguratorTest extends QpidTestCase
 {
     private static final String NEWLINE = System.getProperty("line.separator");
 

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/ExtractResendAndRequeueTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/ExtractResendAndRequeueTest.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/ExtractResendAndRequeueTest.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/ExtractResendAndRequeueTest.java Wed Oct 13 15:05:29 2010
@@ -20,24 +20,24 @@
  */
 package org.apache.qpid.server;
 
-import junit.framework.TestCase;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.Map;
+
+import org.apache.qpid.AMQException;
 import org.apache.qpid.server.ack.UnacknowledgedMessageMapImpl;
-import org.apache.qpid.server.queue.QueueEntry;
-import org.apache.qpid.server.queue.SimpleQueueEntryList;
-import org.apache.qpid.server.queue.MockAMQMessage;
+import org.apache.qpid.server.message.AMQMessage;
 import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.queue.MockAMQMessage;
 import org.apache.qpid.server.queue.MockAMQQueue;
-import org.apache.qpid.server.message.AMQMessage;
+import org.apache.qpid.server.queue.QueueEntry;
 import org.apache.qpid.server.queue.QueueEntryIterator;
-import org.apache.qpid.server.subscription.Subscription;
-import org.apache.qpid.server.subscription.MockSubscription;
+import org.apache.qpid.server.queue.SimpleQueueEntryList;
 import org.apache.qpid.server.store.MemoryMessageStore;
 import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.AMQException;
-
-import java.util.Map;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
+import org.apache.qpid.server.subscription.MockSubscription;
+import org.apache.qpid.server.subscription.Subscription;
+import org.apache.qpid.test.utils.QpidTestCase;
 
 /**
  * QPID-1385 : Race condition between added to unacked map and resending due to a rollback.
@@ -56,7 +56,7 @@ import java.util.LinkedList;
  * delivery thread will be in progress while the rollback method is called. Hopefully this will cause the
  * deliveryTag to be lost
  */
-public class ExtractResendAndRequeueTest extends TestCase
+public class ExtractResendAndRequeueTest extends QpidTestCase
 {
 
     UnacknowledgedMessageMapImpl _unacknowledgedMessageMap;

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/RunBrokerWithCommand.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/RunBrokerWithCommand.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/RunBrokerWithCommand.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/RunBrokerWithCommand.java Wed Oct 13 15:05:29 2010
@@ -27,6 +27,7 @@ import java.io.InputStream;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.io.IOException;
+import java.util.Arrays;
 
 public class RunBrokerWithCommand
 {
@@ -35,11 +36,8 @@ public class RunBrokerWithCommand
         //Start the broker
         try
         {
-            String[] fudge = args.clone();
-
-            // Override the first value which is the command we are going to run later.
-            fudge[0] = "-v";
-            new Main(fudge).startup();
+            String[] copy = Arrays.copyOfRange(args, 1, args.length);
+            Main.main(copy);
         }
         catch (Exception e)
         {

Modified: qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/SelectorParserTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/SelectorParserTest.java?rev=1022127&r1=1022126&r2=1022127&view=diff
==============================================================================
--- qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/SelectorParserTest.java (original)
+++ qpid/branches/grkvlt-network-20101013/qpid/java/broker/src/test/java/org/apache/qpid/server/SelectorParserTest.java Wed Oct 13 15:05:29 2010
@@ -1,9 +1,4 @@
-package org.apache.qpid.server;
-
-import junit.framework.TestCase;
-import org.apache.qpid.server.filter.JMSSelectorFilter;
-import org.apache.qpid.AMQException;/*
- *
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -20,10 +15,14 @@ import org.apache.qpid.AMQException;/*
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
- *
  */
+package org.apache.qpid.server;
+
+import org.apache.qpid.AMQException;
+import org.apache.qpid.server.filter.JMSSelectorFilter;
+import org.apache.qpid.test.utils.QpidTestCase;
 
-public class SelectorParserTest extends TestCase
+public class SelectorParserTest extends QpidTestCase
 {
     public void testSelectorWithHyphen()
     {



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org