You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2010/05/31 18:03:44 UTC

svn commit: r949781 [1/5] - in /qpid/trunk/qpid/java: broker/etc/ broker/src/main/java/org/apache/qpid/qmf/ broker/src/main/java/org/apache/qpid/server/ broker/src/main/java/org/apache/qpid/server/binding/ broker/src/main/java/org/apache/qpid/server/co...

Author: robbie
Date: Mon May 31 16:03:41 2010
New Revision: 949781

URL: http://svn.apache.org/viewvc?rev=949781&view=rev
Log:
QPID-2606: Access Control Modifications

Applied patch from Andrew Kennedy <an...@gmail.com>

Added:
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractProxyPlugin.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/Result.java
      - copied, changed from r949780, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Permission.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java   (with props)
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPlugin.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPluginActivator.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPluginFactory.java
      - copied, changed from r949780, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/AuthorizationManager.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ObjectType.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Operation.java
      - copied, changed from r949780, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ExchangeDenier.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/BasicPlugin.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/management/
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/management/AMQUserManagementMBean.java
      - copied, changed from r949780, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/management/
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/management/AMQUserManagementMBeanTest.java
      - copied, changed from r949780, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBeanTest.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/plugins/PluginTest.java
    qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/AMQSecurityException.java
    qpid/trunk/qpid/java/systests/etc/config-systests-aclv2-settings.xml
      - copied, changed from r949780, qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-3.xml
    qpid/trunk/qpid/java/systests/etc/config-systests-aclv2.xml
      - copied, changed from r949780, qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-3.xml
    qpid/trunk/qpid/java/systests/etc/global-default.txt
    qpid/trunk/qpid/java/systests/etc/global-externaladminacl-changeloggerleveldenied.txt
    qpid/trunk/qpid/java/systests/etc/global-externaladminacl-getallloggerlevelsdenied.txt
    qpid/trunk/qpid/java/systests/etc/test-default.txt
    qpid/trunk/qpid/java/systests/etc/test-externalacljmx-deleteexchangefailure.txt
    qpid/trunk/qpid/java/systests/etc/test-externalacljmx.txt
    qpid/trunk/qpid/java/systests/etc/test2-default.txt
    qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-aclv2-settings.xml
      - copied, changed from r949780, qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-2.xml
    qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-aclv2.xml
      - copied, changed from r949780, qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-3.xml
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/AbstractACLTestCase.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExhaustiveACLTest.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLFileTest.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLTest.java
      - copied, changed from r949780, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Accessable.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalAdminACLTest.java
Removed:
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLManager.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPlugin.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPluginFactory.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/AccessResult.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/AccessRights.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Accessable.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/AuthorizationManager.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/VirtualHostAccess.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AbstractACLPlugin.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/BasicACLPlugin.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccessPlugin.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ACLManagerTest.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ExchangeDenier.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/QueueDenier.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBeanTest.java
Modified:
    qpid/trunk/qpid/java/broker/etc/config.xml
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Permission.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/AuthenticationResult.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/ConfigurationFilePrincipalDatabaseManager.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationManager.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/rmi/RMIPasswordAuthenticator.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/state/AMQStateManager.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/SubscriptionFactoryImpl.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueTest.java
    qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
    qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-acl-settings.xml
    qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-2.xml
    qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-3.xml
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/MessageDisappearWithIOExceptionTest.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/SimpleACLTest.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/firewall/FirewallConfigTest.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
    qpid/trunk/qpid/java/test-profiles/CPPExcludes
    qpid/trunk/qpid/java/test-profiles/JavaInVMExcludes

Modified: qpid/trunk/qpid/java/broker/etc/config.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/etc/config.xml?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/etc/config.xml (original)
+++ qpid/trunk/qpid/java/broker/etc/config.xml Mon May 31 16:03:41 2010
@@ -25,6 +25,7 @@
     <conf>${prefix}/etc</conf>
 
     <plugin-directory>${QPID_HOME}/lib/plugins</plugin-directory>
+    <cache-directory>${QPID_WORK}/cache</cache-directory>
     
     <connector>
         <!-- To enable SSL edit the keystorePath and keystorePassword
@@ -83,9 +84,7 @@
             </principal-database>
         </principal-databases>
 
-        <access>
-            <class>org.apache.qpid.server.security.access.plugins.AllowAll</class>
-        </access>
+        <allow-all />
         
         <msg-auth>false</msg-auth>
         

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java Mon May 31 16:03:41 2010
@@ -1063,7 +1063,14 @@ public class QMFService implements Confi
         public BrokerSchema.QueueClass.PurgeMethodResponseCommand purge(final BrokerSchema.QueueClass.PurgeMethodResponseCommandFactory factory,
                                                                         final Long request)
         {
-            _obj.purge(request);
+            try
+            {
+                _obj.purge(request);
+            } catch (AMQException e)
+            {
+                // TODO
+                throw new RuntimeException();
+            }
             return factory.createResponseCommand();
         }
 

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java Mon May 31 16:03:41 2010
@@ -1,5 +1,4 @@
 /*
- *
  * 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
@@ -16,24 +15,6 @@
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
- *
- */
-/*
- *
- * Copyright (c) 2006 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
  */
 package org.apache.qpid.server;
 
@@ -189,8 +170,9 @@ public class AMQBrokerManagerMBean exten
      * @param type
      * @param durable
      * @throws JMException
+     * @throws MBeanException
      */
-    public void createNewExchange(String exchangeName, String type, boolean durable) throws JMException
+    public void createNewExchange(String exchangeName, String type, boolean durable) throws JMException, MBeanException
     {
         CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger()));
         try
@@ -216,7 +198,8 @@ public class AMQBrokerManagerMBean exten
         }
         catch (AMQException ex)
         {
-            throw new MBeanException(ex, "Error in creating exchange " + exchangeName);
+            JMException jme = new JMException(ex.toString());
+            throw new MBeanException(jme, "Error in creating exchange " + exchangeName);
         }
         finally
         {
@@ -229,8 +212,9 @@ public class AMQBrokerManagerMBean exten
      *
      * @param exchangeName
      * @throws JMException
+     * @throws MBeanException
      */
-    public void unregisterExchange(String exchangeName) throws JMException
+    public void unregisterExchange(String exchangeName) throws JMException, MBeanException
     {
         // TODO
         // Check if the exchange is in use.
@@ -244,7 +228,8 @@ public class AMQBrokerManagerMBean exten
         }
         catch (AMQException ex)
         {
-            throw new MBeanException(ex, "Error in unregistering exchange " + exchangeName);
+            JMException jme = new JMException(ex.toString());
+            throw new MBeanException(jme, "Error in unregistering exchange " + exchangeName);
         }
         finally
         {
@@ -260,8 +245,9 @@ public class AMQBrokerManagerMBean exten
      * @param durable
      * @param owner
      * @throws JMException
+     * @throws MBeanException
      */
-    public void createNewQueue(String queueName, String owner, boolean durable) throws JMException
+    public void createNewQueue(String queueName, String owner, boolean durable) throws JMException, MBeanException
     {
         AMQQueue queue = _queueRegistry.getQueue(new AMQShortString(queueName));
         if (queue != null)
@@ -278,8 +264,7 @@ public class AMQBrokerManagerMBean exten
                 ownerShortString = new AMQShortString(owner);
             }
 
-            queue = AMQQueueFactory.createAMQQueueImpl(new AMQShortString(queueName), durable, ownerShortString, false, false,
-                                                       getVirtualHost(), null);
+            queue = AMQQueueFactory.createAMQQueueImpl(new AMQShortString(queueName), durable, ownerShortString, false, false, getVirtualHost(), null);
             if (queue.isDurable() && !queue.isAutoDelete())
             {
                 _durableConfig.createQueue(queue);
@@ -289,8 +274,7 @@ public class AMQBrokerManagerMBean exten
         }
         catch (AMQException ex)
         {
-            JMException jme = new JMException(ex.getMessage());
-            jme.initCause(ex);
+            JMException jme = new JMException(ex.toString());
             throw new MBeanException(jme, "Error in creating queue " + queueName);
         }
         finally
@@ -309,13 +293,14 @@ public class AMQBrokerManagerMBean exten
      *
      * @param queueName
      * @throws JMException
+     * @throws MBeanException
      */
-    public void deleteQueue(String queueName) throws JMException
+    public void deleteQueue(String queueName) throws JMException, MBeanException
     {
         AMQQueue queue = _queueRegistry.getQueue(new AMQShortString(queueName));
         if (queue == null)
         {
-            throw new JMException("The Queue " + queueName + " is not a registerd queue.");
+            throw new JMException("The Queue " + queueName + " is not a registered queue.");
         }
 
         CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger()));
@@ -329,8 +314,7 @@ public class AMQBrokerManagerMBean exten
         }
         catch (AMQException ex)
         {
-            JMException jme = new JMException(ex.getMessage());
-            jme.initCause(ex);
+            JMException jme = new JMException(ex.toString());
             throw new MBeanException(jme, "Error in deleting queue " + queueName);
         }
         finally
@@ -339,14 +323,16 @@ public class AMQBrokerManagerMBean exten
         }
     }
 
+    @Override
     public ManagedObject getParentObject()
     {
         return _virtualHostMBean;
     }
 
     // This will have a single instance for a virtual host, so not having the name property in the ObjectName
+    @Override
     public ObjectName getObjectName() throws MalformedObjectNameException
     {
         return getObjectNameForSingleInstanceMBean();
     }
-} // End of MBean class
+}

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java Mon May 31 16:03:41 2010
@@ -23,6 +23,7 @@ package org.apache.qpid.server;
 import org.apache.log4j.Logger;
 
 import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
 import org.apache.qpid.framing.AMQMethodBody;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.framing.BasicContentHeaderProperties;
@@ -244,9 +245,12 @@ public class AMQChannel implements Sessi
         return _channelId;
     }
 
-    public void setPublishFrame(MessagePublishInfo info, final Exchange e) throws AMQException
+    public void setPublishFrame(MessagePublishInfo info, final Exchange e) throws AMQSecurityException
     {
-
+        if (!getVirtualHost().getSecurityManager().authorisePublish(info.isImmediate(), info.getRoutingKey().asString(), e.getName()))
+        {
+            throw new AMQSecurityException("Permission denied: " + e.getName());
+        }
         _currentMessage = new IncomingMessage(info);
         _currentMessage.setExchange(e);
     }
@@ -421,7 +425,7 @@ public class AMQChannel implements Sessi
         {
             throw new AMQException("Consumer already exists with same tag: " + tag);
         }
-
+        
          Subscription subscription =
                 SubscriptionFactoryImpl.INSTANCE.createSubscription(_channelId, _session, tag, acks, filters, noLocal, _creditManager);
 

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java Mon May 31 16:03:41 2010
@@ -25,12 +25,12 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
-import java.util.Properties;
-import java.util.Set;
+import java.util.Arrays;
+import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Collection;
-import java.util.Arrays;
+import java.util.Properties;
+import java.util.Set;
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.HelpFormatter;
@@ -42,8 +42,6 @@ import org.apache.commons.cli.PosixParse
 import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;
 import org.apache.log4j.xml.QpidLog4JConfigurator;
-import org.apache.qpid.transport.network.ConnectionBinding;
-import org.apache.qpid.transport.*;
 import org.apache.qpid.common.QpidProperties;
 import org.apache.qpid.framing.ProtocolVersion;
 import org.apache.qpid.server.configuration.ServerConfiguration;
@@ -56,21 +54,18 @@ import org.apache.qpid.server.logging.ma
 import org.apache.qpid.server.logging.messages.BrokerMessages;
 import org.apache.qpid.server.protocol.AMQProtocolEngineFactory;
 import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory;
+import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory.VERSION;
 import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry;
-import org.apache.qpid.server.registry.IApplicationRegistry;
-import org.apache.qpid.server.transport.ServerConnection;
 import org.apache.qpid.server.transport.QpidAcceptor;
 import org.apache.qpid.ssl.SSLContextFactory;
 import org.apache.qpid.transport.NetworkDriver;
 import org.apache.qpid.transport.network.mina.MINANetworkDriver;
-import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory.VERSION;
 
 /**
  * Main entry point for AMQPD.
  *
  */
-@SuppressWarnings({"AccessStaticViaInstance"})
 public class Main
 {
     private static Logger _logger;
@@ -83,7 +78,6 @@ public class Main
     private static final int IPV4_ADDRESS_LENGTH = 4;
 
     private static final char IPV4_LITERAL_SEPARATOR = '.';
-    private static final Collection<VERSION> ALL_VERSIONS = Arrays.asList(VERSION.values());
 
     protected static class InitException extends Exception
     {
@@ -123,6 +117,7 @@ public class Main
         }
     }
 
+    @SuppressWarnings("static-access")
     protected void setOptions(Options options)
     {
         Option help = new Option("h", "help", false, "print this message");
@@ -403,7 +398,7 @@ public class Main
 
                     NetworkDriver driver = new MINANetworkDriver();
 
-                    Set<VERSION> supported = new HashSet<VERSION>(ALL_VERSIONS);
+                    Set<VERSION> supported = EnumSet.allOf(VERSION.class);
 
                     if(exclude_0_10.contains(port))
                     {

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java Mon May 31 16:03:41 2010
@@ -20,7 +20,12 @@
  */
 package org.apache.qpid.server.binding;
 
+import java.util.Collections;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.framing.FieldTable;
 import org.apache.qpid.server.configuration.BindingConfig;
@@ -35,13 +40,8 @@ import org.apache.qpid.server.queue.AMQQ
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 
-import java.util.Collections;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
 public class BindingFactory
 {
-
     private final VirtualHost _virtualHost;
     private final DurableConfigurationStore.Source _configSource;
     private final Exchange _defaultExchange;
@@ -51,14 +51,14 @@ public class BindingFactory
 
     public BindingFactory(final VirtualHost vhost)
     {
-        this(vhost,vhost.getExchangeRegistry().getDefaultExchange());
+        this(vhost, vhost.getExchangeRegistry().getDefaultExchange());
     }
 
     public BindingFactory(final DurableConfigurationStore.Source configSource, final Exchange defaultExchange)
     {
         _configSource = configSource;
         _defaultExchange = defaultExchange;
-        if(configSource instanceof VirtualHost)
+        if (configSource instanceof VirtualHost)
         {
             _virtualHost = (VirtualHost) configSource;
         }
@@ -83,7 +83,7 @@ public class BindingFactory
 
         private BindingImpl(String bindingKey, final AMQQueue queue, final Exchange exchange, final Map<String, Object> arguments)
         {
-            super(queue.getVirtualHost().getConfigStore().createId(),bindingKey, queue, exchange, arguments);
+            super(queue.getVirtualHost().getConfigStore().createId(), bindingKey, queue, exchange, arguments);
             _logSubject = new BindingLogSubject(bindingKey,exchange,queue);
 
         }
@@ -94,7 +94,7 @@ public class BindingFactory
             removeBinding(this);
         }
 
-        public void onClose(final Exchange exchange)
+        public void onClose(final Exchange exchange) throws AMQSecurityException
         {
             removeBinding(this);
         }
@@ -138,7 +138,7 @@ public class BindingFactory
 
 
 
-    public boolean addBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments)
+    public boolean addBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments) throws AMQSecurityException
     {
         return makeBinding(bindingKey, queue, exchange, arguments, false, false);
     }
@@ -147,37 +147,43 @@ public class BindingFactory
     public boolean replaceBinding(final String bindingKey,
                                final AMQQueue queue,
                                final Exchange exchange,
-                               final Map<String, Object> arguments)
+                               final Map<String, Object> arguments) throws AMQSecurityException
     {
         return makeBinding(bindingKey, queue, exchange, arguments, false, true);
     }
 
-    private boolean makeBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments, boolean restore, boolean force)
+    private boolean makeBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments, boolean restore, boolean force) throws AMQSecurityException
     {
         assert queue != null;
-        if(bindingKey == null)
+        if (bindingKey == null)
         {
             bindingKey = "";
         }
-        if(exchange == null)
+        if (exchange == null)
         {
             exchange = _defaultExchange;
         }
-        if(arguments == null)
+        if (arguments == null)
         {
-            arguments = Collections.EMPTY_MAP;
+            arguments = Collections.emptyMap();
         }
-
+      
+        //Perform ACLs
+        if (!getVirtualHost().getSecurityManager().authoriseBind(exchange, queue, new AMQShortString(bindingKey)))
+        {
+            throw new AMQSecurityException("Permission denied: binding " + bindingKey);
+        }
+        
         BindingImpl b = new BindingImpl(bindingKey,queue,exchange,arguments);
         BindingImpl existingMapping = _bindings.putIfAbsent(b,b);
-        if(existingMapping == null || force)
+        if (existingMapping == null || force)
         {
-            if(existingMapping != null)
+            if (existingMapping != null)
             {
                 removeBinding(existingMapping);
             }
 
-            if(b.isDurable() && !restore)
+            if (b.isDurable() && !restore)
             {
                 try
                 {
@@ -185,7 +191,7 @@ public class BindingFactory
                 }
                 catch (AMQException e)
                 {
-                    throw new RuntimeException(e);
+                    throw new RuntimeException(e); // FIXME
                 }
             }
 
@@ -201,8 +207,6 @@ public class BindingFactory
         {
             return false;
         }
-
-
     }
 
     private ConfigStore getConfigStore()
@@ -210,43 +214,49 @@ public class BindingFactory
         return getVirtualHost().getConfigStore();
     }
 
-    public void restoreBinding(final String bindingKey, final AMQQueue queue, final Exchange exchange, final Map<String, Object> argumentMap)
+    public void restoreBinding(final String bindingKey, final AMQQueue queue, final Exchange exchange, final Map<String, Object> argumentMap) throws AMQSecurityException
     {
         makeBinding(bindingKey,queue,exchange,argumentMap,true, false);
     }
 
-    public void removeBinding(final Binding b)
+    public void removeBinding(final Binding b) throws AMQSecurityException
     {
         removeBinding(b.getBindingKey(), b.getQueue(), b.getExchange(), b.getArguments());
     }
 
 
-    public Binding removeBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments)
+    public Binding removeBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments) throws AMQSecurityException
     {
         assert queue != null;
-        if(bindingKey == null)
+        if (bindingKey == null)
         {
             bindingKey = "";
         }
-        if(exchange == null)
+        if (exchange == null)
         {
             exchange = _defaultExchange;
         }
-        if(arguments == null)
+        if (arguments == null)
         {
-            arguments = Collections.EMPTY_MAP;
+            arguments = Collections.emptyMap();
         }
 
+        // Check access
+        if (!getVirtualHost().getSecurityManager().authoriseUnbind(exchange, new AMQShortString(bindingKey), queue))
+        {
+            throw new AMQSecurityException("Permission denied: binding " + bindingKey);
+        }
+        
         BindingImpl b = _bindings.remove(new BindingImpl(bindingKey,queue,exchange,arguments));
 
-        if(b != null)
+        if (b != null)
         {
             exchange.removeBinding(b);
             queue.removeBinding(b);
             exchange.removeCloseTask(b);
             queue.removeQueueDeleteTask(b);
 
-            if(b.isDurable())
+            if (b.isDurable())
             {
                 try
                 {
@@ -257,12 +267,11 @@ public class BindingFactory
                 }
                 catch (AMQException e)
                 {
-                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+                    throw new RuntimeException(e); // FIXME
                 }
             }
             b.logDestruction();
             getConfigStore().removeConfiguredObject(b);
-
         }
 
         return b;
@@ -281,7 +290,7 @@ public class BindingFactory
         }
         if(arguments == null)
         {
-            arguments = Collections.EMPTY_MAP;
+            arguments = Collections.emptyMap();
         }
 
         BindingImpl b = new BindingImpl(bindingKey,queue,exchange,arguments);

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java Mon May 31 16:03:41 2010
@@ -25,6 +25,7 @@ import java.util.List;
 import org.apache.commons.configuration.CompositeConfiguration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.qpid.exchange.ExchangeDefaults;
 import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin;
 
 public class QueueConfiguration extends ConfigurationPlugin
@@ -109,7 +110,7 @@ public class QueueConfiguration extends 
 
     public String getExchange()
     {
-        return getStringValue("exchange", null);
+        return getStringValue("exchange", ExchangeDefaults.DEFAULT_EXCHANGE_NAME.asString());
     }
 
     public List getRoutingKeys()

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java Mon May 31 16:03:41 2010
@@ -20,6 +20,15 @@
 
 package org.apache.qpid.server.configuration;
 
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+
 import org.apache.commons.configuration.CompositeConfiguration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
@@ -27,26 +36,17 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.SystemConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.log4j.Logger;
 import org.apache.qpid.server.configuration.management.ConfigurationManagementMBean;
 import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin;
-import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory;
+import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
-import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.transport.NetworkDriverConfiguration;
 
 import sun.misc.Signal;
 import sun.misc.SignalHandler;
 
-import java.io.File;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-
 public class ServerConfiguration extends ConfigurationPlugin implements SignalHandler
 {
     protected static final Logger _logger = Logger.getLogger(ServerConfiguration.class);
@@ -63,17 +63,22 @@ public class ServerConfiguration extends
     public static final int DEFAULT_SSL_PORT = 8672;
     public static final long DEFAULT_HOUSEKEEPING_PERIOD = 30000L;
     public static final int DEFAULT_JMXPORT = 8999;
+    
+    public static final String QPID_HOME = "QPID_HOME";
+    public static final String QPID_WORK = "QPID_WORK";
+    public static final String LIB_DIR = "lib";
+    public static final String PLUGIN_DIR = "plugins";
+    public static final String CACHE_DIR = "cache";
 
     private Map<String, VirtualHostConfiguration> _virtualHosts = new HashMap<String, VirtualHostConfiguration>();
 
     private File _configFile;
     private File _vhostsFile;
 
-    private Logger _log = LoggerFactory.getLogger(this.getClass());
+    private Logger _log = Logger.getLogger(this.getClass());
 
     private ConfigurationManagementMBean _mbean;
 
-
     // Map of environment variables to config items
     private static final Map<String, String> envVarMap = new HashMap<String, String>();
 
@@ -142,6 +147,7 @@ public class ServerConfiguration extends
         }
         catch (IllegalArgumentException e)
         {
+            _logger.error("Signal HUP not supported for OS: " + System.getProperty("os.name"));
             // We're on something that doesn't handle SIGHUP, how sad, Windows.
         }
     }
@@ -192,7 +198,7 @@ public class ServerConfiguration extends
 
     public String[] getElementsProcessed()
     {
-        return new String[]{""};
+        return new String[] { "" };
     }
 
     @Override
@@ -308,7 +314,6 @@ public class ServerConfiguration extends
      */
     public Locale getLocale()
     {
-
         String localeString = getStringValue(ADVANCED_LOCALE);
         // Expecting locale of format langauge_country_variant
 
@@ -432,10 +437,15 @@ public class ServerConfiguration extends
             _logger.warn(SECURITY_CONFIG_RELOADED);
         }
     }
-
+    
     public String getQpidWork()
     {
-        return System.getProperty("QPID_WORK", System.getProperty("java.io.tmpdir"));
+        return System.getProperty(QPID_WORK, System.getProperty("java.io.tmpdir"));
+    }
+    
+    public String getQpidHome()
+    {
+        return System.getProperty(QPID_HOME);
     }
 
     public void setJMXManagementPort(int mport)
@@ -467,11 +477,16 @@ public class ServerConfiguration extends
     {
         return _virtualHosts.keySet().toArray(new String[_virtualHosts.size()]);
     }
-
+    
     public String getPluginDirectory()
     {
         return getStringValue("plugin-directory");
     }
+    
+    public String getCacheDirectory()
+    {
+        return getStringValue("cache-directory");
+    }
 
     public VirtualHostConfiguration getVirtualHostConfig(String name)
     {

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java Mon May 31 16:03:41 2010
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.server.exchange;
 
+import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
 import org.apache.qpid.server.management.AMQManagedObject;
 import org.apache.qpid.server.management.ManagedObject;
 import org.apache.qpid.server.management.ManagedObjectRegistry;
@@ -32,6 +34,7 @@ import org.apache.qpid.management.common
 import org.apache.qpid.framing.AMQShortString;
 
 import javax.management.openmbean.*;
+import javax.management.MBeanException;
 import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectName;
 import javax.management.MalformedObjectNameException;
@@ -133,7 +136,15 @@ public abstract class AbstractExchangeMB
         }
 
         CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger()));
-        vhost.getBindingFactory().addBinding(binding,queue,getExchange(),null);
+        try
+        {
+            vhost.getBindingFactory().addBinding(binding,queue,getExchange(),null);
+        }
+        catch (AMQException ex)
+        {
+            JMException jme = new JMException(ex.toString());
+            throw new MBeanException(jme, "Error creating new binding " + binding);
+        }
         CurrentActor.remove();
     }
-} // End of MBean class
+}

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java Mon May 31 16:03:41 2010
@@ -26,9 +26,12 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.log4j.Logger;
+import org.apache.qpid.AMQConnectionException;
 import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
 import org.apache.qpid.AMQUnknownExchangeType;
 import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.qmf.ManagementExchange;
 import org.apache.qpid.server.configuration.VirtualHostConfiguration;
 import org.apache.qpid.server.registry.ApplicationRegistry;
@@ -79,27 +82,26 @@ public class DefaultExchangeFactory impl
     public Exchange createExchange(String exchange, String type, boolean durable, boolean autoDelete)
             throws AMQException
     {
-        ExchangeType<? extends Exchange> exchType = _exchangeClassMap.get(new AMQShortString(type));
-        if (exchType == null)
-        {
-
-            throw new AMQUnknownExchangeType("Unknown exchange type: " + type,null);
-        }
-        Exchange e = exchType.newInstance(_host, (new AMQShortString(exchange)).intern(), durable, 0, autoDelete);
-        return e;
-
+        return createExchange(new AMQShortString(exchange), new AMQShortString(type), durable, autoDelete, 0);
     }
 
     public Exchange createExchange(AMQShortString exchange, AMQShortString type, boolean durable, boolean autoDelete,
                                    int ticket)
             throws AMQException
     {
+        // Check access
+        if (!_host.getSecurityManager().authoriseCreateExchange(autoDelete, durable, exchange, null, null, null, type))
+        {
+            String description = "Permission denied: exchange-name '" + exchange.asString() + "'";
+            throw new AMQSecurityException(description);
+        }
+        
         ExchangeType<? extends Exchange> exchType = _exchangeClassMap.get(type);
         if (exchType == null)
         {
-
             throw new AMQUnknownExchangeType("Unknown exchange type: " + type,null);
         }
+        
         Exchange e = exchType.newInstance(_host, exchange, durable, ticket, autoDelete);
         return e;
     }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java Mon May 31 16:03:41 2010
@@ -20,18 +20,18 @@
  */
 package org.apache.qpid.server.exchange;
 
+import java.util.Collection;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
 import org.apache.log4j.Logger;
 import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
 import org.apache.qpid.framing.AMQShortString;
-import org.apache.qpid.server.exchange.ExchangeInitialiser;
 import org.apache.qpid.server.queue.IncomingMessage;
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 
-import java.util.Collection;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
 public class DefaultExchangeRegistry implements ExchangeRegistry
 {
     private static final Logger _log = Logger.getLogger(DefaultExchangeRegistry.class);
@@ -87,7 +87,14 @@ public class DefaultExchangeRegistry imp
 
     public void unregisterExchange(AMQShortString name, boolean inUse) throws AMQException
     {
+        // Check access
+        if (!_host.getSecurityManager().authoriseDelete(_exchangeMap.get(name)))
+        {
+            throw new AMQSecurityException();
+        }
+        
         // TODO: check inUse argument
+
         Exchange e = _exchangeMap.remove(name);
         _exchangeMapStr.remove(name.toString());
         if (e != null)

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java Mon May 31 16:03:41 2010
@@ -21,6 +21,7 @@
 package org.apache.qpid.server.exchange;
 
 import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.framing.FieldTable;
 
@@ -138,6 +139,6 @@ public interface Exchange extends Exchan
 
     public static interface Task
     {
-        public void onClose(Exchange exchange);
+        public void onClose(Exchange exchange) throws AMQSecurityException;
     }
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java Mon May 31 16:03:41 2010
@@ -22,8 +22,6 @@ package org.apache.qpid.server.exchange;
 
 import java.util.Collection;
 
-import org.apache.commons.configuration.Configuration;
-
 import org.apache.qpid.AMQException;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.server.configuration.VirtualHostConfiguration;

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java Mon May 31 16:03:41 2010
@@ -674,13 +674,22 @@ public class Bridge implements BridgeCon
             options.put("qpid.trace.exclude", _link.getFederationTag());
             options.put("qpid.trace.id",_link.getRemoteFederationTag());
 
-            _queue = AMQQueueFactory.createAMQQueueImpl(_tmpQueueName,
+            try
+            {
+                _queue = AMQQueueFactory.createAMQQueueImpl(_tmpQueueName,
                                                         isDurable(),
                                                         _link.getFederationTag(),
                                                         false,
                                                         false,
-                                                        getVirtualHost(), options);
-
+                                                        getVirtualHost(),
+                                                        options);
+            }
+            catch (AMQException e)
+            {
+                // TODO
+                throw new RuntimeException(e);
+            }
+                
             FlowCreditManager_0_10 creditManager = new WindowCreditManager(0xFFFFFFFF,getMessageWindowSize());
 
             Subscription_0_10 sub = new Subscription_0_10((ServerSession)session,
@@ -695,14 +704,13 @@ public class Bridge implements BridgeCon
             try
             {
                 _queue.registerSubscription(sub, true);
+                getVirtualHost().getBindingFactory().addBinding(_key, _queue, exchange, Collections.<String, Object>emptyMap());
             }
             catch (AMQException e)
             {
                 // TODO
                 throw new RuntimeException(e);
             }
-
-            getVirtualHost().getBindingFactory().addBinding(_key, _queue, exchange, Collections.EMPTY_MAP);
         }
 
         public void close()

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java Mon May 31 16:03:41 2010
@@ -51,9 +51,6 @@ public class BasicConsumeMethodHandler i
     {
         AMQProtocolSession protocolConnection = stateManager.getProtocolSession();
 
-
-
-
         AMQChannel channel = protocolConnection.getChannel(channelId);
 
         VirtualHost vHost = protocolConnection.getVirtualHost();
@@ -93,17 +90,9 @@ public class BasicConsumeMethodHandler i
             }
             else
             {
-
                 final AMQShortString consumerTagName;
 
-                // Check authz
-                if (!vHost.getAccessManager().authoriseConsume(protocolConnection,
-                        body.getExclusive(), body.getNoAck(),
-                        body.getNoLocal(), body.getNowait(), queue))
-                {
-                    throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-                }
-                else if (queue.isExclusive() && !queue.isDurable())
+                if (queue.isExclusive() && !queue.isDurable())
                 {
                     AMQSessionModel session = queue.getExclusiveOwningSession();
                     if (session == null || session.getConnectionModel() != protocolConnection)

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java Mon May 31 16:03:41 2010
@@ -92,13 +92,7 @@ public class BasicGetMethodHandler imple
             }
             else
             {
-
-                //Perform ACLs
-                if (!vHost.getAccessManager().authoriseConsume(protocolConnection, body.getNoAck(), queue))
-                {
-                    throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-                }
-                else if (queue.isExclusive())
+                if (queue.isExclusive())
                 {
                     AMQSessionModel session = queue.getExclusiveOwningSession();
                     if (session == null || session.getConnectionModel() != protocolConnection)

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java Mon May 31 16:03:41 2010
@@ -23,14 +23,13 @@ package org.apache.qpid.server.handler;
 import org.apache.log4j.Logger;
 import org.apache.qpid.AMQException;
 import org.apache.qpid.exchange.ExchangeDefaults;
-import org.apache.qpid.framing.BasicPublishBody;
 import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.BasicPublishBody;
+import org.apache.qpid.framing.abstraction.MessagePublishInfo;
 import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.server.AMQChannel;
-import org.apache.qpid.framing.abstraction.MessagePublishInfo;
 import org.apache.qpid.server.exchange.Exchange;
 import org.apache.qpid.server.protocol.AMQProtocolSession;
-import org.apache.qpid.server.security.access.Permission;
 import org.apache.qpid.server.state.AMQStateManager;
 import org.apache.qpid.server.state.StateAwareMethodListener;
 import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -59,18 +58,17 @@ public class BasicPublishMethodHandler i
             _logger.debug("Publish received on channel " + channelId);
         }
 
-        AMQShortString exchange = body.getExchange();
+        AMQShortString exchangeName = body.getExchange();
         // TODO: check the delivery tag field details - is it unique across the broker or per subscriber?
-        if (exchange == null)
+        if (exchangeName == null)
         {
-            exchange = ExchangeDefaults.DEFAULT_EXCHANGE_NAME;
-
+            exchangeName = ExchangeDefaults.DEFAULT_EXCHANGE_NAME;
         }
 
         VirtualHost vHost = session.getVirtualHost();
-        Exchange e = vHost.getExchangeRegistry().getExchange(exchange);
+        Exchange exch = vHost.getExchangeRegistry().getExchange(exchangeName);
         // if the exchange does not exist we raise a channel exception
-        if (e == null)
+        if (exch == null)
         {
             throw body.getChannelException(AMQConstant.NOT_FOUND, "Unknown exchange name");
         }
@@ -86,17 +84,9 @@ public class BasicPublishMethodHandler i
                 throw body.getChannelNotFoundException(channelId);
             }
 
-            //Access Control
-            if (!vHost.getAccessManager().authorisePublish(session, 
-                    body.getImmediate(), body.getMandatory(), 
-                    body.getRoutingKey(), e))
-            {
-                throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-            }
-
             MessagePublishInfo info = session.getMethodRegistry().getProtocolVersionMethodConverter().convertToInfo(body);
-            info.setExchange(exchange);
-            channel.setPublishFrame(info, e);
+            info.setExchange(exchangeName);
+            channel.setPublishFrame(info, exch);
         }
     }
 

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java Mon May 31 16:03:41 2010
@@ -20,15 +20,19 @@
  */
 package org.apache.qpid.server.handler;
 
-import java.util.UUID;
 import java.io.ByteArrayOutputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
+import java.util.UUID;
 
+import org.apache.log4j.Logger;
 import org.apache.qpid.AMQException;
-import org.apache.qpid.framing.*;
-import org.apache.qpid.framing.amqp_0_91.MethodRegistry_0_91;
+import org.apache.qpid.framing.ChannelOpenBody;
+import org.apache.qpid.framing.ChannelOpenOkBody;
+import org.apache.qpid.framing.MethodRegistry;
+import org.apache.qpid.framing.ProtocolVersion;
 import org.apache.qpid.framing.amqp_0_9.MethodRegistry_0_9;
+import org.apache.qpid.framing.amqp_0_91.MethodRegistry_0_91;
 import org.apache.qpid.framing.amqp_8_0.MethodRegistry_8_0;
 import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.server.AMQChannel;
@@ -39,6 +43,8 @@ import org.apache.qpid.server.virtualhos
 
 public class ChannelOpenHandler implements StateAwareMethodListener<ChannelOpenBody>
 {
+    private static final Logger _logger = Logger.getLogger(ChannelOpenHandler.class);
+    
     private static ChannelOpenHandler _instance = new ChannelOpenHandler();
 
     public static ChannelOpenHandler getInstance()
@@ -54,19 +60,16 @@ public class ChannelOpenHandler implemen
     {
         AMQProtocolSession session = stateManager.getProtocolSession();
         VirtualHost virtualHost = session.getVirtualHost();
-
         
         // Protect the broker against out of order frame request.
         if (virtualHost == null)
         {
             throw new AMQException(AMQConstant.COMMAND_INVALID, "Virtualhost has not yet been set. ConnectionOpen has not been called.", null);
         }
+        _logger.info("Connecting to: " + virtualHost.getName());
 
-        final AMQChannel channel = new AMQChannel(session,channelId,
-                                                  virtualHost.getMessageStore());
-
+        final AMQChannel channel = new AMQChannel(session,channelId, virtualHost.getMessageStore());
         
-
         session.addChannel(channel);
 
         ChannelOpenOkBody response;

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java Mon May 31 16:03:41 2010
@@ -20,18 +20,18 @@
  */
 package org.apache.qpid.server.handler;
 
+import org.apache.log4j.Logger;
 import org.apache.qpid.AMQException;
-import org.apache.qpid.framing.*;
-import org.apache.qpid.framing.amqp_0_91.MethodRegistry_0_91;
-import org.apache.qpid.framing.amqp_0_9.MethodRegistry_0_9;
-import org.apache.qpid.framing.amqp_8_0.MethodRegistry_8_0;
+import org.apache.qpid.framing.AMQMethodBody;
+import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.ConnectionOpenBody;
+import org.apache.qpid.framing.MethodRegistry;
 import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.server.protocol.AMQProtocolSession;
 import org.apache.qpid.server.state.AMQState;
 import org.apache.qpid.server.state.AMQStateManager;
 import org.apache.qpid.server.state.StateAwareMethodListener;
 import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.log4j.Logger;
 
 public class ConnectionOpenMethodHandler implements StateAwareMethodListener<ConnectionOpenBody>
 {
@@ -57,7 +57,6 @@ public class ConnectionOpenMethodHandler
     {
         AMQProtocolSession session = stateManager.getProtocolSession();
 
-
         //ignore leading '/'
         String virtualHostName;
         if ((body.getVirtualHost() != null) && body.getVirtualHost().charAt(0) == '/')
@@ -77,14 +76,15 @@ public class ConnectionOpenMethodHandler
         }
         else
         {
-            session.setVirtualHost(virtualHost);
-
-            //Perform ACL
-            if (!virtualHost.getAccessManager().authoriseConnect(session, virtualHost))
+            // Check virtualhost access
+            if (!virtualHost.getSecurityManager().accessVirtualhost(virtualHostName, session.getRemoteAddress().toString()))
             {
-                throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
+                throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied: '" + virtualHost.getName() + "'");
             }
 
+            session.setVirtualHost(virtualHost);
+            _logger.error(session.getPrincipal().getName());
+
             // See Spec (0.8.2). Section  3.1.2 Virtual Hosts
             if (session.getContextKey() == null)
             {
@@ -97,8 +97,6 @@ public class ConnectionOpenMethodHandler
             stateManager.changeState(AMQState.CONNECTION_OPEN);
 
             session.writeFrame(responseBody.generateFrame(channelId));
-
-
         }
     }
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java Mon May 31 16:03:41 2010
@@ -97,7 +97,7 @@ public class ConnectionSecureOkMethodHan
                                                                 ApplicationRegistry.getInstance().getConfiguration().getHeartBeatDelay());
                 session.writeFrame(tuneBody.generateFrame(0));
                 session.setAuthorizedID(new UsernamePrincipal(ss.getAuthorizationID()));
-                disposeSaslServer(session);
+                disposeSaslServer(session);                
                 break;
             case CONTINUE:
                 stateManager.changeState(AMQState.CONNECTION_NOT_AUTH);

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java Mon May 31 16:03:41 2010
@@ -60,11 +60,11 @@ public class ConnectionStartOkMethodHand
     public void methodReceived(AMQStateManager stateManager, ConnectionStartOkBody body, int channelId) throws AMQException
     {
         AMQProtocolSession session = stateManager.getProtocolSession();
-
+        
         _logger.info("SASL Mechanism selected: " + body.getMechanism());
         _logger.info("Locale selected: " + body.getLocale());
 
-        AuthenticationManager authMgr = ApplicationRegistry.getInstance().getAuthenticationManager();//session.getVirtualHost().getAuthenticationManager();
+        AuthenticationManager authMgr = ApplicationRegistry.getInstance().getAuthenticationManager();
 
         SaslServer ss = null;
         try
@@ -73,8 +73,7 @@ public class ConnectionStartOkMethodHand
 
             if (ss == null)
             {
-                throw body.getConnectionException(AMQConstant.RESOURCE_ERROR, "Unable to create SASL Server:" + body.getMechanism()
-                );
+                throw body.getConnectionException(AMQConstant.RESOURCE_ERROR, "Unable to create SASL Server:" + body.getMechanism());
             }
 
             session.setSaslServer(ss);

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java Mon May 31 16:03:41 2010
@@ -45,8 +45,6 @@ public class ExchangeDeclareHandler impl
         return _instance;
     }
 
-
-
     private ExchangeDeclareHandler()
     {
     }
@@ -58,28 +56,15 @@ public class ExchangeDeclareHandler impl
         ExchangeRegistry exchangeRegistry = virtualHost.getExchangeRegistry();
         ExchangeFactory exchangeFactory = virtualHost.getExchangeFactory();
 
-        if (!body.getPassive())
-        {
-            // Perform ACL if request is not passive
-            if (!virtualHost.getAccessManager().authoriseCreateExchange(session, body.getAutoDelete(),
-                    body.getDurable(), body.getExchange(), body.getInternal(), body.getNowait(), body.getPassive(),
-                    body.getType()))
-            {
-                throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-            }
-
-        }
-
         if (_logger.isDebugEnabled())
         {
             _logger.debug("Request to declare exchange of type " + body.getType() + " with name " + body.getExchange());
         }
+        
         synchronized(exchangeRegistry)
         {
             Exchange exchange = exchangeRegistry.getExchange(body.getExchange());
 
-
-
             if (exchange == null)
             {
                 if(body.getPassive() && ((body.getType() == null) || body.getType().length() ==0))
@@ -90,7 +75,6 @@ public class ExchangeDeclareHandler impl
                 {
                     try
                     {
-
                         exchange = exchangeFactory.createExchange(body.getExchange() == null ? null : body.getExchange().intern(),
                                                                   body.getType() == null ? null : body.getType().intern(),
                                                                   body.getDurable(),
@@ -113,14 +97,12 @@ public class ExchangeDeclareHandler impl
 
                 throw new AMQConnectionException(AMQConstant.NOT_ALLOWED, "Attempt to redeclare exchange: " + body.getExchange() + " of type " + exchange.getTypeShortString() + " to " + body.getType() +".",body.getClazz(), body.getMethod(),body.getMajor(),body.getMinor(),null);
             }
-
         }
         if(!body.getNowait())
         {
             MethodRegistry methodRegistry = session.getMethodRegistry();
             AMQMethodBody responseBody = methodRegistry.createExchangeDeclareOkBody();
             session.writeFrame(responseBody.generateFrame(channelId));
-
         }
     }
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java Mon May 31 16:03:41 2010
@@ -27,7 +27,6 @@ import org.apache.qpid.protocol.AMQConst
 import org.apache.qpid.server.exchange.ExchangeInUseException;
 import org.apache.qpid.server.exchange.ExchangeRegistry;
 import org.apache.qpid.server.protocol.AMQProtocolSession;
-import org.apache.qpid.server.security.access.Permission;
 import org.apache.qpid.server.state.AMQStateManager;
 import org.apache.qpid.server.state.StateAwareMethodListener;
 import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -51,13 +50,6 @@ public class ExchangeDeleteHandler imple
         VirtualHost virtualHost = session.getVirtualHost();
         ExchangeRegistry exchangeRegistry = virtualHost.getExchangeRegistry();
 
-        //Perform ACLs
-        if (!virtualHost.getAccessManager().authoriseDelete(session,
-                exchangeRegistry.getExchange(body.getExchange())))
-        {
-            throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-        }
-
         try
         {
             if(exchangeRegistry.getExchange(body.getExchange()) == null)
@@ -75,6 +67,5 @@ public class ExchangeDeleteHandler imple
             throw body.getChannelException(AMQConstant.IN_USE, "Exchange in use");
             // TODO: sort out consistent channel close mechanism that does all clean up etc.
         }
-
     }
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java Mon May 31 16:03:41 2010
@@ -65,7 +65,6 @@ public class QueueBindHandler implements
         ExchangeRegistry exchangeRegistry = virtualHost.getExchangeRegistry();
         QueueRegistry queueRegistry = virtualHost.getQueueRegistry();
 
-
         final AMQQueue queue;
         final AMQShortString routingKey;
 
@@ -113,14 +112,7 @@ public class QueueBindHandler implements
 
         try
         {
-
-            //Perform ACLs
-            if (!virtualHost.getAccessManager().authoriseBind(protocolConnection, exch,
-                    queue, routingKey))
-            {
-                throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-            }
-            else if (queue.isExclusive() && !queue.isDurable())
+            if (queue.isExclusive() && !queue.isDurable())
             {
                 AMQSessionModel session = queue.getExclusiveOwningSession();
                 if (session == null || session.getConnectionModel() != protocolConnection)

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java Mon May 31 16:03:41 2010
@@ -69,21 +69,9 @@ public class QueueDeclareHandler impleme
         QueueRegistry queueRegistry = virtualHost.getQueueRegistry();
         DurableConfigurationStore store = virtualHost.getDurableConfigurationStore();
 
-
-        if (!body.getPassive())
-        {
-            // Perform ACL if request is not passive
-            if (!virtualHost.getAccessManager().authoriseCreateQueue(protocolConnection, body.getAutoDelete(), body.getDurable(),
-                    body.getExclusive(), body.getNowait(), body.getPassive(), body.getQueue()))
-            {
-                throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-            }
-        }
-
         final AMQShortString queueName;
 
         // if we aren't given a queue name, we create one which we return to the client
-
         if ((body.getQueue() == null) || (body.getQueue().length() == 0))
         {
             queueName = createName();
@@ -94,11 +82,11 @@ public class QueueDeclareHandler impleme
         }
 
         AMQQueue queue;
+        
         //TODO: do we need to check that the queue already exists with exactly the same "configuration"?
 
         synchronized (queueRegistry)
         {
-
             queue = queueRegistry.getQueue(queueName);
 
             AMQSessionModel owningSession = null;
@@ -110,7 +98,6 @@ public class QueueDeclareHandler impleme
 
             if (queue == null)
             {
-
                 if (body.getPassive())
                 {
                     String msg = "Queue: " + queueName + " not found on VirtualHost(" + virtualHost + ").";
@@ -129,9 +116,8 @@ public class QueueDeclareHandler impleme
                         queue.setDeleteOnNoConsumers(true);
                     }
                     queueRegistry.registerQueue(queue);
-                    if(body.getExclusive())
+                    if (body.getExclusive())
                     {
-
                         queue.setExclusiveOwningSession(protocolConnection.getChannel(channelId));
                         queue.setPrincipalHolder(protocolConnection);
 
@@ -153,7 +139,6 @@ public class QueueDeclareHandler impleme
                                 }
                             });
                         }
-
                     }
                     if (autoRegister)
                     {
@@ -239,7 +224,6 @@ public class QueueDeclareHandler impleme
         final AMQQueue queue = AMQQueueFactory.createAMQQueueImpl(queueName, body.getDurable(), owner, body.getAutoDelete(),
                                                                   body.getExclusive(),virtualHost, body.getArguments());
 
-
         if (body.getExclusive() && !body.getDurable())
         {
             final AMQProtocolSession.Task deleteQueueTask =
@@ -263,7 +247,7 @@ public class QueueDeclareHandler impleme
                     session.removeSessionCloseTask(deleteQueueTask);
                 }
             });
-        }// if exclusive and not durable
+        }
 
         return queue;
     }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java Mon May 31 16:03:41 2010
@@ -99,25 +99,18 @@ public class QueueDeleteHandler implemen
             {
                 // TODO - Error code
                 throw body.getChannelException(AMQConstant.IN_USE, "Queue: " + body.getQueue() + " is still used.");
-
             }
             else
             {
-
                 AMQSessionModel session = queue.getExclusiveOwningSession();
-                //Perform ACLs
-                if (!virtualHost.getAccessManager().authoriseDelete(protocolConnection, queue))
-                {
-                    throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-                }
-                else if (queue.isExclusive() && !queue.isDurable() && (session == null || session.getConnectionModel() != protocolConnection))
+                if (queue.isExclusive() && !queue.isDurable() && (session == null || session.getConnectionModel() != protocolConnection))
                 {
                     throw body.getConnectionException(AMQConstant.NOT_ALLOWED,
                                                       "Queue " + queue.getNameShortString() + " is exclusive, but not created on this Connection.");
                 }
+                
                 int purged = queue.delete();
 
-
                 if (queue.isDurable())
                 {
                     store.removeQueue(queue);

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java Mon May 31 16:03:41 2010
@@ -101,12 +101,7 @@ public class QueuePurgeHandler implement
         {
                 AMQSessionModel session = queue.getExclusiveOwningSession();
 
-                //Perform ACLs
-                if (!virtualHost.getAccessManager().authorisePurge(protocolConnection, queue))
-                {
-                    throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-                }
-                else if (queue.isExclusive() && (session == null || session.getConnectionModel() != protocolConnection))
+                if (queue.isExclusive() && (session == null || session.getConnectionModel() != protocolConnection))
                 {
                     throw body.getConnectionException(AMQConstant.NOT_ALLOWED,
                                                       "Queue is exclusive, but not created on this Connection.");

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java Mon May 31 16:03:41 2010
@@ -20,24 +20,23 @@ package org.apache.qpid.server.handler;
  * 
  */
 
-
 import org.apache.log4j.Logger;
-
-import org.apache.qpid.framing.*;
+import org.apache.qpid.AMQException;
+import org.apache.qpid.framing.AMQMethodBody;
+import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.FieldTable;
+import org.apache.qpid.framing.QueueUnbindBody;
 import org.apache.qpid.framing.amqp_0_9.MethodRegistry_0_9;
-import org.apache.qpid.server.state.StateAwareMethodListener;
-import org.apache.qpid.server.state.AMQStateManager;
-import org.apache.qpid.server.protocol.AMQProtocolSession;
-import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.qpid.server.exchange.ExchangeRegistry;
+import org.apache.qpid.protocol.AMQConstant;
+import org.apache.qpid.server.AMQChannel;
 import org.apache.qpid.server.exchange.Exchange;
-import org.apache.qpid.server.queue.QueueRegistry;
+import org.apache.qpid.server.exchange.ExchangeRegistry;
+import org.apache.qpid.server.protocol.AMQProtocolSession;
 import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.AMQChannel;
-import org.apache.qpid.server.security.access.Permission;
-import org.apache.qpid.AMQException;
-import org.apache.qpid.AMQInvalidRoutingKeyException;
-import org.apache.qpid.protocol.AMQConstant;
+import org.apache.qpid.server.queue.QueueRegistry;
+import org.apache.qpid.server.state.AMQStateManager;
+import org.apache.qpid.server.state.StateAwareMethodListener;
+import org.apache.qpid.server.virtualhost.VirtualHost;
 
 public class QueueUnbindHandler implements StateAwareMethodListener<QueueUnbindBody>
 {
@@ -100,12 +99,6 @@ public class QueueUnbindHandler implemen
             throw body.getChannelException(AMQConstant.NOT_FOUND, "Exchange " + body.getExchange() + " does not exist.");
         }
 
-        //Perform ACLs
-        if (!virtualHost.getAccessManager().authoriseUnbind(session, exch, routingKey, queue))
-        {
-            throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
-        }
-
         if(virtualHost.getBindingFactory().getBinding(String.valueOf(routingKey), queue, exch, FieldTable.convertToMap(body.getArguments())) == null)
         {
             throw body.getChannelException(AMQConstant.NOT_FOUND,"No such binding");



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