[jboss-cvs] JBoss Messaging SVN: r3627 - in trunk: docs/examples and 17 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jan 24 03:43:34 EST 2008


Author: ataylor
Date: 2008-01-24 03:43:34 -0500 (Thu, 24 Jan 2008)
New Revision: 3627

Added:
   trunk/docs/examples/embedded/
   trunk/docs/examples/embedded/src/
   trunk/docs/examples/embedded/src/org/
   trunk/docs/examples/embedded/src/org/jboss/
   trunk/docs/examples/embedded/src/org/jboss/example/
   trunk/docs/examples/embedded/src/org/jboss/example/embedded/
   trunk/docs/examples/embedded/src/org/jboss/example/embedded/EmbeddedExample.java
   trunk/docs/examples/embedded/src/org/jboss/example/embedded/MessagingServerFactory.java
   trunk/src/main/org/jboss/jms/server/endpoint/ConnectionFactoryAdvisedPacketHandler.java
Removed:
   trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java
   trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java
Modified:
   trunk/messaging.ipr
   trunk/src/etc/server/default/deploy/jbm-jndi.xml
   trunk/src/main/org/jboss/jms/client/impl/ClientConnectionFactoryImpl.java
   trunk/src/main/org/jboss/jms/jndi/JNDIObjectDeployer.java
   trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java
   trunk/src/main/org/jboss/messaging/core/Configuration.java
   trunk/src/main/org/jboss/messaging/core/impl/server/MessagingServerImpl.java
   trunk/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java
   trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java
   trunk/tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java
Log:
changed connectionfactory so that only one packet handler deals with all requests.

Added: trunk/docs/examples/embedded/src/org/jboss/example/embedded/EmbeddedExample.java
===================================================================
--- trunk/docs/examples/embedded/src/org/jboss/example/embedded/EmbeddedExample.java	                        (rev 0)
+++ trunk/docs/examples/embedded/src/org/jboss/example/embedded/EmbeddedExample.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -0,0 +1,65 @@
+/*
+   * JBoss, Home of Professional Open Source
+   * Copyright 2005, JBoss Inc., and individual contributors as indicated
+   * by the @authors tag. See the copyright.txt in the distribution for a
+   * full listing of individual contributors.
+   *
+   * This is free software; you can redistribute it and/or modify it
+   * under the terms of the GNU Lesser General Public License as
+   * published by the Free Software Foundation; either version 2.1 of
+   * the License, or (at your option) any later version.
+   *
+   * This software is distributed in the hope that it will be useful,
+   * but WITHOUT ANY WARRANTY; without even the implied warranty of
+   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   * Lesser General Public License for more details.
+   *
+   * You should have received a copy of the GNU Lesser General Public
+   * License along with this software; if not, write to the Free
+   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+   */
+package org.jboss.example.embedded;
+
+import org.jboss.jms.client.api.ClientConnection;
+import org.jboss.jms.client.api.ClientConsumer;
+import org.jboss.jms.client.api.ClientSession;
+import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
+import org.jboss.jms.message.JBossMessage;
+import org.jboss.messaging.core.Destination;
+import org.jboss.messaging.core.DestinationType;
+import org.jboss.messaging.core.MessagingServer;
+import org.jboss.messaging.core.impl.DestinationImpl;
+import org.jboss.messaging.core.impl.MessageImpl;
+
+import javax.jms.Session;
+
+/**
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class EmbeddedExample
+{
+   public static void main(String args[]) throws Exception
+   {
+      MessagingServer messagingServer = MessagingServerFactory.createMessagingServer();
+      messagingServer.start();
+      messagingServer.createQueue("Queue1");
+      ClientConnectionFactoryImpl cf = new ClientConnectionFactoryImpl("tcp://localhost:5400?timeout=5");
+      ClientConnection clientConnection = cf.createConnection(null, null);
+      ClientSession clientSession = clientConnection.createClientSession(false, Session.AUTO_ACKNOWLEDGE, false);
+
+      MessageImpl message = new MessageImpl();
+      Destination destination = new DestinationImpl(DestinationType.QUEUE, "Queue1", false);
+      message.putHeader(org.jboss.messaging.core.Message.TEMP_DEST_HEADER_NAME, destination);
+      message.setPayload("hello".getBytes());
+      clientSession.send(message);
+
+      ClientConsumer clientConsumer = clientSession.createClientConsumer(destination, null, false, "me", false);
+      clientConnection.start();
+      JBossMessage m = (JBossMessage) clientConsumer.receive(0);
+      System.out.println("m = " + new String(m.getCoreMessage().getPayload()));
+      clientConnection.close();
+
+      messagingServer.stop();
+   }
+}

Added: trunk/docs/examples/embedded/src/org/jboss/example/embedded/MessagingServerFactory.java
===================================================================
--- trunk/docs/examples/embedded/src/org/jboss/example/embedded/MessagingServerFactory.java	                        (rev 0)
+++ trunk/docs/examples/embedded/src/org/jboss/example/embedded/MessagingServerFactory.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -0,0 +1,82 @@
+/*
+   * JBoss, Home of Professional Open Source
+   * Copyright 2005, JBoss Inc., and individual contributors as indicated
+   * by the @authors tag. See the copyright.txt in the distribution for a
+   * full listing of individual contributors.
+   *
+   * This is free software; you can redistribute it and/or modify it
+   * under the terms of the GNU Lesser General Public License as
+   * published by the Free Software Foundation; either version 2.1 of
+   * the License, or (at your option) any later version.
+   *
+   * This software is distributed in the hope that it will be useful,
+   * but WITHOUT ANY WARRANTY; without even the implied warranty of
+   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   * Lesser General Public License for more details.
+   *
+   * You should have received a copy of the GNU Lesser General Public
+   * License along with this software; if not, write to the Free
+   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+   */
+package org.jboss.example.embedded;
+
+import org.jboss.jms.server.plugin.contract.JMSUserManager;
+import org.jboss.messaging.core.Configuration;
+import org.jboss.messaging.core.MessagingServer;
+import org.jboss.messaging.core.impl.bdbje.BDBJEEnvironment;
+import org.jboss.messaging.core.impl.bdbje.BDBJEPersistenceManager;
+import org.jboss.messaging.core.impl.bdbje.integration.RealBDBJEEnvironment;
+import org.jboss.messaging.core.impl.server.MessagingServerImpl;
+import org.jboss.messaging.core.remoting.impl.mina.MinaService;
+import org.jboss.messaging.microcontainer.AuthenticationManager;
+
+/**
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class MessagingServerFactory
+{
+   public static MessagingServer createMessagingServer() throws Exception
+   {
+      MinaService minaService = new MinaService("tcp", "localhost", 5400);
+      minaService.start();
+      MessagingServerImpl messagingServer = new MessagingServerImpl();
+      
+      messagingServer.setMinaService(minaService);
+      Configuration configuration = new Configuration();
+      configuration.setMessagingServerID(0);
+      messagingServer.setConfiguration(configuration);
+      messagingServer.setJmsUserManager(new JMSUserManager()
+      {
+         public String getPreConfiguredClientID(String username) throws Exception
+         {
+            return "0";
+         }
+
+         public void start() throws Exception
+         {
+            //To change body of implemented methods use File | Settings | File Templates.
+         }
+
+         public void stop() throws Exception
+         {
+            //To change body of implemented methods use File | Settings | File Templates.
+         }
+      });
+      BDBJEPersistenceManager persistenceManager = new BDBJEPersistenceManager();
+      persistenceManager.setLargeMessageRepository("${user.home}/bdbje/large");
+      persistenceManager.setMinLargeMessageSize(1000000);
+      BDBJEEnvironment bdbjeEnvironment = new RealBDBJEEnvironment();
+      bdbjeEnvironment.setEnvironmentPath("${user.home}/bdbje/env");
+      bdbjeEnvironment.setCreateEnvironment(true);
+      bdbjeEnvironment.setSyncVM(true);
+      bdbjeEnvironment.setSyncOS(false);
+      bdbjeEnvironment.setMemoryCacheSize(-1);
+      persistenceManager.setEnvironment(bdbjeEnvironment);
+      bdbjeEnvironment.start();
+      persistenceManager.start();
+      messagingServer.setPersistenceManager(persistenceManager);
+      messagingServer.setAuthenticationManager(new AuthenticationManager());
+      return messagingServer;
+   }
+}

Modified: trunk/messaging.ipr
===================================================================
--- trunk/messaging.ipr	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/messaging.ipr	2008-01-24 08:43:34 UTC (rev 3627)
@@ -217,59 +217,59 @@
   </component>
   <component name="IntelliJadProjectConfigComponent">
     <config>
-      <i type="boolean">false</i>
+      <safe type="boolean">false</safe>
+      <sort type="boolean">false</sort>
+      <noclass type="boolean">false</noclass>
+      <stat type="boolean">false</stat>
+      <clear-and-close-console-on-success type="boolean">false</clear-and-close-console-on-success>
+      <l type="integer">64</l>
+      <noconv type="boolean">false</noconv>
+      <s type="string">java</s>
+      <decompile-to-memory type="boolean">true</decompile-to-memory>
+      <pe type="string">_ex</pe>
+      <af type="boolean">false</af>
+      <always-exclude-recursively type="boolean">false</always-exclude-recursively>
       <pm type="string">_mth</pm>
-      <r type="boolean">false</r>
-      <nocast type="boolean">false</nocast>
-      <pl type="string">_lcl</pl>
-      <nodos type="boolean">false</nodos>
-      <clear-and-close-console-on-success type="boolean">false</clear-and-close-console-on-success>
-      <noinner type="boolean">false</noinner>
-      <lnc type="boolean">false</lnc>
-      <a type="boolean">false</a>
-      <lradix type="integer">10</lradix>
-      <pf type="string">_fld</pf>
-      <dead type="boolean">false</dead>
-      <indentation type="integer">4</indentation>
-      <pp type="string">_prm</pp>
+      <ff type="boolean">false</ff>
+      <decompile-on-navigation type="string">Always</decompile-on-navigation>
       <space type="boolean">false</space>
-      <radix type="integer">10</radix>
       <v type="boolean">false</v>
-      <af type="boolean">false</af>
-      <reformat-according-to-style type="boolean">false</reformat-according-to-style>
-      <nofd type="boolean">false</nofd>
-      <noclass type="boolean">false</noclass>
       <o type="boolean">false</o>
-      <ff type="boolean">false</ff>
       <use-project-specific-settings type="boolean">false</use-project-specific-settings>
-      <noconv type="boolean">false</noconv>
-      <f type="boolean">false</f>
+      <t type="boolean">false</t>
       <read-only type="boolean">false</read-only>
-      <nolvt type="boolean">false</nolvt>
-      <pe type="string">_ex</pe>
-      <safe type="boolean">false</safe>
       <b type="boolean">false</b>
-      <exclusion-table-model type="table-model" model-class="net.stevechaloner.intellijad.config.ExclusionTableModel" content-types="string,boolean,boolean" />
-      <nocode type="boolean">false</nocode>
-      <sort type="boolean">false</sort>
-      <decompile-to-memory type="boolean">true</decompile-to-memory>
+      <create-output-directory type="boolean">false</create-output-directory>
+      <jad-path type="string" />
       <dis type="boolean">false</dis>
       <noctor type="boolean">false</noctor>
-      <jad-path type="string" />
+      <pp type="string">_prm</pp>
+      <noinner type="boolean">false</noinner>
+      <indentation type="integer">4</indentation>
+      <f type="boolean">false</f>
+      <dead type="boolean">false</dead>
+      <nocast type="boolean">false</nocast>
+      <pv type="integer">3</pv>
+      <nl type="boolean">false</nl>
+      <nodos type="boolean">false</nodos>
+      <pf type="string">_fld</pf>
+      <lnc type="boolean">false</lnc>
+      <radix type="integer">10</radix>
+      <nofd type="boolean">false</nofd>
+      <r type="boolean">false</r>
+      <nolvt type="boolean">false</nolvt>
+      <reformat-according-to-style type="boolean">false</reformat-according-to-style>
+      <a type="boolean">false</a>
+      <i type="boolean">false</i>
+      <nocode type="boolean">false</nocode>
       <pc type="string">_cls</pc>
-      <decompile-on-navigation type="string">Always</decompile-on-navigation>
+      <pa type="string" />
+      <pl type="string">_lcl</pl>
+      <lradix type="integer">10</lradix>
+      <clear type="boolean">false</clear>
       <d type="string" />
-      <nl type="boolean">false</nl>
-      <always-exclude-recursively type="boolean">false</always-exclude-recursively>
-      <s type="string">java</s>
-      <pv type="integer">3</pv>
       <nonlb type="boolean">false</nonlb>
-      <pa type="string" />
-      <create-output-directory type="boolean">false</create-output-directory>
-      <l type="integer">64</l>
-      <stat type="boolean">false</stat>
-      <clear type="boolean">false</clear>
-      <t type="boolean">false</t>
+      <exclusion-table-model type="table-model" model-class="net.stevechaloner.intellijad.config.ExclusionTableModel" content-types="string,boolean,boolean" />
     </config>
   </component>
   <component name="JavacSettings">

Modified: trunk/src/etc/server/default/deploy/jbm-jndi.xml
===================================================================
--- trunk/src/etc/server/default/deploy/jbm-jndi.xml	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/etc/server/default/deploy/jbm-jndi.xml	2008-01-24 08:43:34 UTC (rev 3627)
@@ -36,10 +36,6 @@
       <client-id>MyClientID</client-id>
       <!-- PrefetchSize determines the approximate maximum number of messages the client consumer will buffer locally -->
       <prefetch-size>150</prefetch-size>
-      <!-- Paging params to be used for temporary queues -->
-      <default-temp-queue-full-size>200000</default-temp-queue-full-size>
-      <default-temp-queue-page-size>2000</default-temp-queue-page-size>
-      <default-temp-queue-down-cache-size>2000</default-temp-queue-down-cache-size>
       <!-- The batch size to use when using the DUPS_OK_ACKNOWLEDGE acknowledgement mode -->
       <dups-ok-batch-size>5000</dups-ok-batch-size>
       <!-- Does this connection factory support automatic failover? -->
@@ -50,8 +46,6 @@
       <load-balancing-factory>org.jboss.jms.client.plugin.RoundRobinLoadBalancingFactory</load-balancing-factory>
       <!-- Whether we should be strict TCK compliant, i.e. how we deal with foreign messages, defaults to false-->
       <strict-tck>true</strict-tck>
-      <!-- Disable JBoss Remoting Connector sanity checks - There is rarely a good reason to set this to true -->
-      <disable-remoting-checks>false</disable-remoting-checks>
    </connection-factory>
 
    <queue name="DLQ">

Modified: trunk/src/main/org/jboss/jms/client/impl/ClientConnectionFactoryImpl.java
===================================================================
--- trunk/src/main/org/jboss/jms/client/impl/ClientConnectionFactoryImpl.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/client/impl/ClientConnectionFactoryImpl.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -21,11 +21,8 @@
  */
 package org.jboss.jms.client.impl;
 
-import java.io.Serializable;
-
-import javax.jms.JMSException;
-
 import org.jboss.jms.client.api.ClientConnection;
+import org.jboss.jms.client.plugin.LoadBalancingFactory;
 import org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener;
 import org.jboss.jms.client.remoting.MessagingRemotingConnection;
 import org.jboss.jms.exception.MessagingJMSException;
@@ -36,6 +33,9 @@
 import org.jboss.messaging.util.Logger;
 import org.jboss.messaging.util.Version;
 
+import javax.jms.JMSException;
+import java.io.Serializable;
+
 /**
  * The client-side ConnectionFactory delegate class.
  *
@@ -43,6 +43,7 @@
  * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
  * @author <a href="mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
  *
  * @version <tt>$Revision: 3602 $</tt>
  *
@@ -51,14 +52,13 @@
 public class ClientConnectionFactoryImpl implements Serializable
 {
    // Constants ------------------------------------------------------------------------------------
+   public  static final String id = "CONNECTION_FACTORY_ID";
 
    private static final long serialVersionUID = 2512460695662741413L;
    
    private static final Logger log = Logger.getLogger(ClientConnectionFactoryImpl.class);
 
    // Attributes -----------------------------------------------------------------------------------
-
-   private String id;
    
    private String serverLocatorURI;
 
@@ -68,6 +68,20 @@
    
    private boolean clientPing;
 
+   private String clientID;
+
+   private int prefetchSize = 150;
+
+   private boolean slowConsumers;
+
+   private boolean supportsFailover;
+
+   private boolean supportsLoadBalancing;
+
+   private LoadBalancingFactory loadBalancingFactory;
+
+   private int dupsOKBatchSize = 1000;
+
    private boolean strictTck;
    
    // Static ---------------------------------------------------------------------------------------
@@ -78,7 +92,7 @@
 
       Version versionToUse;
 
-      if (connectionVersion.getProviderIncrementingVersion() <=
+      if (connectionVersion != null && connectionVersion.getProviderIncrementingVersion() <=
           clientVersion.getProviderIncrementingVersion())
       {
          versionToUse = connectionVersion;
@@ -93,17 +107,25 @@
 
    // Constructors ---------------------------------------------------------------------------------
 
-   public ClientConnectionFactoryImpl(String id, int serverID, 
-         String serverLocatorURI, Version serverVersion, boolean clientPing, boolean strictTck)
+   public ClientConnectionFactoryImpl( int serverID,
+         String serverLocatorURI, Version serverVersion, boolean clientPing, boolean strictTck,
+         int prefetchSize, int dupsOKBatchSize, String clientID)
    {
-      this.id = id;
       this.serverID = serverID;
       this.serverLocatorURI = serverLocatorURI;
       this.serverVersion = serverVersion;
       this.clientPing = clientPing;
       this.strictTck = strictTck;
+      this.prefetchSize = prefetchSize;
+      this.dupsOKBatchSize = dupsOKBatchSize;
+      this.clientID = clientID;
    }
-   
+
+   public ClientConnectionFactoryImpl(String serverLocatorURI)
+   {
+      this.serverLocatorURI = serverLocatorURI;
+   }
+
    public ClientConnectionFactoryImpl()
    {
    }
@@ -124,7 +146,8 @@
          String sessionID = remotingConnection.getSessionID();
          
          CreateConnectionRequest request =
-            new CreateConnectionRequest(v, sessionID, JMSClientVMIdentifier.instance, username, password);
+            new CreateConnectionRequest(v, sessionID, JMSClientVMIdentifier.instance, username, password,
+                  prefetchSize, dupsOKBatchSize, clientID);
          
          CreateConnectionResponse response =
             (CreateConnectionResponse)remotingConnection.sendBlocking(id, request);
@@ -190,6 +213,7 @@
        return strictTck;
    }
 
+   
    // Protected ------------------------------------------------------------------------------------
 
    // Package Private ------------------------------------------------------------------------------

Modified: trunk/src/main/org/jboss/jms/jndi/JNDIObjectDeployer.java
===================================================================
--- trunk/src/main/org/jboss/jms/jndi/JNDIObjectDeployer.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/jndi/JNDIObjectDeployer.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -25,8 +25,6 @@
 import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
 import org.jboss.jms.destination.JBossQueue;
 import org.jboss.jms.destination.JBossTopic;
-import org.jboss.jms.server.connectionfactory.ConnectionFactory;
-import org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint;
 import org.jboss.logging.Logger;
 import org.jboss.messaging.core.MessagingServer;
 import org.jboss.messaging.core.remoting.ServerLocator;
@@ -65,15 +63,11 @@
 
    private static final String CLIENTID_ELEMENT = "client-id";
    private static final String PREFETECH_SIZE_ELEMENT = "prefetch-size";
-   private static final String DEF_TEMP_Q_FULL_SIZE = "default-temp-queue-full-size";
-   private static final String DEF_TEMP_Q_PAGE_SIZE_SIZE = "default-temp-queue-page-size";
-   private static final String DEF_TEMP_Q_DOWN_CACHE_SIZE = "default-temp-queue-down-cache-size";
    private static final String DUPS_OK_BATCH_SIZE = "dups-ok-batch-size";
    private static final String SUPPORTS_FAILOVER = "supports-failover";
    private static final String SUPPORTS_LOAD_BALANCING = "supports-load-balancing";
    private static final String LOAD_BALANCING_FACTORY = "load-balancing-factory";
    private static final String STRICT_TCK = "strict-tck";
-   private static final String DISABLE_REMOTING_CHECKS = "disable-remoting-checks";
    private static final String ENTRY_NODE_NAME = "entry";
    private static final String CONNECTION_FACTORY_NODE_NAME = "connection-factory";
    private static final String QUEUE_NODE_NAME = "queue";
@@ -117,6 +111,7 @@
 
    /**
     * the names of the elements to deploy
+    *
     * @return the names of the elements todeploy
     */
    public String[] getElementTagName()
@@ -126,6 +121,7 @@
 
    /**
     * deploy an element
+    *
     * @param node the element to deploy
     * @throws Exception .
     */
@@ -172,6 +168,7 @@
 
    /**
     * creates the object to bind, this will either be a JBossConnectionFActory, JBossQueue or JBossTopic
+    *
     * @param node the config
     * @return the object to bind
     * @throws Exception .
@@ -180,37 +177,64 @@
    {
       if (node.getNodeName().equals(CONNECTION_FACTORY_NODE_NAME))
       {
-         ConnectionFactory connectionFactory = createConnectionFactory(node);
          ServerLocator serverLocator = messagingServer.getMinaService().getLocator();
 
          log.info("Server locator is " + serverLocator);
          log.info(this + " started");
          // See http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4076040#4076040
-         final String id = connectionFactory.getName();
+         final String id = node.getAttributes().getNamedItem(getKeyAttribute()).getNodeValue();
 
          Version version = messagingServer.getVersion();
 
-         ServerConnectionFactoryEndpoint endpoint =
-                 new ServerConnectionFactoryEndpoint(connectionFactory.getName(), id, messagingServer, connectionFactory.getClientID(),
-                         connectionFactory.getPrefetchSize(),
-                         connectionFactory.getDefaultTempQueueFullSize(),
-                         connectionFactory.getDefaultTempQueuePageSize(),
-                         connectionFactory.getDefaultTempQueueDownCacheSize(),
-                         connectionFactory.getDupsOKBatchSize());
+         NodeList attributes = node.getChildNodes();
+         boolean cfStrictTck = false;
+         int prefetchSize = 150;
+         int dupsOKBatchSize = 1000;
+         String clientID = null;
+         for (int j = 0; j < attributes.getLength(); j++)
+         {
+            if (STRICT_TCK.equalsIgnoreCase(attributes.item(j).getNodeName()))
+            {
+               cfStrictTck = Boolean.parseBoolean(attributes.item(j).getTextContent().trim());
+            }
+            else if (PREFETECH_SIZE_ELEMENT.equalsIgnoreCase(attributes.item(j).getNodeName()))
+            {
+               prefetchSize = Integer.parseInt(attributes.item(j).getTextContent().trim());
+            }
+            else if (CLIENTID_ELEMENT.equalsIgnoreCase(attributes.item(j).getNodeName()))
+            {
+               clientID = attributes.item(j).getTextContent();
+            }
+            if (DUPS_OK_BATCH_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
+            {
+               dupsOKBatchSize = Integer.parseInt(attributes.item(j).getTextContent().trim());
+            }
+            if (SUPPORTS_FAILOVER.equalsIgnoreCase(attributes.item(j).getNodeName()))
+            {
+               //setSupportsFailover(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
+            }
+            if (SUPPORTS_LOAD_BALANCING.equalsIgnoreCase(attributes.item(j).getNodeName()))
+            {
+               //setSupportsLoadBalancing(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
+            }
+            if (LOAD_BALANCING_FACTORY.equalsIgnoreCase(attributes.item(j).getNodeName()))
+            {
+               //setLoadBalancingFactory(attributes.item(j).getTextContent().trim());
+            }
+         }
+//       The server peer strict setting overrides the connection factory
+         boolean useStrict = messagingServer.getConfiguration().isStrictTck() || cfStrictTck;
 
-         //The server peer strict setting overrides the connection factory
-         boolean useStrict = messagingServer.getConfiguration().isStrictTck() || connectionFactory.isStrictTck();
-
          ClientConnectionFactoryImpl delegate =
-                 new ClientConnectionFactoryImpl(id, messagingServer.getConfiguration().getMessagingServerID(),
-                         serverLocator.getURI(), version, false, useStrict);
+                 new ClientConnectionFactoryImpl(messagingServer.getConfiguration().getMessagingServerID(),
+                         serverLocator.getURI(), version, false, useStrict, prefetchSize, dupsOKBatchSize, clientID);
 
          log.debug(this + " created local delegate " + delegate);
 
          // Registering with the dispatcher should always be the last thing otherwise a client could
          // use a partially initialised object
 
-         messagingServer.getMinaService().getDispatcher().register(endpoint.newHandler());
+         //messagingServer.getMinaService().getDispatcher().register(endpoint.newHandler());
          return new JBossConnectionFactory(delegate);
       }
       else if (node.getNodeName().equals(QUEUE_NODE_NAME))
@@ -232,6 +256,7 @@
 
    /**
     * undeploys an element
+    *
     * @param node the element to undeploy
     * @throws Exception .
     */
@@ -250,71 +275,4 @@
       return "jbm-jndi.xml";
    }
 
-   /**
-    * creates a connection factory
-    * @param node the config
-    * @return a ConnectionFactory
-    * @throws Exception .
-    */
-   private ConnectionFactory createConnectionFactory(Node node) throws Exception
-   {
-      String clientId = null;
-      String name = node.getAttributes().getNamedItem(getKeyAttribute()).getNodeValue();
-      ConnectionFactory connectionFactory = new ConnectionFactory(clientId);
-      connectionFactory.setName(name);
-
-      NodeList attributes = node.getChildNodes();
-      for (int j = 0; j < attributes.getLength(); j++)
-      {
-         if (CLIENTID_ELEMENT.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            clientId = attributes.item(j).getTextContent();
-            connectionFactory.setClientID(clientId);
-         }
-
-         if (PREFETECH_SIZE_ELEMENT.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setPrefetchSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
-         }
-         if (DEF_TEMP_Q_FULL_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setDefaultTempQueueFullSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
-         }
-         if (DEF_TEMP_Q_PAGE_SIZE_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setDefaultTempQueuePageSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
-         }
-         if (DEF_TEMP_Q_DOWN_CACHE_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setDefaultTempQueueDownCacheSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
-         }
-         if (DUPS_OK_BATCH_SIZE.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setDupsOKBatchSize(Integer.parseInt(attributes.item(j).getTextContent().trim()));
-         }
-         if (SUPPORTS_FAILOVER.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setSupportsFailover(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
-         }
-         if (SUPPORTS_LOAD_BALANCING.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setSupportsLoadBalancing(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
-         }
-         if (LOAD_BALANCING_FACTORY.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setLoadBalancingFactory(attributes.item(j).getTextContent().trim());
-         }
-         if (STRICT_TCK.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setStrictTck(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
-         }
-         if (DISABLE_REMOTING_CHECKS.equalsIgnoreCase(attributes.item(j).getNodeName()))
-         {
-            connectionFactory.setDisableRemotingChecks(Boolean.parseBoolean(attributes.item(j).getTextContent().trim()));
-         }
-
-      }
-      return connectionFactory;
-   }
-
 }

Deleted: trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -1,244 +0,0 @@
-/**
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.jms.server.connectionfactory;
-
-import java.util.List;
-
-import org.jboss.jms.client.plugin.LoadBalancingFactory;
-import org.jboss.messaging.util.Logger;
-
-/**
- * A deployable JBoss Messaging connection factory.
- * 
- * The default connection factory does not support load balancing or
- * automatic failover.
- * 
- *
- * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * @author <a href="mailto:ataylor at redhat.com">Andy Taylor</a>
- * @version <tt>$Revision$</tt>
- *
- * $Id$
- */
-public class ConnectionFactory
-{
-   // Constants ------------------------------------------------------------------------------------
-
-   // Static ---------------------------------------------------------------------------------------
-   private static final Logger log = Logger.getLogger(ConnectionFactory.class);
-   // Attributes -----------------------------------------------------------------------------------
-
-   private String clientID;
-   
-   private List<String> jndiBindings;
-   
-   private int prefetchSize = 150;
-   
-   private boolean slowConsumers;
-   
-   private boolean supportsFailover;
-   
-   private boolean supportsLoadBalancing;
-   
-   private LoadBalancingFactory loadBalancingFactory;
-   
-   private int defaultTempQueueFullSize = 200000;
-   
-   private int defaultTempQueuePageSize = 2000;
-   
-   private int defaultTempQueueDownCacheSize = 2000;
-   
-   private int dupsOKBatchSize = 1000;
-
-   private boolean strictTck;
-   
-   private boolean disableRemotingChecks;
-
-   private String name;
-   // Constructors ---------------------------------------------------------------------------------
-
-   public ConnectionFactory()
-   {
-      this(null);
-   }
-
-   public ConnectionFactory(String clientID)
-   {
-      this.clientID = clientID;
-
-      // by default, a clustered connection uses a round-robin load balancing policy
-      this.loadBalancingFactory = LoadBalancingFactory.getDefaultFactory();
-   }
-
-   // ServiceMBeanSupport overrides ----------------------------------------------------------------
-
-
-   // JMX managed attributes -----------------------------------------------------------------------
-
-
-   public void setClientID(String clientID)
-   {
-      this.clientID = clientID;
-   }
-
-   public int getDefaultTempQueueFullSize()
-   {
-      return defaultTempQueueFullSize;
-   }
-   
-   public void setDefaultTempQueueFullSize(int size)
-   {
-      this.defaultTempQueueFullSize = size;
-   }
-   
-   public int getDefaultTempQueuePageSize()
-   {
-      return defaultTempQueuePageSize;
-   }
-   
-   public void setDefaultTempQueuePageSize(int size)
-   {
-      this.defaultTempQueuePageSize = size;
-   }
-   
-   public int getDefaultTempQueueDownCacheSize()
-   {
-      return defaultTempQueueDownCacheSize;
-   }
-   
-   public void setDefaultTempQueueDownCacheSize(int size)
-   {
-      this.defaultTempQueueDownCacheSize = size;
-   }
-   
-   public int getPrefetchSize()
-   {
-      return prefetchSize;
-   }
-   
-   public void setPrefetchSize(int prefetchSize)
-   {
-      this.prefetchSize = prefetchSize;
-   }
-   
-   public boolean isSlowConsumers()
-   {
-   	return slowConsumers;
-   }
-   
-   public void setSlowConsumers(boolean slowConsumers)
-   {
-   	this.slowConsumers = slowConsumers;
-   }
-
-   public String getClientID()
-   {
-      return clientID;
-   }
-
-   public void setJNDIBindings(List<String> bindings) throws Exception
-   {
-      jndiBindings = bindings;
-   }
-
-   public List<String> getJNDIBindings()
-   {
-      if (jndiBindings == null)
-      {
-         return null;
-      }
-      return jndiBindings;
-   }
-
-   public boolean isSupportsFailover()
-   {
-      return supportsFailover;
-   }
-   
-   public void setSupportsFailover(boolean supportsFailover)
-   {
-      this.supportsFailover = supportsFailover;
-   }
-   
-   public boolean isSupportsLoadBalancing()
-   {
-      return supportsLoadBalancing;
-   }
-   
-   public void setSupportsLoadBalancing(boolean supportsLoadBalancing)
-   {
-      this.supportsLoadBalancing = supportsLoadBalancing;
-   }
-
-   public String getLoadBalancingFactory()
-   {
-      return loadBalancingFactory.getClass().getName();
-   }
-
-   public void setLoadBalancingFactory(String factoryName) throws Exception
-   {
-      
-      //We don't use Class.forName() since then it won't work with scoped deployments
-      Class clz = Thread.currentThread().getContextClassLoader().loadClass(factoryName);
-      
-      loadBalancingFactory = (LoadBalancingFactory)clz.newInstance();
-   }
-   
-   public void setDupsOKBatchSize(int size) throws Exception
-   {
-      this.dupsOKBatchSize = size;
-   }
-
-   public int getDupsOKBatchSize()
-   {
-   	return dupsOKBatchSize;
-   }
-
-   public boolean isStrictTck()
-   {
-   	return strictTck;
-   }
-
-   public void setStrictTck(boolean strictTck)
-   {
-   	this.strictTck = strictTck;
-   }
-   
-   public boolean isDisableRemotingChecks()
-   {
-   	return disableRemotingChecks;
-   }
-   
-   public void setDisableRemotingChecks(boolean disable)
-   {
-   	this.disableRemotingChecks = disable;
-   }
-
-   public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-   // JMX managed operations -----------------------------------------------------------------------
-
-   // Public ---------------------------------------------------------------------------------------
-
-   // Package protected ----------------------------------------------------------------------------
-
-   // Protected ------------------------------------------------------------------------------------
-
-   // Private --------------------------------------------------------------------------------------
-
-   
-   // Inner classes --------------------------------------------------------------------------------
-}

Added: trunk/src/main/org/jboss/jms/server/endpoint/ConnectionFactoryAdvisedPacketHandler.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ConnectionFactoryAdvisedPacketHandler.java	                        (rev 0)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ConnectionFactoryAdvisedPacketHandler.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -0,0 +1,199 @@
+/*
+   * JBoss, Home of Professional Open Source
+   * Copyright 2005, JBoss Inc., and individual contributors as indicated
+   * by the @authors tag. See the copyright.txt in the distribution for a
+   * full listing of individual contributors.
+   *
+   * This is free software; you can redistribute it and/or modify it
+   * under the terms of the GNU Lesser General Public License as
+   * published by the Free Software Foundation; either version 2.1 of
+   * the License, or (at your option) any later version.
+   *
+   * This software is distributed in the hope that it will be useful,
+   * but WITHOUT ANY WARRANTY; without even the implied warranty of
+   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   * Lesser General Public License for more details.
+   *
+   * You should have received a copy of the GNU Lesser General Public
+   * License along with this software; if not, write to the Free
+   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+   */
+package org.jboss.jms.server.endpoint;
+
+import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
+import org.jboss.jms.exception.MessagingJMSException;
+import org.jboss.logging.Logger;
+import org.jboss.messaging.core.MessagingServer;
+import org.jboss.messaging.core.remoting.PacketHandler;
+import org.jboss.messaging.core.remoting.PacketSender;
+import org.jboss.messaging.core.remoting.wireformat.*;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_UPDATECALLBACK;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
+import org.jboss.messaging.util.ExceptionUtil;
+
+import javax.jms.JMSException;
+
+/**
+ * A packet handler for creating connections. All ConnectionFactories will use the same instance of this
+ * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class ConnectionFactoryAdvisedPacketHandler implements
+        PacketHandler
+{
+   private static final Logger log = Logger.getLogger(ConnectionFactoryAdvisedPacketHandler.class);
+   MessagingServer messagingServer;
+
+
+   public ConnectionFactoryAdvisedPacketHandler(MessagingServer messagingServer)
+   {
+      this.messagingServer = messagingServer;
+   }/*
+   * The advantage to use String as ID is that we can leverage Java 5 UUID to
+   * generate these IDs. However theses IDs are 128 bite long and it increases
+   * the size of a packet (compared to integer or long).
+   *
+   * By switching to Long, we could reduce the size of the packet and maybe
+   * increase the performance (to check after some performance tests)
+   */
+   public String getID()
+   {
+      return ClientConnectionFactoryImpl.id;
+   }
+
+   public void handle(AbstractPacket packet, PacketSender sender)
+      {
+         try
+         {
+            AbstractPacket response = null;
+
+            PacketType type = packet.getType();
+            if (type == REQ_CREATECONNECTION)
+            {
+               CreateConnectionRequest request = (CreateConnectionRequest) packet;
+               response = createConnectionDelegate(request
+                     .getUsername(), request.getPassword(), request.getRemotingSessionID(),
+                     request.getClientVMID(), request.getPrefetchSize(), request.getDupsOKBatchSize(),
+                       request.getClientID(), request.getVersion());
+            }
+            else if (type == MSG_UPDATECALLBACK)
+            {
+               UpdateCallbackMessage message = (UpdateCallbackMessage) packet;
+               if (message.isAdd())
+               {
+                  addSender(message.getClientVMID(), message.getRemotingSessionID(), sender);
+               } else {
+                  removeSender(message.getClientVMID(), message.getRemotingSessionID(), sender);
+               }
+            } else
+            {
+               response = new JMSExceptionMessage(new MessagingJMSException(
+                     "Unsupported packet for browser: " + packet));
+            }
+
+            // reply if necessary
+            if (response != null)
+            {
+               response.normalize(packet);
+               sender.send(response);
+            }
+
+         } catch (JMSException e)
+         {
+            JMSExceptionMessage message = new JMSExceptionMessage(e);
+            message.normalize(packet);
+            sender.send(message);
+         }
+      }
+
+
+   public CreateConnectionResponse createConnectionDelegate(String username,
+                                                          String password,
+                                                          String remotingSessionID,
+                                                          String clientVMID, int prefetchSize, int dupsOKBatchSize,
+                                                          String clientID,
+                                                          byte versionToUse)
+      throws JMSException
+   {
+      try
+      {
+         return
+            createConnectionDelegateInternal(username, password,
+                                             remotingSessionID, clientVMID,  prefetchSize, dupsOKBatchSize, clientID,
+                                             versionToUse);
+      }
+      catch (Throwable t)
+      {
+         throw ExceptionUtil.handleJMSInvocation(t, this + " createFailoverConnectionDelegate");
+      }
+
+   }
+
+   private CreateConnectionResponse
+      createConnectionDelegateInternal(String username,
+                                       String password,
+                                       String remotingSessionID, String clientVMID, int prefetchSize, int dupsOKBatchSize,
+                                       String clientID,
+                                       byte versionToUse)
+      throws Exception
+   {
+      log.trace("creating a new connection for user " + username);
+
+      // Authenticate. Successful autentication will place a new SubjectContext on thread local,
+      // which will be used in the authorization process. However, we need to make sure we clean
+      // up thread local immediately after we used the information, otherwise some other people
+      // security my be screwed up, on account of thread local security stack being corrupted.
+
+      messagingServer.getSecurityManager().authenticate(username, password);
+
+      // We don't need the SubjectContext on thread local anymore, clean it up
+      SecurityActions.popSubjectContext();
+
+      String clientIDUsed = clientID;
+
+      // see if there is a preconfigured client id for the user
+      if (username != null)
+      {
+         String preconfClientID =
+            messagingServer.getJmsUserManagerInstance().getPreConfiguredClientID(username);
+
+         if (preconfClientID != null)
+         {
+            clientIDUsed = preconfClientID;
+         }
+      }
+
+      // create the corresponding "server-side" connection endpoint and register it with the
+      // server peer's ClientManager
+      final ServerConnectionEndpoint endpoint =
+         new ServerConnectionEndpoint(messagingServer, clientIDUsed, username, password, prefetchSize,
+                                      remotingSessionID, clientVMID, versionToUse,
+                                      dupsOKBatchSize);
+
+      String connectionID = endpoint.getConnectionID();
+
+      messagingServer.getMinaService().getDispatcher().register(endpoint.newHandler());
+
+      log.trace("created and registered " + endpoint);
+
+      return new CreateConnectionResponse(connectionID);
+   }
+   
+   public void addSender(String VMID, String remotingSessionID,
+         PacketSender sender) throws JMSException
+   {
+      log.debug("Adding PacketSender on ConnectionFactory");
+      messagingServer.getConnectionManager().addConnectionFactoryCallback(getID(), VMID, remotingSessionID, sender);
+   }
+
+   public void removeSender(String VMID, String remotingSessionID,
+         PacketSender sender) throws JMSException
+   {
+      log.debug("Removing PacketSender on ConnectionFactory");
+      messagingServer.getConnectionManager().removeConnectionFactoryCallback(getID(), VMID, sender);
+   }
+
+}

Modified: trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -21,31 +21,6 @@
   */
 package org.jboss.jms.server.endpoint;
 
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CLOSE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDTRANSACTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STARTCONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STOPCONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CLOSING;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATESESSION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_GETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_GETPREPAREDTRANSACTIONS;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-
-import javax.jms.IllegalStateException;
-import javax.jms.InvalidDestinationException;
-import javax.jms.JMSException;
-import javax.transaction.xa.Xid;
-
 import org.jboss.jms.exception.MessagingJMSException;
 import org.jboss.jms.server.ConnectionManager;
 import org.jboss.jms.server.SecurityStore;
@@ -53,37 +28,26 @@
 import org.jboss.jms.server.container.SecurityAspect;
 import org.jboss.jms.server.security.CheckType;
 import org.jboss.jms.tx.ClientTransaction;
-import org.jboss.jms.tx.TransactionRequest;
 import org.jboss.jms.tx.ClientTransaction.SessionTxState;
-import org.jboss.messaging.core.Binding;
-import org.jboss.messaging.core.Condition;
-import org.jboss.messaging.core.Destination;
-import org.jboss.messaging.core.DestinationType;
-import org.jboss.messaging.core.Message;
-import org.jboss.messaging.core.MessagingServer;
-import org.jboss.messaging.core.PostOffice;
-import org.jboss.messaging.core.Transaction;
+import org.jboss.jms.tx.TransactionRequest;
+import org.jboss.messaging.core.*;
 import org.jboss.messaging.core.impl.ConditionImpl;
 import org.jboss.messaging.core.impl.TransactionImpl;
 import org.jboss.messaging.core.remoting.PacketHandler;
 import org.jboss.messaging.core.remoting.PacketSender;
-import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
-import org.jboss.messaging.core.remoting.wireformat.ClosingRequest;
-import org.jboss.messaging.core.remoting.wireformat.ClosingResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateSessionRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateSessionResponse;
-import org.jboss.messaging.core.remoting.wireformat.GetClientIDResponse;
-import org.jboss.messaging.core.remoting.wireformat.GetPreparedTransactionsResponse;
-import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
-import org.jboss.messaging.core.remoting.wireformat.NullPacket;
-import org.jboss.messaging.core.remoting.wireformat.PacketType;
-import org.jboss.messaging.core.remoting.wireformat.SendTransactionMessage;
-import org.jboss.messaging.core.remoting.wireformat.SetClientIDMessage;
+import org.jboss.messaging.core.remoting.wireformat.*;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.*;
 import org.jboss.messaging.core.tx.MessagingXid;
 import org.jboss.messaging.util.ExceptionUtil;
 import org.jboss.messaging.util.Logger;
 import org.jboss.messaging.util.Util;
 
+import javax.jms.IllegalStateException;
+import javax.jms.InvalidDestinationException;
+import javax.jms.JMSException;
+import javax.transaction.xa.Xid;
+import java.util.*;
+
 /**
  * Concrete implementation of ConnectionEndpoint.
  *
@@ -136,12 +100,8 @@
    private Set temporaryDestinations;
 
    private int prefetchSize;
-   private int defaultTempQueueFullSize;
-   private int defaultTempQueuePageSize;
-   private int defaultTempQueueDownCacheSize;
    private int dupsOKBatchSize;
 
-   private ServerConnectionFactoryEndpoint cfendpoint;
 
    private byte usingVersion;
 
@@ -153,10 +113,6 @@
     */
    public ServerConnectionEndpoint(MessagingServer messagingServer, String clientID,
                                    String username, String password, int prefetchSize,
-                                   int defaultTempQueueFullSize,
-                                   int defaultTempQueuePageSize,
-                                   int defaultTempQueueDownCacheSize,                                   
-                                   ServerConnectionFactoryEndpoint cfendpoint,
                                    String remotingSessionID,
                                    String clientVMID,
                                    byte versionToUse,
@@ -164,7 +120,6 @@
    {
       this.messagingServer = messagingServer;
 
-      this.cfendpoint = cfendpoint;
 
       sm = messagingServer.getSecurityManager();
       cm = messagingServer.getConnectionManager();
@@ -177,10 +132,6 @@
       this.clientID = clientID;
       this.prefetchSize = prefetchSize;
 
-      this.defaultTempQueueFullSize = defaultTempQueueFullSize;
-      this.defaultTempQueuePageSize = defaultTempQueuePageSize;
-      this.defaultTempQueueDownCacheSize = defaultTempQueueDownCacheSize;
-
       this.dupsOKBatchSize = dupsOKBatchSize;
 
       sessions = new HashMap();
@@ -544,10 +495,6 @@
       return messagingServer;
    }
 
-   public ServerConnectionFactoryEndpoint getConnectionFactoryEndpoint()
-   {
-      return cfendpoint;
-   }
 
    public Collection getSessions()
    {
@@ -581,21 +528,6 @@
       return prefetchSize;
    }
 
-   int getDefaultTempQueueFullSize()
-   {
-      return defaultTempQueueFullSize;
-   }
-
-   int getDefaultTempQueuePageSize()
-   {
-      return defaultTempQueuePageSize;
-   }
-
-   int getDefaultTempQueueDownCacheSize()
-   {
-      return defaultTempQueueDownCacheSize;
-   }
-
    String getConnectionID()
    {
       return id;

Deleted: trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionFactoryEndpoint.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -1,292 +0,0 @@
-/*
-  * JBoss, Home of Professional Open Source
-  * Copyright 2005, JBoss Inc., and individual contributors as indicated
-  * by the @authors tag. See the copyright.txt in the distribution for a
-  * full listing of individual contributors.
-  *
-  * This is free software; you can redistribute it and/or modify it
-  * under the terms of the GNU Lesser General Public License as
-  * published by the Free Software Foundation; either version 2.1 of
-  * the License, or (at your option) any later version.
-  *
-  * This software is distributed in the hope that it will be useful,
-  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  * Lesser General Public License for more details.
-  *
-  * You should have received a copy of the GNU Lesser General Public
-  * License along with this software; if not, write to the Free
-  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  */
-package org.jboss.jms.server.endpoint;
-
-
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_UPDATECALLBACK;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
-
-import java.util.Map;
-
-import javax.jms.JMSException;
-
-import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
-import org.jboss.jms.exception.MessagingJMSException;
-import org.jboss.messaging.core.MessagingServer;
-import org.jboss.messaging.core.remoting.PacketHandler;
-import org.jboss.messaging.core.remoting.PacketSender;
-import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
-import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
-import org.jboss.messaging.core.remoting.wireformat.PacketType;
-import org.jboss.messaging.core.remoting.wireformat.UpdateCallbackMessage;
-import org.jboss.messaging.util.ExceptionUtil;
-import org.jboss.messaging.util.Logger;
-
-/**
- * Concrete implementation of ConnectionFactoryEndpoint
- *
- * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
- * @version <tt>$Revision$</tt>
- *
- * $Id$
- */
-public class ServerConnectionFactoryEndpoint implements ConnectionFactoryEndpoint
-{
-   // Constants ------------------------------------------------------------------------------------
-
-   private static final Logger log = Logger.getLogger(ServerConnectionFactoryEndpoint.class);
-
-   // Static ---------------------------------------------------------------------------------------
-
-   // Attributes -----------------------------------------------------------------------------------
-
-   private MessagingServer messagingServer;
-
-   private String clientID;
-
-   private String uniqueName;
-
-   private String id;
-
-   private int prefetchSize;
-
-   private int defaultTempQueueFullSize;
-
-   private int defaultTempQueuePageSize;
-
-   private int defaultTempQueueDownCacheSize;
-
-   private int dupsOKBatchSize;
-     
-   /** Cluster Topology on ClusteredConnectionFactories
-       Information to failover to other connections on clients **/
-   ClientConnectionFactoryImpl[] delegates;
-
-   /** Cluster Topology on ClusteredConnectionFactories
-       Information to failover to other connections on clients **/
-   Map failoverMap;
-
-   
-   // Constructors ---------------------------------------------------------------------------------
-   public ServerConnectionFactoryEndpoint(String uniqueName, String id, MessagingServer messagingServer,
-                                          String defaultClientID,
-                                          int preFetchSize,
-                                          int defaultTempQueueFullSize,
-                                          int defaultTempQueuePageSize,
-                                          int defaultTempQueueDownCacheSize,
-                                          int dupsOKBatchSize)
-   {
-      this.uniqueName = uniqueName;
-      this.messagingServer = messagingServer;
-      this.clientID = defaultClientID;
-      this.id = id;
-      this.prefetchSize = preFetchSize;
-      this.defaultTempQueueFullSize = defaultTempQueueFullSize;
-      this.defaultTempQueuePageSize = defaultTempQueuePageSize;
-      this.defaultTempQueueDownCacheSize = defaultTempQueueDownCacheSize;
-      this.dupsOKBatchSize = dupsOKBatchSize;
-   }
-
-   // ConnectionFactoryDelegate implementation -----------------------------------------------------
-
-   public CreateConnectionResponse createConnectionDelegate(String username,
-                                                          String password,                                                          
-                                                          String remotingSessionID,
-                                                          String clientVMID,
-                                                          byte versionToUse)
-      throws JMSException      
-   {
-      try
-      {
-         return
-            createConnectionDelegateInternal(username, password, 
-                                             remotingSessionID, clientVMID,
-                                             versionToUse);        
-      }
-      catch (Throwable t)
-      {
-         throw ExceptionUtil.handleJMSInvocation(t, this + " createFailoverConnectionDelegate");
-      }
-      
-   }
-
-   private CreateConnectionResponse
-      createConnectionDelegateInternal(String username,
-                                       String password,                                       
-                                       String remotingSessionID, String clientVMID,
-                                       byte versionToUse)
-      throws Exception
-   {
-      log.trace("creating a new connection for user " + username);
-
-      // Authenticate. Successful autentication will place a new SubjectContext on thread local,
-      // which will be used in the authorization process. However, we need to make sure we clean
-      // up thread local immediately after we used the information, otherwise some other people
-      // security my be screwed up, on account of thread local security stack being corrupted.
-
-      messagingServer.getSecurityManager().authenticate(username, password);
-
-      // We don't need the SubjectContext on thread local anymore, clean it up
-      SecurityActions.popSubjectContext();
-
-      String clientIDUsed = clientID;
-
-      // see if there is a preconfigured client id for the user
-      if (username != null)
-      {
-         String preconfClientID =
-            messagingServer.getJmsUserManagerInstance().getPreConfiguredClientID(username);
-
-         if (preconfClientID != null)
-         {
-            clientIDUsed = preconfClientID;
-         }                  
-      }
-
-      // create the corresponding "server-side" connection endpoint and register it with the
-      // server peer's ClientManager
-      final ServerConnectionEndpoint endpoint =
-         new ServerConnectionEndpoint(messagingServer, clientIDUsed, username, password, prefetchSize,
-                                      defaultTempQueueFullSize, defaultTempQueuePageSize,
-                                      defaultTempQueueDownCacheSize, this,
-                                      remotingSessionID, clientVMID, versionToUse,
-                                      dupsOKBatchSize);
-
-      String connectionID = endpoint.getConnectionID();
-
-      messagingServer.getMinaService().getDispatcher().register(endpoint.newHandler());
-
-      log.trace("created and registered " + endpoint);
-
-      return new CreateConnectionResponse(connectionID);
-   }
-      
-   public void addSender(String VMID, String remotingSessionID,
-         PacketSender sender) throws JMSException
-   {
-      log.debug("Adding PacketSender on ConnectionFactory");
-      messagingServer.getConnectionManager().addConnectionFactoryCallback(this.uniqueName, VMID, remotingSessionID, sender);
-   }
-   
-   public void removeSender(String VMID, String remotingSessionID,
-         PacketSender sender) throws JMSException
-   {
-      log.debug("Removing PacketSender on ConnectionFactory");
-      messagingServer.getConnectionManager().removeConnectionFactoryCallback(this.uniqueName, VMID, sender);
-   }
-
-   // Public ---------------------------------------------------------------------------------------
-   
-   public String getID()
-   {
-      return id;
-   }
-
-   public MessagingServer getMessagingServer()
-   {
-      return messagingServer;
-   }
-
-   public String toString()
-   {
-      return "ConnectionFactoryEndpoint[" + id + "]";
-   }
-
-   public PacketHandler newHandler()
-   {
-      return new ConnectionFactoryAdvisedPacketHandler();
-   }
-
-   // Package protected ----------------------------------------------------------------------------
-   
-   // Protected ------------------------------------------------------------------------------------
-
-   // Private --------------------------------------------------------------------------------------
-
-   // Inner classes --------------------------------------------------------------------------------
-
-
-   private final class ConnectionFactoryAdvisedPacketHandler implements
-           PacketHandler
-   {
-      public String getID()
-      {
-         return ServerConnectionFactoryEndpoint.this.id;
-      }
-
-      public void handle(AbstractPacket packet, PacketSender sender)
-      {
-         try
-         {
-            AbstractPacket response = null;
-
-            PacketType type = packet.getType();
-            if (type == REQ_CREATECONNECTION)
-            {
-               CreateConnectionRequest request = (CreateConnectionRequest) packet;
-               response = createConnectionDelegate(request
-                     .getUsername(), request.getPassword(), request.getRemotingSessionID(),
-                     request.getClientVMID(), request.getVersion());
-            }
-            else if (type == MSG_UPDATECALLBACK)
-            {
-               UpdateCallbackMessage message = (UpdateCallbackMessage) packet;
-               if (message.isAdd())
-               {
-                  addSender(message.getClientVMID(), message.getRemotingSessionID(), sender);
-               } else {
-                  removeSender(message.getClientVMID(), message.getRemotingSessionID(), sender);
-               }
-            } else
-            {
-               response = new JMSExceptionMessage(new MessagingJMSException(
-                     "Unsupported packet for browser: " + packet));
-            }
-
-            // reply if necessary
-            if (response != null)
-            {
-               response.normalize(packet);
-               sender.send(response);
-            }
-
-         } catch (JMSException e)
-         {
-            JMSExceptionMessage message = new JMSExceptionMessage(e);
-            message.normalize(packet);
-            sender.send(message);
-         }
-      }
-
-      @Override
-      public String toString()
-      {
-         return "ConnectionFactoryAdvisedPacketHandler[id=" + id + "]";
-      }
-
-   }
-
-}

Modified: trunk/src/main/org/jboss/messaging/core/Configuration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/Configuration.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/messaging/core/Configuration.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -21,17 +21,17 @@
  */
 package org.jboss.messaging.core;
 
+import org.jboss.jms.server.security.Role;
+import org.jboss.messaging.util.XMLUtil;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.io.Serializable;
 import java.net.URL;
 import java.util.HashSet;
 
-import org.jboss.jms.server.security.Role;
-import org.jboss.messaging.util.XMLUtil;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
 /**
  * This is the JBM configuration. It is used to configure the MessagingServer.
  * 
@@ -198,6 +198,10 @@
    public  void addPropertyChangeListener(
          PropertyChangeListener listener)
    {
+      if(propertyChangeSupport == null)
+      {
+         propertyChangeSupport = new PropertyChangeSupport(this);
+      }
       propertyChangeSupport.addPropertyChangeListener(listener);
    }
 

Modified: trunk/src/main/org/jboss/messaging/core/impl/server/MessagingServerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/server/MessagingServerImpl.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/messaging/core/impl/server/MessagingServerImpl.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -27,6 +27,7 @@
 import org.jboss.jms.server.SecurityStore;
 import org.jboss.jms.server.TransactionRepository;
 import org.jboss.jms.server.connectionmanager.SimpleConnectionManager;
+import org.jboss.jms.server.endpoint.ConnectionFactoryAdvisedPacketHandler;
 import org.jboss.jms.server.endpoint.ServerSessionEndpoint;
 import org.jboss.jms.server.plugin.contract.JMSUserManager;
 import org.jboss.jms.server.security.Role;
@@ -175,7 +176,9 @@
          connectionManager.start();
          memoryManager.start();
          postOffice.start();
-
+         ConnectionFactoryAdvisedPacketHandler connectionFactoryAdvisedPacketHandler =
+                 new ConnectionFactoryAdvisedPacketHandler(this);
+         getMinaService().getDispatcher().register(connectionFactoryAdvisedPacketHandler);
          started = true;
          log.info("JBoss Messaging " + getVersion().getProviderVersion() + " server [" +
                  configuration.getMessagingServerID() + "] started");

Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/ConnectionFactoryCreateConnectionRequestCodec.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -6,10 +6,9 @@
  */
 package org.jboss.messaging.core.remoting.codec;
 
+import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
 import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
 
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
-
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
  */
@@ -43,12 +42,18 @@
       String clientVMID = request.getClientVMID();
       String username = request.getUsername();
       String password = request.getPassword();
+      int prefetchSize = request.getPrefetchSize();
+      int dupOkBatchSize = request.getDupsOKBatchSize();
+      String clientID = request.getClientID();
 
       int bodyLength = 1 // version
             + sizeof(remotingSessionID)
             + sizeof(clientVMID)
             + sizeof(username) 
-            + sizeof(password);
+            + sizeof(password)
+            + INT_LENGTH
+            + INT_LENGTH
+            + sizeof(clientID);
 
       out.putInt(bodyLength);
       out.put(version);
@@ -56,6 +61,9 @@
       out.putNullableString(clientVMID);
       out.putNullableString(username);
       out.putNullableString(password);
+      out.putInt(prefetchSize);
+      out.putInt(dupOkBatchSize);
+      out.putNullableString(clientID);
    }
 
    @Override
@@ -72,9 +80,12 @@
       String clientVMID = in.getNullableString();
       String username = in.getNullableString();
       String password = in.getNullableString();
+      int prefetchSize = in.getInt();
+      int dupOkBatchSize = in.getInt();
+      String clientID = in.getNullableString();
 
-      return new CreateConnectionRequest(version, remotingSessionID, 
-            clientVMID, username, password);
+      return new CreateConnectionRequest(version, remotingSessionID,
+            clientVMID, username, password, prefetchSize, dupOkBatchSize, clientID);
    }
 
    // Package protected ---------------------------------------------

Modified: trunk/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/src/main/org/jboss/messaging/core/remoting/wireformat/CreateConnectionRequest.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -12,6 +12,7 @@
 /**
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
  * 
  * @version <tt>$Revision$</tt>
  */
@@ -26,13 +27,17 @@
    private final String clientVMID;
    private final String username;
    private final String password;
+   private int prefetchSize;
+   private int dupsOKBatchSize;
+   private String clientID;
 
    // Static --------------------------------------------------------
 
    // Constructors --------------------------------------------------
 
    public CreateConnectionRequest(byte version,
-         String remotingSessionID, String clientVMID, String username, String password)
+         String remotingSessionID, String clientVMID, String username, String password,
+         int prefetchSize, int dupsOKBatchSize, String clientID)
    {
       super(REQ_CREATECONNECTION);
 
@@ -44,6 +49,9 @@
       this.clientVMID = clientVMID;
       this.username = username;
       this.password = password;
+      this.prefetchSize = prefetchSize;
+      this.dupsOKBatchSize = dupsOKBatchSize;
+      this.clientID = clientID;
    }
 
    // Public --------------------------------------------------------
@@ -86,6 +94,36 @@
       return buf.toString();
    }
 
+   public int getPrefetchSize()
+   {
+      return prefetchSize;
+   }
+
+   public void setPrefetchSize(int prefetchSize)
+   {
+      this.prefetchSize = prefetchSize;
+   }
+
+   public int getDupsOKBatchSize()
+   {
+      return dupsOKBatchSize;
+   }
+
+   public void setDupsOKBatchSize(int dupsOKBatchSize)
+   {
+      this.dupsOKBatchSize = dupsOKBatchSize;
+   }
+
+   public String getClientID()
+   {
+      return clientID;
+   }
+
+   public void setClientID(String clientID)
+   {
+      this.clientID = clientID;
+   }
+
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------
@@ -94,4 +132,5 @@
 
    // Inner classes -------------------------------------------------
 
+
 }

Modified: trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -6,82 +6,7 @@
  */
 package org.jboss.messaging.core.remoting.wireformat.test.unit;
 
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.FALSE;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.INT_LENGTH;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.LONG_LENGTH;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.TRUE;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.encodeMessage;
-import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.sizeof;
-import static org.jboss.messaging.core.remoting.codec.SendTransactionMessageCodec.encodeTransactionRequest;
-import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.NOT_NULL_STRING;
-import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.NULL_BYTE;
-import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.NULL_STRING;
-import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.UTF_8_ENCODER;
-import static org.jboss.messaging.core.remoting.wireformat.AbstractPacket.NO_ID_SET;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_ACKDELIVERIES;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_ADDTEMPORARYDESTINATION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_BROWSER_RESET;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CANCELDELIVERIES;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CANCELDELIVERY;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CHANGERATE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_CLOSE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_DELETETEMPORARYDESTINATION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_DELIVERMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_JMSEXCEPTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SENDTRANSACTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_SETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STARTCONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_STOPCONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_UNSUBSCRIBE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.MSG_UPDATECALLBACK;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.NULL;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_ACKDELIVERY;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_HASNEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_NEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_BROWSER_NEXTMESSAGEBLOCK;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CLOSING;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATEBROWSER;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATECONSUMER;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATEDESTINATION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_CREATESESSION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_GETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.REQ_GETPREPAREDTRANSACTIONS;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_ACKDELIVERY;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_HASNEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_NEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_BROWSER_NEXTMESSAGEBLOCK;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CLOSING;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATEBROWSER;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONNECTION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATECONSUMER;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATEDESTINATION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_CREATESESSION;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_GETCLIENTID;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_GETPREPAREDTRANSACTIONS;
-import static org.jboss.messaging.core.remoting.wireformat.PacketType.TEXT;
-import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsAcks;
-import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsByteArrays;
-import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsCancels;
-import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertSameXids;
-import static org.jboss.messaging.test.unit.RandomUtil.randomByte;
-import static org.jboss.messaging.test.unit.RandomUtil.randomBytes;
-import static org.jboss.messaging.test.unit.RandomUtil.randomInt;
-import static org.jboss.messaging.test.unit.RandomUtil.randomLong;
-import static org.jboss.messaging.test.unit.RandomUtil.randomString;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.jms.InvalidDestinationException;
-import javax.jms.JMSException;
-
 import junit.framework.TestCase;
-
 import org.apache.mina.common.IoBuffer;
 import org.jboss.jms.client.impl.Ack;
 import org.jboss.jms.client.impl.AckImpl;
@@ -96,90 +21,26 @@
 import org.jboss.messaging.core.Message;
 import org.jboss.messaging.core.impl.DestinationImpl;
 import org.jboss.messaging.core.impl.MessageImpl;
-import org.jboss.messaging.core.remoting.codec.AbstractPacketCodec;
-import org.jboss.messaging.core.remoting.codec.AcknowledgeDeliveriesRequestCodec;
-import org.jboss.messaging.core.remoting.codec.AcknowledgeDeliveryRequestCodec;
-import org.jboss.messaging.core.remoting.codec.AcknowledgeDeliveryResponseCodec;
-import org.jboss.messaging.core.remoting.codec.AddTemporaryDestinationMessageCodec;
-import org.jboss.messaging.core.remoting.codec.BrowserHasNextMessageResponseCodec;
-import org.jboss.messaging.core.remoting.codec.BrowserNextMessageBlockRequestCodec;
-import org.jboss.messaging.core.remoting.codec.BrowserNextMessageBlockResponseCodec;
-import org.jboss.messaging.core.remoting.codec.BrowserNextMessageResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CancelDeliveriesMessageCodec;
-import org.jboss.messaging.core.remoting.codec.CancelDeliveryMessageCodec;
-import org.jboss.messaging.core.remoting.codec.ChangeRateMessageCodec;
-import org.jboss.messaging.core.remoting.codec.ClosingRequestCodec;
-import org.jboss.messaging.core.remoting.codec.ClosingResponseCodec;
-import org.jboss.messaging.core.remoting.codec.ConnectionFactoryCreateConnectionRequestCodec;
-import org.jboss.messaging.core.remoting.codec.ConnectionFactoryCreateConnectionResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CreateBrowserRequestCodec;
-import org.jboss.messaging.core.remoting.codec.CreateBrowserResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CreateConsumerRequestCodec;
-import org.jboss.messaging.core.remoting.codec.CreateConsumerResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CreateDestinationRequestCodec;
-import org.jboss.messaging.core.remoting.codec.CreateDestinationResponseCodec;
-import org.jboss.messaging.core.remoting.codec.CreateSessionRequestCodec;
-import org.jboss.messaging.core.remoting.codec.CreateSessionResponseCodec;
-import org.jboss.messaging.core.remoting.codec.DeleteTemporaryDestinationMessageCodec;
-import org.jboss.messaging.core.remoting.codec.DeliverMessageCodec;
-import org.jboss.messaging.core.remoting.codec.GetClientIDResponseCodec;
-import org.jboss.messaging.core.remoting.codec.GetPreparedTransactionsResponseCodec;
-import org.jboss.messaging.core.remoting.codec.JMSExceptionMessageCodec;
-import org.jboss.messaging.core.remoting.codec.RemotingBuffer;
-import org.jboss.messaging.core.remoting.codec.SendMessageCodec;
-import org.jboss.messaging.core.remoting.codec.SendTransactionMessageCodec;
-import org.jboss.messaging.core.remoting.codec.SetClientIDMessageCodec;
-import org.jboss.messaging.core.remoting.codec.TextPacketCodec;
-import org.jboss.messaging.core.remoting.codec.UnsubscribeMessageCodec;
-import org.jboss.messaging.core.remoting.codec.UpdateCallbackMessageCodec;
+import org.jboss.messaging.core.remoting.codec.*;
+import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.*;
+import static org.jboss.messaging.core.remoting.codec.SendTransactionMessageCodec.encodeTransactionRequest;
+import org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.*;
 import org.jboss.messaging.core.remoting.impl.mina.PacketCodecFactory;
-import org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.BufferWrapper;
-import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
-import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveriesMessage;
-import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryRequest;
-import org.jboss.messaging.core.remoting.wireformat.AcknowledgeDeliveryResponse;
-import org.jboss.messaging.core.remoting.wireformat.AddTemporaryDestinationMessage;
-import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageRequest;
-import org.jboss.messaging.core.remoting.wireformat.BrowserHasNextMessageResponse;
-import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageBlockRequest;
-import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageBlockResponse;
-import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageRequest;
-import org.jboss.messaging.core.remoting.wireformat.BrowserNextMessageResponse;
-import org.jboss.messaging.core.remoting.wireformat.BrowserResetMessage;
-import org.jboss.messaging.core.remoting.wireformat.CancelDeliveriesMessage;
-import org.jboss.messaging.core.remoting.wireformat.CancelDeliveryMessage;
-import org.jboss.messaging.core.remoting.wireformat.ChangeRateMessage;
-import org.jboss.messaging.core.remoting.wireformat.CloseMessage;
-import org.jboss.messaging.core.remoting.wireformat.ClosingRequest;
-import org.jboss.messaging.core.remoting.wireformat.ClosingResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateBrowserRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateBrowserResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateConsumerRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateConsumerResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateDestinationRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateDestinationResponse;
-import org.jboss.messaging.core.remoting.wireformat.CreateSessionRequest;
-import org.jboss.messaging.core.remoting.wireformat.CreateSessionResponse;
-import org.jboss.messaging.core.remoting.wireformat.DeleteTemporaryDestinationMessage;
-import org.jboss.messaging.core.remoting.wireformat.DeliverMessage;
-import org.jboss.messaging.core.remoting.wireformat.GetClientIDRequest;
-import org.jboss.messaging.core.remoting.wireformat.GetClientIDResponse;
-import org.jboss.messaging.core.remoting.wireformat.GetPreparedTransactionsRequest;
-import org.jboss.messaging.core.remoting.wireformat.GetPreparedTransactionsResponse;
-import org.jboss.messaging.core.remoting.wireformat.JMSExceptionMessage;
-import org.jboss.messaging.core.remoting.wireformat.NullPacket;
-import org.jboss.messaging.core.remoting.wireformat.SendMessage;
-import org.jboss.messaging.core.remoting.wireformat.SendTransactionMessage;
-import org.jboss.messaging.core.remoting.wireformat.SetClientIDMessage;
-import org.jboss.messaging.core.remoting.wireformat.StartConnectionMessage;
-import org.jboss.messaging.core.remoting.wireformat.StopConnectionMessage;
-import org.jboss.messaging.core.remoting.wireformat.TextPacket;
-import org.jboss.messaging.core.remoting.wireformat.UnsubscribeMessage;
-import org.jboss.messaging.core.remoting.wireformat.UpdateCallbackMessage;
+import org.jboss.messaging.core.remoting.wireformat.*;
+import static org.jboss.messaging.core.remoting.wireformat.AbstractPacket.NO_ID_SET;
+import static org.jboss.messaging.core.remoting.wireformat.PacketType.*;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.*;
 import org.jboss.messaging.core.tx.MessagingXid;
+import static org.jboss.messaging.test.unit.RandomUtil.*;
 
+import javax.jms.InvalidDestinationException;
+import javax.jms.JMSException;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
  * 
@@ -418,15 +279,18 @@
       String clientVMID = randomString();
       String username = null;
       String password = null;
+      int prefetchSize = 0;
+      int dupsOkBatchSize = 150;
+      String clientID = null;
 
       CreateConnectionRequest request = new CreateConnectionRequest(version,
-            remotingSessionID, clientVMID, username, password);
+            remotingSessionID, clientVMID, username, password, prefetchSize, dupsOkBatchSize, null);
       addVersion(request);
       
       AbstractPacketCodec<CreateConnectionRequest> codec = new ConnectionFactoryCreateConnectionRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
-      checkBody(buffer, version, remotingSessionID, clientVMID, username, password);      
+      checkBody(buffer, version, remotingSessionID, clientVMID, username, password, prefetchSize, dupsOkBatchSize, clientID);      
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);

Modified: trunk/tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java	2008-01-24 04:54:09 UTC (rev 3626)
+++ trunk/tests/src/org/jboss/test/messaging/tools/container/LocalTestServer.java	2008-01-24 08:43:34 UTC (rev 3627)
@@ -21,42 +21,14 @@
 */
 package org.jboss.test.messaging.tools.container;
 
-import java.io.File;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.jms.InvalidDestinationException;
-import javax.management.NotificationListener;
-import javax.management.ObjectName;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NameNotFoundException;
-import javax.sql.DataSource;
-import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
-
 import org.jboss.jms.client.JBossConnectionFactory;
 import org.jboss.jms.client.impl.ClientConnectionFactoryImpl;
 import org.jboss.jms.destination.JBossQueue;
 import org.jboss.jms.destination.JBossTopic;
-import org.jboss.jms.server.connectionfactory.ConnectionFactory;
-import org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint;
 import org.jboss.jms.server.security.Role;
 import org.jboss.jms.tx.ResourceManagerFactory;
 import org.jboss.logging.Logger;
-import org.jboss.messaging.core.Binding;
-import org.jboss.messaging.core.Condition;
-import org.jboss.messaging.core.DestinationType;
-import org.jboss.messaging.core.MessagingServer;
-import org.jboss.messaging.core.MessagingServerManagement;
+import org.jboss.messaging.core.*;
 import org.jboss.messaging.core.impl.ConditionImpl;
 import org.jboss.messaging.core.remoting.ServerLocator;
 import org.jboss.messaging.microcontainer.JBMBootstrapServer;
@@ -67,6 +39,21 @@
 import org.jboss.test.messaging.tools.jboss.MBeanConfigurationElement;
 import org.jboss.tm.TransactionManagerLocator;
 
+import javax.jms.InvalidDestinationException;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NameNotFoundException;
+import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+import javax.transaction.UserTransaction;
+import java.io.File;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.*;
+
 /**
  * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
@@ -80,7 +67,6 @@
 
    private static final Logger log = Logger.getLogger(LocalTestServer.class);
    private boolean started = false;
-   private Map<String, ConnectionFactory> factories = new HashMap<String, ConnectionFactory>();
    private HashMap<String, List<String>> allBindings = new HashMap<String, List<String>>();
    // Static ---------------------------------------------------------------------------------------
 
@@ -628,8 +614,7 @@
                                        int dupsOkBatchSize) throws Exception
    {
       log.trace("deploying connection factory with name: " + objectName);
-      ConnectionFactory connectionFactory = new ConnectionFactory(clientId);
-      connectionFactory.setName(objectName);
+      //ConnectionFactory connectionFactory = new ConnectionFactory(clientId);
       List<String> bindings = new ArrayList<String>();
       if (jndiBindings != null)
       {
@@ -638,51 +623,44 @@
             bindings.add(jndiBinding);
          }
       }
-      connectionFactory.setJNDIBindings(bindings);
-      if (prefetchSize > 0)
-         connectionFactory.setPrefetchSize(prefetchSize);
-      if (defaultTempQueueFullSize > 0)
-         connectionFactory.setDefaultTempQueueFullSize(defaultTempQueueFullSize);
-      if (defaultTempQueuePageSize > 0)
-         connectionFactory.setDefaultTempQueuePageSize(defaultTempQueuePageSize);
-      if (defaultTempQueueDownCacheSize > 0)
-         connectionFactory.setDefaultTempQueueDownCacheSize(defaultTempQueueDownCacheSize);
-      if (dupsOkBatchSize > 0)
-         connectionFactory.setDupsOKBatchSize(dupsOkBatchSize);
-      connectionFactory.setSupportsFailover(supportsFailover);
-      connectionFactory.setSupportsLoadBalancing(supportsLoadBalancing);
-      connectionFactory.setStrictTck(strictTck);
-      factories.put(objectName, connectionFactory);
+      //connectionFactory.setJNDIBindings(bindings);
+      //if (prefetchSize > 0)
+      //   connectionFactory.setPrefetchSize(prefetchSize);
+      //if (defaultTempQueueFullSize > 0) if (dupsOkBatchSize > 0)
+       //  connectionFactory.setDupsOKBatchSize(dupsOkBatchSize);
+     // connectionFactory.setSupportsFailover(supportsFailover);
+      //connectionFactory.setSupportsLoadBalancing(supportsLoadBalancing);
+      //connectionFactory.setStrictTck(strictTck);
       ServerLocator serverLocator = getMessagingServer().getMinaService().getLocator();
 
       log.info("Server locator is " + serverLocator);
       log.info(this + " started");
       // See http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4076040#4076040
-      final String id = connectionFactory.getName();
+      final String id = objectName;
 
       Version version = getMessagingServer().getVersion();
 
-      ServerConnectionFactoryEndpoint endpoint =
+      /*ServerConnectionFactoryEndpoint endpoint =
               new ServerConnectionFactoryEndpoint(connectionFactory.getName(), id, getMessagingServer(), connectionFactory.getClientID(),
                       connectionFactory.getPrefetchSize(),
                       connectionFactory.getDefaultTempQueueFullSize(),
                       connectionFactory.getDefaultTempQueuePageSize(),
                       connectionFactory.getDefaultTempQueueDownCacheSize(),
-                      connectionFactory.getDupsOKBatchSize());
+                      connectionFactory.getDupsOKBatchSize());*/
 
       //The server peer strict setting overrides the connection factory
-      boolean useStrict = getMessagingServer().getConfiguration().isStrictTck() || connectionFactory.isStrictTck();
+      boolean useStrict = getMessagingServer().getConfiguration().isStrictTck() || strictTck;
 
       ClientConnectionFactoryImpl delegate =
-              new ClientConnectionFactoryImpl(id, getMessagingServer().getConfiguration().getMessagingServerID(),
-                      serverLocator.getURI(), version, false, useStrict);
+              new ClientConnectionFactoryImpl( getMessagingServer().getConfiguration().getMessagingServerID(),
+                      serverLocator.getURI(), version, false, useStrict, prefetchSize, dupsOkBatchSize, clientId);
 
       log.debug(this + " created local delegate " + delegate);
 
       // Registering with the dispatcher should always be the last thing otherwise a client could
       // use a partially initialised object
 
-      getMessagingServer().getMinaService().getDispatcher().register(endpoint.newHandler());
+      //getMessagingServer().getMinaService().getDispatcher().register(endpoint.newHandler());
       JBossConnectionFactory jBossConnectionFactory = new JBossConnectionFactory(delegate);
       for (String binding : bindings)
       {




More information about the jboss-cvs-commits mailing list