You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2013/09/20 20:59:50 UTC

svn commit: r1525101 [14/21] - in /qpid/branches/linearstore/qpid: ./ bin/ cpp/ cpp/bindings/ cpp/bindings/qmf/ cpp/bindings/qmf/python/ cpp/bindings/qmf/ruby/ cpp/bindings/qmf/tests/ cpp/bindings/qmf2/ cpp/bindings/qmf2/examples/cpp/ cpp/bindings/qmf2...

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ChannelLogSubject.java Fri Sep 20 18:59:30 2013
@@ -20,20 +20,16 @@
  */
 package org.apache.qpid.server.logging.subjects;
 
-import org.apache.qpid.server.AMQChannel;
-import org.apache.qpid.server.protocol.AMQProtocolSession;
-import org.apache.qpid.server.transport.ServerConnection;
-import org.apache.qpid.server.transport.ServerSession;
+import org.apache.qpid.server.protocol.AMQConnectionModel;
+import org.apache.qpid.server.protocol.AMQSessionModel;
 
 import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CHANNEL_FORMAT;
 
 public class ChannelLogSubject extends AbstractLogSubject
 {
 
-    public ChannelLogSubject(AMQChannel channel)
+    public ChannelLogSubject(AMQSessionModel session)
     {
-        AMQProtocolSession session = channel.getProtocolSession();
-
         /**
          * LOG FORMAT used by the AMQPConnectorActor follows
          * ChannelLogSubject.CHANNEL_FORMAT : con:{0}({1}@{2}/{3})/ch:{4}.
@@ -47,39 +43,14 @@ public class ChannelLogSubject extends A
          * 3 - Virtualhost
          * 4 - Channel ID
          */
+        AMQConnectionModel connection = session.getConnectionModel();
         setLogStringWithFormat(CHANNEL_FORMAT,
-                               session.getSessionID(),
-                               session.getAuthorizedPrincipal().getName(),
-                               session.getRemoteAddress(),
-                               session.getVirtualHost().getName(),
-                               channel.getChannelId());
-    }
+                               connection == null ? -1L : connection.getConnectionId(),
+                               (connection == null || connection.getPrincipalAsString() == null) ? "?" : connection.getPrincipalAsString(),
+                               (connection == null || connection.getRemoteAddressString() == null) ? "?" : connection.getRemoteAddressString(),
+                               (connection == null || connection.getVirtualHostName() == null) ? "?" : connection.getVirtualHostName(),
+                               session.getChannelId());
 
-    public ChannelLogSubject(ServerSession session)
-    {
-        /**
-         * LOG FORMAT used by the AMQPConnectorActor follows
-         * ChannelLogSubject.CHANNEL_FORMAT : con:{0}({1}@{2}/{3})/ch:{4}.
-         *
-         * Uses a MessageFormat call to insert the required values according to
-         * these indices:
-         *
-         * 0 - Connection ID
-         * 1 - User ID
-         * 2 - IP
-         * 3 - Virtualhost
-         * 4 - Channel ID
-         */
-        if(session.getConnection() instanceof ServerConnection)
-        {
-            ServerConnection connection = (ServerConnection) session.getConnection();
-            setLogStringWithFormat(CHANNEL_FORMAT,
-                                   connection == null ? -1L : connection.getConnectionId(),
-                                   session.getAuthorizedPrincipal() == null ? "?" : session.getAuthorizedPrincipal().getName(),
-                                   (connection == null || connection.getRemoteAddressString() == null) ? "?" : connection.getRemoteAddressString(),
-                                   session.getVirtualHost().getName(),
-                                   session.getChannel());
-        }
     }
 
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubject.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubject.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubject.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubject.java Fri Sep 20 18:59:30 2013
@@ -20,34 +20,33 @@
  */
 package org.apache.qpid.server.logging.subjects;
 
-import org.apache.qpid.server.protocol.AMQProtocolSession;
+import java.text.MessageFormat;
+import org.apache.qpid.server.protocol.AMQConnectionModel;
 
 import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CONNECTION_FORMAT;
 import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.SOCKET_FORMAT;
 import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.USER_FORMAT;
 
-import java.text.MessageFormat;
-
 /** The Connection LogSubject */
 public class ConnectionLogSubject extends AbstractLogSubject
 {
 
-    public ConnectionLogSubject(AMQProtocolSession session)
+    // The Session this Actor is representing
+    private AMQConnectionModel _session;
+
+    public ConnectionLogSubject(AMQConnectionModel session)
     {
         _session = session;
     }
 
-    // The Session this Actor is representing
-    private AMQProtocolSession _session;
-
     // Used to stop re-creating the _logString when we reach our final format
     private boolean _upToDate = false;
 
     /**
      * Update the LogString as the Connection process proceeds.
-     * 
+     *
      * When the Session has an authorized ID add that to the string.
-     * 
+     *
      * When the Session then gains a Vhost add that to the string, at this point
      * we can set upToDate = true as the _logString will not need to be updated
      * from this point onwards.
@@ -56,44 +55,44 @@ public class ConnectionLogSubject extend
     {
         if (!_upToDate)
         {
-            if (_session.getAuthorizedPrincipal() != null)
+            if (_session.getPrincipalAsString() != null)
             {
-                if (_session.getVirtualHost() != null)
+                if (_session.getVirtualHostName() != null)
                 {
                     /**
                      * LOG FORMAT used by the AMQPConnectorActor follows
                      * ConnectionLogSubject.CONNECTION_FORMAT :
                      * con:{0}({1}@{2}/{3})
-                     * 
+                     *
                      * Uses a MessageFormat call to insert the required values
                      * according to these indices:
-                     * 
+                     *
                      * 0 - Connection ID 1 - User ID 2 - IP 3 - Virtualhost
                      */
                     setLogString("[" + MessageFormat.format(CONNECTION_FORMAT,
-                                                            _session.getSessionID(),
-                                                            _session.getAuthorizedPrincipal().getName(),
-                                                            _session.getRemoteAddress(),
-                                                            _session.getVirtualHost().getName())
+                                                            _session.getConnectionId(),
+                                                            _session.getPrincipalAsString(),
+                                                            _session.getRemoteAddressString(),
+                                                            _session.getVirtualHostName())
                                  + "] ");
 
                     _upToDate = true;
-                } 
+                }
                 else
                 {
                     setLogString("[" + MessageFormat.format(USER_FORMAT,
-                                                            _session.getSessionID(),
-                                                            _session.getAuthorizedPrincipal().getName(),
-                                                            _session.getRemoteAddress())
+                                                            _session.getConnectionId(),
+                                                            _session.getPrincipalAsString(),
+                                                            _session.getRemoteAddressString())
                                  + "] ");
 
                 }
-            } 
+            }
             else
             {
                     setLogString("[" + MessageFormat.format(SOCKET_FORMAT,
-                                                            _session.getSessionID(),
-                                                            _session.getRemoteAddress())
+                                                            _session.getConnectionId(),
+                                                            _session.getRemoteAddressString())
                                  + "] ");
             }
         }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubject.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubject.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubject.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubject.java Fri Sep 20 18:59:30 2013
@@ -32,6 +32,6 @@ public class ExchangeLogSubject extends 
     public ExchangeLogSubject(Exchange exchange, VirtualHost vhost)
     {
         setLogStringWithFormat(EXCHANGE_FORMAT, vhost.getName(),
-                               exchange.getTypeShortString(), exchange.getNameShortString());
+                               exchange.getType().getType(), exchange.getName());
     }
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/MessageStoreLogSubject.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/MessageStoreLogSubject.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/MessageStoreLogSubject.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/logging/subjects/MessageStoreLogSubject.java Fri Sep 20 18:59:30 2013
@@ -28,8 +28,10 @@ public class MessageStoreLogSubject exte
 {
 
     /** Create an MessageStoreLogSubject that Logs in the following format. */
-    public MessageStoreLogSubject(VirtualHost vhost, String messageStoreName)
+    public MessageStoreLogSubject(String vhostName, String messageStoreName)
     {
-        setLogStringWithFormat(STORE_FORMAT, vhost.getName(), messageStoreName);
+        setLogStringWithFormat(STORE_FORMAT, vhostName, messageStoreName);
     }
+
+
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/message/InboundMessage.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/message/InboundMessage.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/message/InboundMessage.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/message/InboundMessage.java Fri Sep 20 18:59:30 2013
@@ -21,13 +21,11 @@
 package org.apache.qpid.server.message;
 
 
-import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.server.queue.Filterable;
 
 public interface InboundMessage extends Filterable
 {
     String getRoutingKey();
-    AMQShortString getRoutingKeyShortString();
 
     AMQMessageHeader getMessageHeader();
 

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java Fri Sep 20 18:59:30 2013
@@ -66,4 +66,15 @@ public interface AuthenticationProvider 
      */
     SubjectCreator getSubjectCreator();
 
+    /**
+     * Returns the preferences provider associated with this authentication provider
+     * @return PreferencesProvider
+     */
+    PreferencesProvider getPreferencesProvider();
+
+    /**
+     * Sets the preferences provider
+     * @param preferencesProvider
+     */
+    void setPreferencesProvider(PreferencesProvider preferencesProvider);
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Broker.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Broker.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Broker.java Fri Sep 20 18:59:30 2013
@@ -45,6 +45,7 @@ public interface Broker extends Configur
     String SUPPORTED_VIRTUALHOST_TYPES = "supportedVirtualHostTypes";
     String SUPPORTED_VIRTUALHOST_STORE_TYPES = "supportedVirtualHostStoreTypes";
     String SUPPORTED_AUTHENTICATION_PROVIDERS = "supportedAuthenticationProviders";
+    String SUPPORTED_PREFERENCES_PROVIDERS_TYPES = "supportedPreferencesProviderTypes";
     String CREATED = "created";
     String DURABLE = "durable";
     String ID = "id";
@@ -93,6 +94,7 @@ public interface Broker extends Configur
                               SUPPORTED_BROKER_STORE_TYPES,
                               SUPPORTED_VIRTUALHOST_STORE_TYPES,
                               SUPPORTED_AUTHENTICATION_PROVIDERS,
+                              SUPPORTED_PREFERENCES_PROVIDERS_TYPES,
                               CREATED,
                               DURABLE,
                               ID,
@@ -183,4 +185,6 @@ public interface Broker extends Configur
     TaskExecutor getTaskExecutor();
 
     boolean isManagementMode();
+
+    AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress);
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/KeyStore.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/KeyStore.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/KeyStore.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/KeyStore.java Fri Sep 20 18:59:30 2013
@@ -20,9 +20,11 @@
  */
 package org.apache.qpid.server.model;
 
+import java.security.GeneralSecurityException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import javax.net.ssl.KeyManager;
 
 public interface KeyStore extends ConfiguredObject
 {
@@ -64,4 +66,7 @@ public interface KeyStore extends Config
     public String getPassword();
 
     public void setPassword(String password);
+
+    public KeyManager[] getKeyManagers() throws GeneralSecurityException;
+
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Model.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Model.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Model.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Model.java Fri Sep 20 18:59:30 2013
@@ -70,6 +70,7 @@ public class Model
         addRelationship(VirtualHost.class, VirtualHostAlias.class);
 
         addRelationship(AuthenticationProvider.class, User.class);
+        addRelationship(AuthenticationProvider.class, PreferencesProvider.class);
         addRelationship(User.class, GroupMember.class);
 
         addRelationship(GroupProvider.class, Group.class);
@@ -77,12 +78,12 @@ public class Model
 
         addRelationship(Connection.class, Session.class);
 
-        addRelationship(Exchange.class, Binding.class);
-        addRelationship(Exchange.class, Publisher.class);
-
         addRelationship(Queue.class, Binding.class);
         addRelationship(Queue.class, Consumer.class);
 
+        addRelationship(Exchange.class, Binding.class);
+        addRelationship(Exchange.class, Publisher.class);
+
         addRelationship(Session.class, Consumer.class);
         addRelationship(Session.class, Publisher.class);
     }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Queue.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Queue.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Queue.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Queue.java Fri Sep 20 18:59:30 2013
@@ -89,6 +89,7 @@ public interface Queue extends Configure
     public static final String EXCLUSIVE = "exclusive";
     public static final String MESSAGE_GROUP_KEY = "messageGroupKey";
     public static final String MESSAGE_GROUP_SHARED_GROUPS = "messageGroupSharedGroups";
+    public static final String MESSAGE_GROUP_DEFAULT_GROUP = "messageGroupDefaultGroup";
     public static final String LVQ_KEY = "lvqKey";
     public static final String MAXIMUM_DELIVERY_ATTEMPTS = "maximumDeliveryAttempts";
     public static final String NO_LOCAL = "noLocal";
@@ -100,6 +101,10 @@ public interface Queue extends Configure
     public static final String TYPE = "type";
     public static final String PRIORITIES = "priorities";
 
+    public static final String CREATE_DLQ_ON_CREATION = "x-qpid-dlq-enabled"; // TODO - this value should change
+
+    public static final String FEDERATION_EXCLUDES = "federationExcludes";
+    public static final String FEDERATION_ID = "federationId";
 
 
     public static final Collection<String> AVAILABLE_ATTRIBUTES =
@@ -134,6 +139,7 @@ public interface Queue extends Configure
                                   PRIORITIES
                     ));
 
+
     //children
     Collection<Binding> getBindings();
     Collection<Consumer> getConsumers();
@@ -144,6 +150,6 @@ public interface Queue extends Configure
     void visit(QueueEntryVisitor visitor);
 
     void delete();
-    
+
     void setNotificationListener(QueueNotificationListener listener);
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/TrustStore.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/TrustStore.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/TrustStore.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/TrustStore.java Fri Sep 20 18:59:30 2013
@@ -20,9 +20,11 @@
  */
 package org.apache.qpid.server.model;
 
+import java.security.GeneralSecurityException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import javax.net.ssl.TrustManager;
 
 public interface TrustStore extends ConfiguredObject
 {
@@ -64,4 +66,8 @@ public interface TrustStore extends Conf
     public String getPassword();
 
     public void setPassword(String password);
+
+    public TrustManager[] getTrustManagers() throws GeneralSecurityException;
+
+
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/UUIDGenerator.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/UUIDGenerator.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/UUIDGenerator.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/UUIDGenerator.java Fri Sep 20 18:59:30 2013
@@ -92,4 +92,9 @@ public class UUIDGenerator
     {
         return createUUID(type, childName);
     }
+
+    public static UUID generatePreferencesProviderUUID(String preferencesProviderName, String authenticationProviderName)
+    {
+        return createUUID(PreferencesProvider.class.getName(), authenticationProviderName, preferencesProviderName);
+    }
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/User.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/User.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/User.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/User.java Fri Sep 20 18:59:30 2013
@@ -24,6 +24,7 @@ package org.apache.qpid.server.model;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Map;
 
 public interface User extends ConfiguredObject
 {
@@ -54,4 +55,11 @@ public interface User extends Configured
 
     public void setPassword(String password);
 
+    public Map<String, Object> getPreferences();
+
+    public Object getPreference(String name);
+
+    public Map<String, Object> setPreferences(Map<String, Object> preferences);
+
+    public Map<String, Object> replacePreferences(Map<String, Object> newPreferences);
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/VirtualHost.java Fri Sep 20 18:59:30 2013
@@ -74,6 +74,8 @@ public interface VirtualHost extends Con
     String STORE_TRANSACTION_OPEN_TIMEOUT_WARN  = "storeTransactionOpenTimeoutWarn";
     String STORE_TYPE                           = "storeType";
     String STORE_PATH                           = "storePath";
+    String CONFIG_STORE_TYPE                    = "configStoreType";
+    String CONFIG_STORE_PATH                    = "configStorePath";
     String SUPPORTED_EXCHANGE_TYPES             = "supportedExchangeTypes";
     String SUPPORTED_QUEUE_TYPES                = "supportedQueueTypes";
     String CREATED                              = "created";
@@ -107,6 +109,8 @@ public interface VirtualHost extends Con
                             QUEUE_MAXIMUM_DELIVERY_ATTEMPTS,
                             QUEUE_FLOW_CONTROL_SIZE_BYTES,
                             QUEUE_FLOW_RESUME_SIZE_BYTES,
+                            CONFIG_STORE_TYPE,
+                            CONFIG_STORE_PATH,
                             STORE_TYPE,
                             STORE_PATH,
                             STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE,
@@ -120,6 +124,8 @@ public interface VirtualHost extends Con
                             QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES,
                             CONFIG_PATH));
 
+    int CURRENT_CONFIG_VERSION = 3;
+
     //children
     Collection<VirtualHostAlias> getAliases();
     Collection<Connection> getConnections();

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java Fri Sep 20 18:59:30 2013
@@ -39,7 +39,7 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.configuration.updater.SetAttributeTask;
 import org.apache.qpid.server.configuration.updater.TaskExecutor;
 
-abstract class AbstractAdapter implements ConfiguredObject
+public abstract class AbstractAdapter implements ConfiguredObject
 {
     private static final Object ID = "id";
     private final Map<String,Object> _attributes = new HashMap<String, Object>();

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java Fri Sep 20 18:59:30 2013
@@ -21,18 +21,21 @@ package org.apache.qpid.server.model.ada
 
 import static org.apache.qpid.transport.ConnectionSettings.WILDCARD_ADDRESS;
 
-import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
+import javax.net.ssl.KeyManager;
 import javax.net.ssl.SSLContext;
 
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
 import org.apache.qpid.server.configuration.BrokerProperties;
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
 import org.apache.qpid.server.logging.actors.CurrentActor;
@@ -46,10 +49,9 @@ import org.apache.qpid.server.model.Trus
 import org.apache.qpid.server.configuration.updater.TaskExecutor;
 import org.apache.qpid.server.protocol.AmqpProtocolVersion;
 import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory;
-import org.apache.qpid.server.util.MapValueConverter;
-import org.apache.qpid.ssl.SSLContextFactory;
 import org.apache.qpid.transport.NetworkTransportConfiguration;
 import org.apache.qpid.transport.network.IncomingNetworkTransport;
+import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager;
 
 public class AmqpPortAdapter extends PortAdapter
 {
@@ -136,8 +138,8 @@ public class AmqpPortAdapter extends Por
     private SSLContext createSslContext()
     {
         KeyStore keyStore = getKeyStore();
-
         Collection<TrustStore> trustStores = getTrustStores();
+
         boolean needClientCert = (Boolean)getAttribute(NEED_CLIENT_AUTH) || (Boolean)getAttribute(WANT_CLIENT_AUTH);
         if (needClientCert && trustStores.isEmpty())
         {
@@ -145,44 +147,58 @@ public class AmqpPortAdapter extends Por
                     + this.getName() + "' but no trust store defined");
         }
 
-        String keystorePath = (String)keyStore.getAttribute(KeyStore.PATH);
-        String keystorePassword = keyStore.getPassword();
-        String keystoreType = (String)keyStore.getAttribute(KeyStore.TYPE);
-        String keyManagerFactoryAlgorithm = (String)keyStore.getAttribute(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM);
-        String certAlias = (String)keyStore.getAttribute(KeyStore.CERTIFICATE_ALIAS);
-
-        final SSLContext sslContext;
         try
         {
-            if(! trustStores.isEmpty())
+            SSLContext sslContext = SSLContext.getInstance("TLS");
+            KeyManager[] keyManagers = keyStore.getKeyManagers();
+
+            TrustManager[] trustManagers;
+            if(trustStores == null || trustStores.isEmpty())
             {
-                Collection<SSLContextFactory.TrustStoreWrapper> trstWrappers = new ArrayList<SSLContextFactory.TrustStoreWrapper>();
-                for (TrustStore trustStore : trustStores)
-                {
-                    trstWrappers.add(new SSLContextFactory.TrustStoreWrapper((String)trustStore.getAttribute(TrustStore.PATH),
-                                                                             trustStore.getPassword(),
-                                                                             (String)trustStore.getAttribute(TrustStore.TYPE),
-                                                                             (Boolean) trustStore.getAttribute(TrustStore.PEERS_ONLY),
-                                                                             (String)trustStore.getAttribute(TrustStore.TRUST_MANAGER_FACTORY_ALGORITHM)));
-                }
-                sslContext = SSLContextFactory.buildClientContext(trstWrappers, keystorePath,
-                                                                  keystorePassword, keystoreType,
-                                                                  keyManagerFactoryAlgorithm, certAlias);
+                trustManagers = null;
+            }
+            else if(trustStores.size() == 1)
+            {
+                trustManagers = trustStores.iterator().next().getTrustManagers();
             }
             else
             {
-                sslContext = SSLContextFactory.buildServerContext(keystorePath, keystorePassword, keystoreType, keyManagerFactoryAlgorithm);
+                Collection<TrustManager> trustManagerList = new ArrayList<TrustManager>();
+                final QpidMultipleTrustManager mulTrustManager = new QpidMultipleTrustManager();
+
+                for(TrustStore ts : trustStores)
+                {
+                    TrustManager[] managers = ts.getTrustManagers();
+                    if(managers != null)
+                    {
+                        for(TrustManager manager : managers)
+                        {
+                            if(manager instanceof X509TrustManager)
+                            {
+                                mulTrustManager.addTrustManager((X509TrustManager)manager);
+                            }
+                            else
+                            {
+                                trustManagerList.add(manager);
+                            }
+                        }
+                    }
+                }
+                if(!mulTrustManager.isEmpty())
+                {
+                    trustManagerList.add(mulTrustManager);
+                }
+                trustManagers = trustManagerList.toArray(new TrustManager[trustManagerList.size()]);
             }
+            sslContext.init(keyManagers, trustManagers, null);
+
+            return sslContext;
+
         }
         catch (GeneralSecurityException e)
         {
             throw new RuntimeException("Unable to create SSLContext for key or trust store", e);
         }
-        catch (IOException e)
-        {
-            throw new RuntimeException("Unable to create SSLContext - unable to load key/trust store", e);
-        }
-        return sslContext;
     }
 
     private AmqpProtocolVersion getDefaultAmqpSupportedReply()

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java Fri Sep 20 18:59:30 2013
@@ -43,6 +43,7 @@ import org.apache.qpid.server.model.Inte
 import org.apache.qpid.server.model.LifetimePolicy;
 import org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProvider;
 import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.PreferencesProvider;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.Statistics;
 import org.apache.qpid.server.model.UUIDGenerator;
@@ -51,11 +52,11 @@ import org.apache.qpid.server.model.Virt
 import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
 import org.apache.qpid.server.plugin.QpidServiceLoader;
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.configuration.updater.TaskExecutor;
 import org.apache.qpid.server.security.SubjectCreator;
 import org.apache.qpid.server.security.access.Operation;
 import org.apache.qpid.server.security.auth.UsernamePrincipal;
 import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
+import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory;
 import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
 import org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthenticationManager;
 import org.apache.qpid.server.security.SecurityManager;
@@ -70,9 +71,11 @@ public abstract class AuthenticationProv
 
     protected Collection<String> _supportedAttributes;
     protected Map<String, AuthenticationManagerFactory> _factories;
-    private AtomicReference<State> _state;
+    private final AtomicReference<State> _state;
+    private PreferencesProviderCreator _preferencesProviderCreator;
+    private PreferencesProvider _preferencesProvider;
 
-    private AuthenticationProviderAdapter(UUID id, Broker broker, final T authManager, Map<String, Object> attributes, Collection<String> attributeNames)
+    private AuthenticationProviderAdapter(UUID id, Broker broker, final T authManager, Map<String, Object> attributes, Collection<String> attributeNames, PreferencesProviderCreator preferencesProviderCreator)
     {
         super(id, null, null, broker.getTaskExecutor());
         _authManager = authManager;
@@ -84,6 +87,8 @@ public abstract class AuthenticationProv
         _state = new AtomicReference<State>(state);
         addParent(Broker.class, broker);
 
+        _preferencesProviderCreator = preferencesProviderCreator;
+
         // set attributes now after all attribute names are known
         if (attributes != null)
         {
@@ -210,9 +215,14 @@ public abstract class AuthenticationProv
         return super.getAttribute(name);
     }
 
+    @SuppressWarnings("unchecked")
     @Override
     public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
     {
+        if (clazz == PreferencesProvider.class && _preferencesProvider != null)
+        {
+            return (Collection<C>)Collections.<PreferencesProvider>singleton(_preferencesProvider);
+        }
         return Collections.emptySet();
     }
 
@@ -240,6 +250,10 @@ public abstract class AuthenticationProv
             {
                 _authManager.close();
                 _authManager.onDelete();
+                if (_preferencesProvider != null)
+                {
+                    _preferencesProvider.setDesiredState(_preferencesProvider.getActualState(), State.DELETED);
+                }
                 return true;
             }
             else
@@ -254,6 +268,10 @@ public abstract class AuthenticationProv
                 try
                 {
                     _authManager.initialise();
+                    if (_preferencesProvider != null)
+                    {
+                        _preferencesProvider.setDesiredState(_preferencesProvider.getActualState(), State.ACTIVE);
+                    }
                     return true;
                 }
                 catch(RuntimeException e)
@@ -286,6 +304,10 @@ public abstract class AuthenticationProv
             if (_state.compareAndSet(state, State.STOPPED))
             {
                 _authManager.close();
+                if (_preferencesProvider != null)
+                {
+                    _preferencesProvider.setDesiredState(_preferencesProvider.getActualState(), State.STOPPED);
+                }
                 return true;
             }
             else
@@ -397,24 +419,43 @@ public abstract class AuthenticationProv
         }
     }
 
-    public static class SimpleAuthenticationProviderAdapter extends AuthenticationProviderAdapter<AuthenticationManager>
+    public PreferencesProvider getPreferencesProvider()
     {
+        return _preferencesProvider;
+    }
 
-        public SimpleAuthenticationProviderAdapter(
-                UUID id, Broker broker, AuthenticationManager authManager, Map<String, Object> attributes, Collection<String> attributeNames)
+    public void setPreferencesProvider(PreferencesProvider provider)
+    {
+        if (AnonymousAuthenticationManagerFactory.PROVIDER_TYPE.equals(getAttribute(TYPE)))
         {
-            super(id, broker,authManager, attributes, attributeNames);
+            throw new IllegalConfigurationException("Cannot set preferences provider for anonymous authentication provider");
         }
+        _preferencesProvider = provider;
+    }
 
-        @Override
-        public <C extends ConfiguredObject> C createChild(Class<C> childClass,
-                                                          Map<String, Object> attributes,
-                                                          ConfiguredObject... otherParents)
+    @SuppressWarnings("unchecked")
+    @Override
+    public <C extends ConfiguredObject> C addChild(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
+    {
+        if(childClass == PreferencesProvider.class)
         {
-            throw new UnsupportedOperationException();
+            String name = MapValueConverter.getStringAttribute(PreferencesProvider.NAME, attributes);
+            PreferencesProvider pp = _preferencesProviderCreator.create(UUIDGenerator.generatePreferencesProviderUUID(name, getName()), attributes, this);
+            pp.setDesiredState(State.INITIALISING, State.ACTIVE);
+            _preferencesProvider = pp;
+            return (C)pp;
         }
+        throw new IllegalArgumentException("Cannot create child of class " + childClass.getSimpleName());
+    }
 
+    public static class SimpleAuthenticationProviderAdapter extends AuthenticationProviderAdapter<AuthenticationManager>
+    {
 
+        public SimpleAuthenticationProviderAdapter(
+                UUID id, Broker broker, AuthenticationManager authManager, Map<String, Object> attributes, Collection<String> attributeNames, PreferencesProviderCreator preferencesProviderCreator)
+        {
+            super(id, broker,authManager, attributes, attributeNames, preferencesProviderCreator);
+        }
     }
 
     public static class PrincipalDatabaseAuthenticationManagerAdapter
@@ -422,9 +463,9 @@ public abstract class AuthenticationProv
             implements PasswordCredentialManagingAuthenticationProvider
     {
         public PrincipalDatabaseAuthenticationManagerAdapter(
-                UUID id, Broker broker, PrincipalDatabaseAuthenticationManager authManager, Map<String, Object> attributes, Collection<String> attributeNames)
+                UUID id, Broker broker, PrincipalDatabaseAuthenticationManager authManager, Map<String, Object> attributes, Collection<String> attributeNames, PreferencesProviderCreator preferencesProviderCreator)
         {
-            super(id, broker, authManager, attributes, attributeNames);
+            super(id, broker, authManager, attributes, attributeNames, preferencesProviderCreator);
         }
 
         @Override
@@ -507,7 +548,7 @@ public abstract class AuthenticationProv
                 if(createUser(username, password,null))
                 {
                     @SuppressWarnings("unchecked")
-                    C pricipalAdapter = (C) new PrincipalAdapter(p, getTaskExecutor());
+                    C pricipalAdapter = (C) new PrincipalAdapter(p);
                     return pricipalAdapter;
                 }
                 else
@@ -529,7 +570,7 @@ public abstract class AuthenticationProv
                 Collection<User> principals = new ArrayList<User>(users.size());
                 for(Principal user : users)
                 {
-                    principals.add(new PrincipalAdapter(user, getTaskExecutor()));
+                    principals.add(new PrincipalAdapter(user));
                 }
                 @SuppressWarnings("unchecked")
                 Collection<C> unmodifiablePrincipals = (Collection<C>) Collections.unmodifiableCollection(principals);
@@ -544,22 +585,33 @@ public abstract class AuthenticationProv
         @Override
         protected void childAdded(ConfiguredObject child)
         {
-            // no-op, prevent storing users in the broker store
+            if (child instanceof User)
+            {
+                // no-op, prevent storing users in the broker store
+                return;
+            }
+            super.childAdded(child);
         }
 
         @Override
         protected void childRemoved(ConfiguredObject child)
         {
-            // no-op, as per above, users are not in the store
+            if (child instanceof User)
+            {
+                // no-op, as per above, users are not in the store
+                return;
+            }
+            super.childRemoved(child);
         }
 
         private class PrincipalAdapter extends AbstractAdapter implements User
         {
             private final Principal _user;
 
-            public PrincipalAdapter(Principal user, TaskExecutor taskExecutor)
+            public PrincipalAdapter(Principal user)
             {
-                super(UUIDGenerator.generateUserUUID(PrincipalDatabaseAuthenticationManagerAdapter.this.getName(), user.getName()), taskExecutor);
+                super(UUIDGenerator.generateUserUUID(PrincipalDatabaseAuthenticationManagerAdapter.this.getName(), user.getName()),
+                        PrincipalDatabaseAuthenticationManagerAdapter.this.getTaskExecutor());
                 _user = user;
 
             }
@@ -699,7 +751,13 @@ public abstract class AuthenticationProv
                 {
                     try
                     {
-                        deleteUser(_user.getName());
+                        String userName = _user.getName();
+                        deleteUser(userName);
+                        PreferencesProvider preferencesProvider = getPreferencesProvider();
+                        if (preferencesProvider != null)
+                        {
+                            preferencesProvider.deletePreferences(userName);
+                        }
                     }
                     catch (AccountNotFoundException e)
                     {
@@ -709,6 +767,60 @@ public abstract class AuthenticationProv
                 }
                 return false;
             }
+
+            @Override
+            public Map<String, Object> getPreferences()
+            {
+                PreferencesProvider preferencesProvider = getPreferencesProvider();
+                if (preferencesProvider == null)
+                {
+                    return null;
+                }
+                return preferencesProvider.getPreferences(this.getName());
+            }
+
+            @Override
+            public Object getPreference(String name)
+            {
+                Map<String, Object> preferences = getPreferences();
+                if (preferences == null)
+                {
+                    return null;
+                }
+                return preferences.get(name);
+            }
+
+            @Override
+            public Map<String, Object> setPreferences(Map<String, Object> preferences)
+            {
+                PreferencesProvider preferencesProvider = getPreferencesProvider();
+                if (preferencesProvider == null)
+                {
+                    return null;
+                }
+                return preferencesProvider.setPreferences(this.getName(), preferences);
+            }
+
+            @Override
+            public Map<String, Object> replacePreferences(Map<String, Object> newPreferences)
+            {
+                PreferencesProvider preferencesProvider = getPreferencesProvider();
+                if (preferencesProvider == null)
+                {
+                    return null;
+                }
+                Map<String, Object> preferences = preferencesProvider.deletePreferences(this.getName());
+                preferencesProvider.setPreferences(this.getName(), newPreferences);
+                return preferences;
+            }
+
+            private PreferencesProvider getPreferencesProvider()
+            {
+                return PrincipalDatabaseAuthenticationManagerAdapter.this.getPreferencesProvider();
+            }
+
         }
+
     }
+
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java Fri Sep 20 18:59:30 2013
@@ -42,9 +42,11 @@ public class AuthenticationProviderFacto
 {
     private final Iterable<AuthenticationManagerFactory> _factories;
     private Collection<String> _supportedAuthenticationProviders;
+    private final PreferencesProviderCreator _preferencesProviderCreator;
 
-    public AuthenticationProviderFactory(QpidServiceLoader<AuthenticationManagerFactory> authManagerFactoryServiceLoader)
+    public AuthenticationProviderFactory(QpidServiceLoader<AuthenticationManagerFactory> authManagerFactoryServiceLoader, PreferencesProviderCreator preferencesProviderCreator)
     {
+        _preferencesProviderCreator = preferencesProviderCreator;
         _factories = authManagerFactoryServiceLoader.atLeastOneInstanceOf(AuthenticationManagerFactory.class);
         List<String> supportedAuthenticationProviders = new ArrayList<String>();
         for (AuthenticationManagerFactory factory : _factories)
@@ -89,11 +91,11 @@ public class AuthenticationProviderFacto
                 if (manager instanceof PrincipalDatabaseAuthenticationManager)
                 {
                     authenticationProvider = new PrincipalDatabaseAuthenticationManagerAdapter(id, broker,
-                            (PrincipalDatabaseAuthenticationManager) manager, attributes, factory.getAttributeNames());
+                            (PrincipalDatabaseAuthenticationManager) manager, attributes, factory.getAttributeNames(), _preferencesProviderCreator);
                 }
                 else
                 {
-                    authenticationProvider = new SimpleAuthenticationProviderAdapter(id, broker, manager, attributes, factory.getAttributeNames());
+                    authenticationProvider = new SimpleAuthenticationProviderAdapter(id, broker, manager, attributes, factory.getAttributeNames(), _preferencesProviderCreator);
                 }
                 return authenticationProvider;
             }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Fri Sep 20 18:59:30 2013
@@ -178,7 +178,7 @@ public class BrokerAdapter extends Abstr
     private final GroupProviderFactory _groupProviderFactory;
     private final AuthenticationProviderFactory _authenticationProviderFactory;
     private final AccessControlProviderFactory _accessControlProviderFactory;
-
+    private final PreferencesProviderCreator _preferencesProviderCreator;
     private final PortFactory _portFactory;
     private final SecurityManager _securityManager;
 
@@ -191,8 +191,8 @@ public class BrokerAdapter extends Abstr
 
     public BrokerAdapter(UUID id, Map<String, Object> attributes, StatisticsGatherer statisticsGatherer, VirtualHostRegistry virtualHostRegistry,
             LogRecorder logRecorder, RootMessageLogger rootMessageLogger, AuthenticationProviderFactory authenticationProviderFactory,
-            GroupProviderFactory groupProviderFactory, AccessControlProviderFactory accessControlProviderFactory, PortFactory portFactory, TaskExecutor taskExecutor,
-            ConfigurationEntryStore brokerStore, BrokerOptions brokerOptions)
+            GroupProviderFactory groupProviderFactory, AccessControlProviderFactory accessControlProviderFactory, PortFactory portFactory,
+            PreferencesProviderCreator preferencesProviderCreatory, TaskExecutor taskExecutor, ConfigurationEntryStore brokerStore, BrokerOptions brokerOptions)
     {
         super(id, DEFAULTS,  MapValueConverter.convert(attributes, ATTRIBUTE_TYPES), taskExecutor);
         _statisticsGatherer = statisticsGatherer;
@@ -201,6 +201,7 @@ public class BrokerAdapter extends Abstr
         _rootMessageLogger = rootMessageLogger;
         _statistics = new StatisticsAdapter(statisticsGatherer);
         _authenticationProviderFactory = authenticationProviderFactory;
+        _preferencesProviderCreator = preferencesProviderCreatory;
         _groupProviderFactory = groupProviderFactory;
         _accessControlProviderFactory = accessControlProviderFactory;
         _portFactory = portFactory;
@@ -213,7 +214,7 @@ public class BrokerAdapter extends Abstr
         {
             AuthenticationManager authManager = new SimpleAuthenticationManager(BrokerOptions.MANAGEMENT_MODE_USER_NAME, _brokerOptions.getManagementModePassword());
             AuthenticationProvider authenticationProvider = new SimpleAuthenticationProviderAdapter(UUID.randomUUID(), this,
-                    authManager, Collections.<String, Object> emptyMap(), Collections.<String> emptySet());
+                    authManager, Collections.<String, Object> emptyMap(), Collections.<String> emptySet(), _preferencesProviderCreator);
             _managementAuthenticationProvider = authenticationProvider;
         }
     }
@@ -783,6 +784,10 @@ public class BrokerAdapter extends Abstr
         {
             return _authenticationProviderFactory.getSupportedAuthenticationProviders();
         }
+        else if (SUPPORTED_PREFERENCES_PROVIDERS_TYPES.equals(name))
+        {
+            return _preferencesProviderCreator.getSupportedPreferencesProviders();
+        }
         else if (MODEL_VERSION.equals(name))
         {
             return Model.MODEL_VERSION;
@@ -1086,6 +1091,19 @@ public class BrokerAdapter extends Abstr
     @Override
     public SubjectCreator getSubjectCreator(SocketAddress localAddress)
     {
+        AuthenticationProvider provider = getAuthenticationProvider(localAddress);
+
+        if(provider == null)
+        {
+            throw new IllegalConfigurationException("Unable to determine authentication provider for address: " + localAddress);
+        }
+
+        return provider.getSubjectCreator();
+    }
+
+    @Override
+    public AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress)
+    {
         InetSocketAddress inetSocketAddress = (InetSocketAddress)localAddress;
         AuthenticationProvider provider = null;
         Collection<Port> ports = getPorts();
@@ -1097,13 +1115,7 @@ public class BrokerAdapter extends Abstr
                 break;
             }
         }
-
-        if(provider == null)
-        {
-            throw new IllegalConfigurationException("Unable to determine authentication provider for address: " + localAddress);
-        }
-
-        return provider.getSubjectCreator();
+        return provider;
     }
 
     @Override

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java Fri Sep 20 18:59:30 2013
@@ -190,7 +190,7 @@ final class ConnectionAdapter extends Ab
         }
         else if(name.equals(INCOMING))
         {
-
+            return true;
         }
         else if(name.equals(LOCAL_ADDRESS))
         {

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java Fri Sep 20 18:59:30 2013
@@ -30,9 +30,7 @@ import java.util.Map;
 import org.apache.qpid.AMQException;
 import org.apache.qpid.AMQInternalException;
 import org.apache.qpid.AMQSecurityException;
-import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.exchange.ExchangeRegistry;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.LifetimePolicy;
@@ -42,7 +40,6 @@ import org.apache.qpid.server.model.Stat
 import org.apache.qpid.server.model.Statistics;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.util.MapValueConverter;
-import org.apache.qpid.server.virtualhost.ExchangeIsAlternateException;
 import org.apache.qpid.server.virtualhost.RequiredExchangeException;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 
@@ -90,7 +87,7 @@ final class ExchangeAdapter extends Abst
 
     public String getExchangeType()
     {
-        return _exchange.getType().getName().toString();
+        return _exchange.getType().getType();
     }
 
     public Collection<org.apache.qpid.server.model.Binding> getBindings()
@@ -357,7 +354,7 @@ final class ExchangeAdapter extends Abst
         }
         else if(TYPE.equals(name))
         {
-            return _exchange.getType().getName().asString();
+            return _exchange.getTypeName();
         }
         return super.getAttribute(name);
     }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java Fri Sep 20 18:59:30 2013
@@ -20,8 +20,10 @@
  */
 package org.apache.qpid.server.model.adapter;
 
+import java.io.IOException;
 import java.lang.reflect.Type;
 import java.security.AccessControlException;
+import java.security.GeneralSecurityException;
 import java.security.KeyStoreException;
 import java.security.NoSuchAlgorithmException;
 import java.security.cert.Certificate;
@@ -32,6 +34,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
 
+import javax.net.ssl.KeyManager;
 import javax.net.ssl.KeyManagerFactory;
 
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
@@ -42,6 +45,7 @@ import org.apache.qpid.server.model.Port
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.security.access.Operation;
 import org.apache.qpid.server.util.MapValueConverter;
+import org.apache.qpid.transport.network.security.ssl.QpidClientX509KeyManager;
 import org.apache.qpid.transport.network.security.ssl.SSLUtil;
 
 public class KeyStoreAdapter extends AbstractKeyStoreAdapter implements KeyStore
@@ -210,4 +214,41 @@ public class KeyStoreAdapter extends Abs
                     + keyManagerFactoryAlgorithm);
         }
     }
+
+    public KeyManager[] getKeyManagers() throws GeneralSecurityException
+    {
+        String keyStorePath = (String)getAttribute(KeyStore.PATH);
+        String keyStorePassword = getPassword();
+        String keyStoreType = (String)getAttribute(KeyStore.TYPE);
+        String keyManagerFactoryAlgorithm = (String)getAttribute(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM);
+        String certAlias = (String)getAttribute(KeyStore.CERTIFICATE_ALIAS);
+
+        try
+        {
+            if (certAlias != null)
+            {
+                return new KeyManager[] {
+                        new QpidClientX509KeyManager( certAlias, keyStorePath, keyStoreType, keyStorePassword,
+                                                      keyManagerFactoryAlgorithm)
+                                        };
+
+            }
+            else
+            {
+                final java.security.KeyStore ks = SSLUtil.getInitializedKeyStore(keyStorePath, keyStorePassword, keyStoreType);
+
+                char[] keyStoreCharPassword = keyStorePassword == null ? null : keyStorePassword.toCharArray();
+
+                final KeyManagerFactory kmf = KeyManagerFactory.getInstance(keyManagerFactoryAlgorithm);
+
+                kmf.init(ks, keyStoreCharPassword);
+
+                return kmf.getKeyManagers();
+            }
+        }
+        catch (IOException e)
+        {
+            throw new GeneralSecurityException(e);
+        }
+    }
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java Fri Sep 20 18:59:30 2013
@@ -66,25 +66,6 @@ final class QueueAdapter extends Abstrac
         put(DESCRIPTION, String.class);
     }});
 
-    static final Map<String, String> ATTRIBUTE_MAPPINGS = new HashMap<String, String>();
-    static
-    {
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.ALERT_REPEAT_GAP, AMQQueueFactory.X_QPID_MINIMUM_ALERT_REPEAT_GAP);
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.ALERT_THRESHOLD_MESSAGE_AGE, AMQQueueFactory.X_QPID_MAXIMUM_MESSAGE_AGE);
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.ALERT_THRESHOLD_MESSAGE_SIZE, AMQQueueFactory.X_QPID_MAXIMUM_MESSAGE_SIZE);
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, AMQQueueFactory.X_QPID_MAXIMUM_MESSAGE_COUNT);
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, AMQQueueFactory.X_QPID_MAXIMUM_QUEUE_DEPTH);
-
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, AMQQueueFactory.X_QPID_MAXIMUM_DELIVERY_COUNT);
-
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, AMQQueueFactory.X_QPID_CAPACITY);
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, AMQQueueFactory.X_QPID_FLOW_RESUME_CAPACITY);
-
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.SORT_KEY, AMQQueueFactory.QPID_QUEUE_SORT_KEY);
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.LVQ_KEY, AMQQueueFactory.QPID_LAST_VALUE_QUEUE_KEY);
-        QueueAdapter.ATTRIBUTE_MAPPINGS.put(Queue.PRIORITIES, AMQQueueFactory.X_QPID_PRIORITIES);
-    }
-
     private final AMQQueue _queue;
     private final Map<Binding, BindingAdapter> _bindingAdapters =
             new HashMap<Binding, BindingAdapter>();
@@ -190,15 +171,7 @@ final class QueueAdapter extends Abstrac
     {
         try
         {
-            QueueRegistry queueRegistry = _queue.getVirtualHost().getQueueRegistry();
-            synchronized(queueRegistry)
-            {
-                _queue.delete();
-                if (_queue.isDurable())
-                {
-                    DurableConfigurationStoreHelper.removeQueue(_queue.getVirtualHost().getDurableConfigurationStore(), _queue);
-                }
-            }
+            _queue.getVirtualHost().removeQueue(_queue);
         }
         catch(AMQException e)
         {
@@ -414,13 +387,12 @@ final class QueueAdapter extends Abstrac
         }
         else if(MESSAGE_GROUP_KEY.equals(name))
         {
-            return _queue.getArguments().get(SimpleAMQQueue.QPID_GROUP_HEADER_KEY);
+            return _queue.getAttribute(MESSAGE_GROUP_KEY);
         }
         else if(MESSAGE_GROUP_SHARED_GROUPS.equals(name))
         {
             //We only return the boolean value if message groups are actually in use
-            return getAttribute(MESSAGE_GROUP_KEY) == null ? null :
-                        SimpleAMQQueue.SHARED_MSG_GROUP_ARG_VALUE.equals(_queue.getArguments().get(SimpleAMQQueue.QPID_SHARED_MSG_GROUP));
+            return getAttribute(MESSAGE_GROUP_KEY) == null ? null : _queue.getAttribute(MESSAGE_GROUP_SHARED_GROUPS);
         }
         else if(LVQ_KEY.equals(name))
         {
@@ -439,7 +411,7 @@ final class QueueAdapter extends Abstrac
         }
         else if(OWNER.equals(name))
         {
-            return _queue.getOwner() == null ? null : _queue.getOwner().asString();
+            return _queue.getOwner();
         }
         else if(QUEUE_FLOW_CONTROL_SIZE_BYTES.equals(name))
         {

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java Fri Sep 20 18:59:30 2013
@@ -20,8 +20,11 @@
  */
 package org.apache.qpid.server.model.adapter;
 
+import java.io.IOException;
 import java.lang.reflect.Type;
 import java.security.AccessControlException;
+import java.security.GeneralSecurityException;
+import java.security.KeyStore;
 import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -30,8 +33,10 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
 
+import javax.net.ssl.TrustManager;
 import javax.net.ssl.TrustManagerFactory;
 
+import javax.net.ssl.X509TrustManager;
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.IntegrityViolationException;
@@ -40,6 +45,8 @@ import org.apache.qpid.server.model.Stat
 import org.apache.qpid.server.model.TrustStore;
 import org.apache.qpid.server.security.access.Operation;
 import org.apache.qpid.server.util.MapValueConverter;
+import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager;
+import org.apache.qpid.transport.network.security.ssl.QpidPeersOnlyTrustManager;
 import org.apache.qpid.transport.network.security.ssl.SSLUtil;
 
 public class TrustStoreAdapter extends AbstractKeyStoreAdapter implements TrustStore
@@ -189,4 +196,60 @@ public class TrustStoreAdapter extends A
             throw new IllegalConfigurationException("Unknown trustManagerFactoryAlgorithm: " + trustManagerFactoryAlgorithm);
         }
     }
+
+    public TrustManager[] getTrustManagers() throws GeneralSecurityException
+    {
+        String trustStorePath = (String)getAttribute(TrustStore.PATH);
+        String trustStorePassword = getPassword();
+        String trustStoreType = (String)getAttribute(TrustStore.TYPE);
+        String trustManagerFactoryAlgorithm = (String)getAttribute(TrustStore.TRUST_MANAGER_FACTORY_ALGORITHM);
+
+        try
+        {
+            KeyStore ts = SSLUtil.getInitializedKeyStore(trustStorePath, trustStorePassword, trustStoreType);
+            final TrustManagerFactory tmf = TrustManagerFactory
+                    .getInstance(trustManagerFactoryAlgorithm);
+            tmf.init(ts);
+            final Collection<TrustManager> trustManagersCol = new ArrayList<TrustManager>();
+            final QpidMultipleTrustManager mulTrustManager = new QpidMultipleTrustManager();
+            TrustManager[] delegateManagers = tmf.getTrustManagers();
+            for (TrustManager tm : delegateManagers)
+            {
+                if (tm instanceof X509TrustManager)
+                {
+                    if (Boolean.TRUE.equals(getAttribute(PEERS_ONLY)))
+                    {
+                        // truststore is supposed to trust only clients which peers certificates
+                        // are directly in the store. CA signing will not be considered.
+                        mulTrustManager.addTrustManager(new QpidPeersOnlyTrustManager(ts, (X509TrustManager) tm));
+                    }
+                    else
+                    {
+                        mulTrustManager.addTrustManager((X509TrustManager) tm);
+                    }
+                }
+                else
+                {
+                    trustManagersCol.add(tm);
+                }
+            }
+            if (! mulTrustManager.isEmpty())
+            {
+                trustManagersCol.add(mulTrustManager);
+            }
+
+            if (trustManagersCol.isEmpty())
+            {
+                return null;
+            }
+            else
+            {
+                return trustManagersCol.toArray(new TrustManager[trustManagersCol.size()]);
+            }
+        }
+        catch (IOException e)
+        {
+            throw new GeneralSecurityException(e);
+        }
+    }
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java Fri Sep 20 18:59:30 2013
@@ -41,12 +41,9 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.SystemConfiguration;
 import org.apache.log4j.Logger;
 import org.apache.qpid.AMQException;
-import org.apache.qpid.framing.FieldTable;
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
 import org.apache.qpid.server.configuration.VirtualHostConfiguration;
 import org.apache.qpid.server.configuration.XmlConfigurationUtilities.MyConfiguration;
-import org.apache.qpid.server.connection.IConnectionRegistry;
-import org.apache.qpid.server.exchange.ExchangeRegistry;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
@@ -68,14 +65,13 @@ import org.apache.qpid.server.plugin.Exc
 import org.apache.qpid.server.protocol.AMQConnectionModel;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.AMQQueueFactory;
+import org.apache.qpid.server.queue.QueueArgumentsConverter;
 import org.apache.qpid.server.queue.QueueEntry;
-import org.apache.qpid.server.queue.QueueRegistry;
 import org.apache.qpid.server.queue.SimpleAMQQueue;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.security.access.Operation;
 import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
 import org.apache.qpid.server.stats.StatisticsGatherer;
-import org.apache.qpid.server.store.DurableConfigurationStoreHelper;
 import org.apache.qpid.server.store.MessageStore;
 import org.apache.qpid.server.txn.LocalTransaction;
 import org.apache.qpid.server.txn.ServerTransaction;
@@ -86,6 +82,7 @@ import org.apache.qpid.server.virtualhos
 import org.apache.qpid.server.virtualhost.UnknownExchangeException;
 import org.apache.qpid.server.virtualhost.VirtualHostListener;
 import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
+import org.apache.qpid.server.virtualhost.plugins.QueueExistsException;
 
 public final class VirtualHostAdapter extends AbstractAdapter implements VirtualHost, VirtualHostListener
 {
@@ -203,7 +200,7 @@ public final class VirtualHostAdapter ex
 
     private void populateQueues()
     {
-        Collection<AMQQueue> actualQueues = _virtualHost.getQueueRegistry().getQueues();
+        Collection<AMQQueue> actualQueues = _virtualHost.getQueues();
         if ( actualQueues != null )
         {
             synchronized(_queueAdapters)
@@ -399,7 +396,7 @@ public final class VirtualHostAdapter ex
             }
             if (queueType == QueueType.LVQ && attributes.get(Queue.LVQ_KEY) == null)
             {
-                attributes.put(Queue.LVQ_KEY, AMQQueueFactory.QPID_LVQ_KEY);
+                attributes.put(Queue.LVQ_KEY, AMQQueueFactory.QPID_DEFAULT_LVQ_KEY);
             }
             else if (queueType == QueueType.PRIORITY && attributes.get(Queue.PRIORITIES) == null)
             {
@@ -415,7 +412,7 @@ public final class VirtualHostAdapter ex
         {
             String key = MapValueConverter.getStringAttribute(Queue.MESSAGE_GROUP_KEY, attributes);
             attributes.remove(Queue.MESSAGE_GROUP_KEY);
-            attributes.put(SimpleAMQQueue.QPID_GROUP_HEADER_KEY, key);
+            attributes.put(QueueArgumentsConverter.QPID_GROUP_HEADER_KEY, key);
         }
 
         if (attributes.containsKey(Queue.MESSAGE_GROUP_SHARED_GROUPS))
@@ -423,7 +420,7 @@ public final class VirtualHostAdapter ex
             if(MapValueConverter.getBooleanAttribute(Queue.MESSAGE_GROUP_SHARED_GROUPS, attributes))
             {
                 attributes.remove(Queue.MESSAGE_GROUP_SHARED_GROUPS);
-                attributes.put(SimpleAMQQueue.QPID_SHARED_MSG_GROUP, SimpleAMQQueue.SHARED_MSG_GROUP_ARG_VALUE);
+                attributes.put(QueueArgumentsConverter.QPID_SHARED_MSG_GROUP, SimpleAMQQueue.SHARED_MSG_GROUP_ARG_VALUE);
             }
         }
 
@@ -440,15 +437,6 @@ public final class VirtualHostAdapter ex
         attributes.remove(Queue.LIFETIME_POLICY);
         attributes.remove(Queue.TIME_TO_LIVE);
 
-        List<String> attrNames = new ArrayList<String>(attributes.keySet());
-        for(String attr : attrNames)
-        {
-            if(QueueAdapter.ATTRIBUTE_MAPPINGS.containsKey(attr))
-            {
-                attributes.put(QueueAdapter.ATTRIBUTE_MAPPINGS.get(attr),attributes.remove(attr));
-            }
-        }
-
         return createQueue(name, state, durable, exclusive, lifetime, ttl, attributes);
     }
 
@@ -472,33 +460,26 @@ public final class VirtualHostAdapter ex
                 owner = authenticatedPrincipal.getName();
             }
         }
+
+        final boolean autoDelete = lifetime == LifetimePolicy.AUTO_DELETE;
+
         try
         {
-            QueueRegistry queueRegistry = _virtualHost.getQueueRegistry();
-            synchronized (queueRegistry)
-            {
-                if(_virtualHost.getQueueRegistry().getQueue(name)!=null)
-                {
-                    throw new IllegalArgumentException("Queue with name "+name+" already exists");
-                }
-                AMQQueue queue =
-                        AMQQueueFactory.createAMQQueueImpl(UUIDGenerator.generateQueueUUID(name, _virtualHost.getName()), name,
-                                                           durable, owner, lifetime == LifetimePolicy.AUTO_DELETE,
-                                                           exclusive, _virtualHost, attributes);
 
-                if(durable)
-                {
-                    DurableConfigurationStoreHelper.createQueue(_virtualHost.getDurableConfigurationStore(),
-                            queue,
-                            FieldTable.convertToFieldTable(attributes));
-                }
-                synchronized (_queueAdapters)
-                {
-                    return _queueAdapters.get(queue);
-                }
+            AMQQueue queue =
+                    _virtualHost.createQueue(UUIDGenerator.generateQueueUUID(name, _virtualHost.getName()), name,
+                            durable, owner, autoDelete, exclusive, autoDelete && exclusive, attributes);
+
+            synchronized (_queueAdapters)
+            {
+                return _queueAdapters.get(queue);
             }
 
         }
+        catch(QueueExistsException qe)
+        {
+            throw new IllegalArgumentException("Queue with name "+name+" already exists");
+        }
         catch(AMQException e)
         {
             throw new IllegalArgumentException(e);
@@ -784,7 +765,7 @@ public final class VirtualHostAdapter ex
 
         for(ExchangeType<? extends org.apache.qpid.server.exchange.Exchange> type : types)
         {
-            exchangeTypes.add(type.getName().asString());
+            exchangeTypes.add(type.getType());
         }
         return Collections.unmodifiableCollection(exchangeTypes);
     }
@@ -938,7 +919,7 @@ public final class VirtualHostAdapter ex
             List<String> types = new ArrayList<String>();
             for(@SuppressWarnings("rawtypes") ExchangeType type : _virtualHost.getExchangeTypes())
             {
-                types.add(type.getName().asString());
+                types.add(type.getType());
             }
             return Collections.unmodifiableCollection(types);
         }
@@ -1057,7 +1038,7 @@ public final class VirtualHostAdapter ex
         {
             if(VirtualHost.QUEUE_COUNT.equals(name))
             {
-                return _vhost.getQueueRegistry().getQueues().size();
+                return _vhost.getQueues().size();
             }
             else if(VirtualHost.EXCHANGE_COUNT.equals(name))
             {

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/ExchangeType.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/ExchangeType.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/ExchangeType.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/plugin/ExchangeType.java Fri Sep 20 18:59:30 2013
@@ -30,8 +30,9 @@ import org.apache.qpid.server.virtualhos
 public interface ExchangeType<T extends Exchange> extends Pluggable
 {
     public String getType();
-    public AMQShortString getName();
-    public T newInstance(UUID id, VirtualHost host, AMQShortString name,
+
+    public T newInstance(UUID id, VirtualHost host, String name,
                          boolean durable, boolean autoDelete) throws AMQException;
-    public AMQShortString getDefaultExchangeName();
+
+    public String getDefaultExchangeName();
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java Fri Sep 20 18:59:30 2013
@@ -92,4 +92,6 @@ public interface AMQConnectionModel exte
     void stop();
 
     boolean isStopped();
+
+    String getVirtualHostName();
 }

Modified: qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java
URL: http://svn.apache.org/viewvc/qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java?rev=1525101&r1=1525100&r2=1525101&view=diff
==============================================================================
--- qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java (original)
+++ qpid/branches/linearstore/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java Fri Sep 20 18:59:30 2013
@@ -37,8 +37,7 @@ import org.apache.qpid.server.logging.me
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.Transport;
-import org.apache.qpid.server.transport.ServerConnection;
-import org.apache.qpid.transport.ConnectionDelegate;
+import org.apache.qpid.server.plugin.ProtocolEngineCreator;
 import org.apache.qpid.transport.Sender;
 import org.apache.qpid.transport.network.NetworkConnection;
 import org.apache.qpid.transport.network.security.SSLStatus;
@@ -55,6 +54,7 @@ public class MultiVersionProtocolEngine 
     private final boolean _needClientAuth;
     private final Port _port;
     private final Transport _transport;
+    private final ProtocolEngineCreator[] _creators;
 
     private Set<AmqpProtocolVersion> _supported;
     private String _fqdn;
@@ -69,7 +69,7 @@ public class MultiVersionProtocolEngine 
                                       SSLContext sslContext, boolean wantClientAuth, boolean needClientAuth,
                                       final Set<AmqpProtocolVersion> supported,
                                       final AmqpProtocolVersion defaultSupportedReply,
-                                      Port port, Transport transport, final long id)
+                                      Port port, Transport transport, final long id, ProtocolEngineCreator[] creators)
     {
         if(defaultSupportedReply != null && !supported.contains(defaultSupportedReply))
         {
@@ -86,6 +86,7 @@ public class MultiVersionProtocolEngine 
         _needClientAuth = needClientAuth;
         _port = port;
         _transport = transport;
+        _creators = creators;
     }
 
 
@@ -142,73 +143,6 @@ public class MultiVersionProtocolEngine 
 
     private static final int MINIMUM_REQUIRED_HEADER_BYTES = 8;
 
-    private static final byte[] AMQP_0_8_HEADER =
-            new byte[] { (byte) 'A',
-                         (byte) 'M',
-                         (byte) 'Q',
-                         (byte) 'P',
-                         (byte) 1,
-                         (byte) 1,
-                         (byte) 8,
-                         (byte) 0
-            };
-
-    private static final byte[] AMQP_0_9_HEADER =
-            new byte[] { (byte) 'A',
-                         (byte) 'M',
-                         (byte) 'Q',
-                         (byte) 'P',
-                         (byte) 1,
-                         (byte) 1,
-                         (byte) 0,
-                         (byte) 9
-            };
-
-    private static final byte[] AMQP_0_9_1_HEADER =
-            new byte[] { (byte) 'A',
-                         (byte) 'M',
-                         (byte) 'Q',
-                         (byte) 'P',
-                         (byte) 0,
-                         (byte) 0,
-                         (byte) 9,
-                         (byte) 1
-            };
-
-
-    private static final byte[] AMQP_0_10_HEADER =
-            new byte[] { (byte) 'A',
-                         (byte) 'M',
-                         (byte) 'Q',
-                         (byte) 'P',
-                         (byte) 1,
-                         (byte) 1,
-                         (byte) 0,
-                         (byte) 10
-            };
-
-    private static final byte[] AMQP_1_0_0_HEADER =
-            new byte[] { (byte) 'A',
-                         (byte) 'M',
-                         (byte) 'Q',
-                         (byte) 'P',
-                         (byte) 0,
-                         (byte) 1,
-                         (byte) 0,
-                         (byte) 0
-            };
-
-    private static final byte[] AMQP_SASL_1_0_0_HEADER =
-            new byte[] { (byte) 'A',
-                         (byte) 'M',
-                         (byte) 'Q',
-                         (byte) 'P',
-                         (byte) 3,
-                         (byte) 1,
-                         (byte) 0,
-                         (byte) 0
-            };
-
     public void setNetworkConnection(NetworkConnection networkConnection)
     {
         setNetworkConnection(networkConnection, networkConnection.getSender());
@@ -242,144 +176,6 @@ public class MultiVersionProtocolEngine 
     }
 
 
-    private static interface DelegateCreator
-    {
-        AmqpProtocolVersion getVersion();
-        byte[] getHeaderIdentifier();
-        ServerProtocolEngine getProtocolEngine();
-    }
-
-    private DelegateCreator creator_0_8 = new DelegateCreator()
-    {
-
-        public AmqpProtocolVersion getVersion()
-        {
-            return AmqpProtocolVersion.v0_8;
-        }
-
-        public byte[] getHeaderIdentifier()
-        {
-            return AMQP_0_8_HEADER;
-        }
-
-        public ServerProtocolEngine getProtocolEngine()
-        {
-            return new AMQProtocolEngine(_broker, _network, _id, _port, _transport);
-        }
-    };
-
-    private DelegateCreator creator_0_9 = new DelegateCreator()
-    {
-
-        public AmqpProtocolVersion getVersion()
-        {
-            return AmqpProtocolVersion.v0_9;
-        }
-
-
-        public byte[] getHeaderIdentifier()
-        {
-            return AMQP_0_9_HEADER;
-        }
-
-        public ServerProtocolEngine getProtocolEngine()
-        {
-            return new AMQProtocolEngine(_broker, _network, _id, _port, _transport);
-        }
-    };
-
-    private DelegateCreator creator_0_9_1 = new DelegateCreator()
-    {
-
-        public AmqpProtocolVersion getVersion()
-        {
-            return AmqpProtocolVersion.v0_9_1;
-        }
-
-
-        public byte[] getHeaderIdentifier()
-        {
-            return AMQP_0_9_1_HEADER;
-        }
-
-        public ServerProtocolEngine getProtocolEngine()
-        {
-            return new AMQProtocolEngine(_broker, _network, _id, _port, _transport);
-        }
-    };
-
-
-    private DelegateCreator creator_0_10 = new DelegateCreator()
-    {
-
-        public AmqpProtocolVersion getVersion()
-        {
-            return AmqpProtocolVersion.v0_10;
-        }
-
-
-        public byte[] getHeaderIdentifier()
-        {
-            return AMQP_0_10_HEADER;
-        }
-
-        public ServerProtocolEngine getProtocolEngine()
-        {
-            final ConnectionDelegate connDelegate = new org.apache.qpid.server.transport.ServerConnectionDelegate(_broker,
-                    _fqdn, _broker.getSubjectCreator(getLocalAddress()));
-
-            ServerConnection conn = new ServerConnection(_id);
-
-            conn.setConnectionDelegate(connDelegate);
-            conn.setRemoteAddress(_network.getRemoteAddress());
-            conn.setLocalAddress(_network.getLocalAddress());
-            return new ProtocolEngine_0_10( conn, _network, _port, _transport);
-        }
-    };
-
-    private DelegateCreator creator_1_0_0 = new DelegateCreator()
-    {
-
-        public AmqpProtocolVersion getVersion()
-        {
-            return AmqpProtocolVersion.v1_0_0;
-        }
-
-
-        public byte[] getHeaderIdentifier()
-        {
-            return AMQP_1_0_0_HEADER;
-        }
-
-        public ServerProtocolEngine getProtocolEngine()
-        {
-            return new ProtocolEngine_1_0_0(_network, _broker, _id, _port, _transport);
-        }
-    };
-
-    private DelegateCreator creator_1_0_0_SASL = new DelegateCreator()
-    {
-
-        public AmqpProtocolVersion getVersion()
-        {
-            return AmqpProtocolVersion.v1_0_0;
-        }
-
-
-        public byte[] getHeaderIdentifier()
-        {
-            return AMQP_SASL_1_0_0_HEADER;
-        }
-
-        public ServerProtocolEngine getProtocolEngine()
-        {
-            return new ProtocolEngine_1_0_0_SASL(_network, _broker, _id, _port, _transport);
-        }
-    };
-
-    private final DelegateCreator[] _creators =
-            new DelegateCreator[] { creator_0_8, creator_0_9, creator_0_9_1, creator_0_10, creator_1_0_0_SASL, creator_1_0_0 };
-
 
     private class ClosedDelegateProtocolEngine implements ServerProtocolEngine
     {
@@ -521,7 +317,7 @@ public class MultiVersionProtocolEngine 
                         }
                         if(equal)
                         {
-                            newDelegate = _creators[i].getProtocolEngine();
+                            newDelegate = _creators[i].newProtocolEngine(_broker, _network, _port, _transport, _id);
                         }
                     }
 
@@ -662,7 +458,7 @@ public class MultiVersionProtocolEngine 
         {
 
             _decryptEngine = new MultiVersionProtocolEngine(_broker, null, false, false, _supported,
-                                                            _defaultSupportedReply, _port, Transport.SSL, _id);
+                                                            _defaultSupportedReply, _port, Transport.SSL, _id, _creators);
 
             _engine = _sslContext.createSSLEngine();
             _engine.setUseClientMode(false);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org