You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ru...@apache.org on 2007/11/28 16:52:13 UTC

svn commit: r599036 - in /incubator/qpid/branches/M2.1.1: ./ java/ java/broker/ java/broker/src/main/java/org/apache/qpid/server/exchange/ java/broker/src/main/java/org/apache/qpid/server/plugins/ java/broker/src/main/java/org/apache/qpid/server/protoc...

Author: rupertlssmith
Date: Wed Nov 28 07:52:11 2007
New Revision: 599036

URL: http://svn.apache.org/viewvc?rev=599036&view=rev
Log:
Merged revisions 598371-598586 via svnmerge from 
https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1

........
  r598371 | ritchiem | 2007-11-26 18:17:12 +0000 (Mon, 26 Nov 2007) | 1 line
  
  Qpid-559 : OSGi Patch Provided by Aidan Skinner 
........
  r598572 | ritchiem | 2007-11-27 09:44:28 +0000 (Tue, 27 Nov 2007) | 1 line
  
  Add Target to ignores list.
........
  r598586 | rupertlssmith | 2007-11-27 10:51:29 +0000 (Tue, 27 Nov 2007) | 1 line
  
  Now outputs test results in xml format to the surefire reports directory.
........

Added:
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeType.java
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeType.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/plugins/
      - copied from r598586, incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/plugins/
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/plugins/Activator.java
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/plugins/Activator.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java
    incubator/qpid/branches/M2.1.1/java/plugins/   (props changed)
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/
    incubator/qpid/branches/M2.1.1/java/plugins/pom.xml
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/plugins/pom.xml
    incubator/qpid/branches/M2.1.1/java/plugins/src/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/extras/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/extras/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/extras/Activator.java
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/extras/Activator.java
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/diagnostic/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/diagnostic/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/diagnostic/DiagnosticExchange.java
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/diagnostic/DiagnosticExchange.java
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/diagnostic/DiagnosticExchangeType.java
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/diagnostic/DiagnosticExchangeType.java
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/example/
      - copied from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/example/
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java
    incubator/qpid/branches/M2.1.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchangeType.java
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/plugins/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchangeType.java
    incubator/qpid/branches/M2.1.1/java/systests/src/main/java/org/apache/qpid/server/plugins/
      - copied from r598586, incubator/qpid/branches/M2.1/java/systests/src/main/java/org/apache/qpid/server/plugins/
    incubator/qpid/branches/M2.1.1/java/systests/src/main/java/org/apache/qpid/server/plugins/PluginTest.java
      - copied unchanged from r598586, incubator/qpid/branches/M2.1/java/systests/src/main/java/org/apache/qpid/server/plugins/PluginTest.java
Modified:
    incubator/qpid/branches/M2.1.1/   (props changed)
    incubator/qpid/branches/M2.1.1/java/broker/pom.xml
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/protocol/ExchangeInitialiser.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/ConfigurationFileApplicationRegistry.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/util/NullApplicationRegistry.java
    incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
    incubator/qpid/branches/M2.1.1/java/pom.xml
    incubator/qpid/branches/M2.1.1/java/systests/pom.xml
    incubator/qpid/branches/M2.1.1/java/systests/src/main/java/org/apache/qpid/server/util/TestApplicationRegistry.java

Propchange: incubator/qpid/branches/M2.1.1/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Nov 28 07:52:11 2007
@@ -1 +1 @@
-/incubator/qpid/branches/M2:1-568187,574873,574876,575253,575663-578604,587061-587924,587926-590773,590775-591035,591037-591059,591061-591090,591092-592353 /incubator/qpid/branches/M2.1:1-598104,598106-598323,598325-598361
+/incubator/qpid/branches/M2:1-568187,574873,574876,575253,575663-578604,587061-587924,587926-590773,590775-591035,591037-591059,591061-591090,591092-592353 /incubator/qpid/branches/M2.1:1-598104,598106-598323,598325-598361,598371-598586

Modified: incubator/qpid/branches/M2.1.1/java/broker/pom.xml
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/pom.xml?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/pom.xml (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/pom.xml Wed Nov 28 07:52:11 2007
@@ -89,6 +89,16 @@
             <scope>test</scope>
         </dependency>
 
+	<dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>1.0.0</version>
+        </dependency>        
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.framework</artifactId>
+            <version>1.0.0</version>
+        </dependency>
     </dependencies>
 
     <build>

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java Wed Nov 28 07:52:11 2007
@@ -20,56 +20,88 @@
  */
 package org.apache.qpid.server.exchange;
 
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.log4j.Logger;
+import org.apache.commons.configuration.Configuration;
+
 import org.apache.qpid.AMQException;
 import org.apache.qpid.AMQUnknownExchangeType;
-import org.apache.qpid.exchange.ExchangeDefaults;
 import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 
 public class DefaultExchangeFactory implements ExchangeFactory
 {
     private static final Logger _logger = Logger.getLogger(DefaultExchangeFactory.class);
 
-    private Map<AMQShortString, Class<? extends Exchange>> _exchangeClassMap = new HashMap<AMQShortString, Class<? extends Exchange>>();
+    private Map<AMQShortString, ExchangeType<? extends Exchange>> _exchangeClassMap = new HashMap<AMQShortString, ExchangeType<? extends Exchange>>();
     private final VirtualHost _host;
 
     public DefaultExchangeFactory(VirtualHost host)
     {
         _host = host;
-        _exchangeClassMap.put(ExchangeDefaults.DIRECT_EXCHANGE_CLASS, org.apache.qpid.server.exchange.DestNameExchange.class);
-        _exchangeClassMap.put(ExchangeDefaults.TOPIC_EXCHANGE_CLASS, org.apache.qpid.server.exchange.DestWildExchange.class);
-        _exchangeClassMap.put(ExchangeDefaults.HEADERS_EXCHANGE_CLASS, org.apache.qpid.server.exchange.HeadersExchange.class);
-        _exchangeClassMap.put(ExchangeDefaults.FANOUT_EXCHANGE_CLASS, org.apache.qpid.server.exchange.FanoutExchange.class);
+        registerExchangeType(DestNameExchange.TYPE);
+        registerExchangeType(DestWildExchange.TYPE);
+        registerExchangeType(HeadersExchange.TYPE);
+        registerExchangeType(FanoutExchange.TYPE);
+    }
 
+    public void registerExchangeType(ExchangeType<? extends Exchange> type)
+    {
+        _exchangeClassMap.put(type.getName(), type);
+    }
+    
+    public Collection<ExchangeType<? extends Exchange>> getRegisteredTypes()
+    {
+        return _exchangeClassMap.values();
     }
 
     public Exchange createExchange(AMQShortString exchange, AMQShortString type, boolean durable, boolean autoDelete,
                                    int ticket)
             throws AMQException
     {
-        Class<? extends Exchange> exchClass = _exchangeClassMap.get(type);
-        if (exchClass == null)
+        ExchangeType<? extends Exchange> exchType = _exchangeClassMap.get(type);
+        if (exchType == null)
         {
 
             throw new AMQUnknownExchangeType("Unknown exchange type: " + type);
         }
-        try
-        {
-            Exchange e = exchClass.newInstance();
-            e.initialise(_host, exchange, durable, ticket, autoDelete);
-            return e;
-        }
-        catch (InstantiationException e)
-        {
-            throw new AMQException("Unable to create exchange: " + e, e);
-        }
-        catch (IllegalAccessException e)
+        Exchange e = exchType.newInstance(_host, exchange, durable, ticket, autoDelete);
+        return e;
+    }
+
+    public void initialise(Configuration hostConfig)
+    {
+        for(Object className : hostConfig.getList("custom-exchanges.class-name"))
         {
-            throw new AMQException("Unable to create exchange: " + e, e);
+            try
+            {
+                ExchangeType<?> exchangeType = ApplicationRegistry.getInstance().getPluginManager().getExchanges().get(String.valueOf(className));
+                if (exchangeType == null)
+                {
+                    _logger.error("No such custom exchange class found: \""+String.valueOf(className)+"\"");
+                    return;
+                }
+                Class<? extends ExchangeType> exchangeTypeClass = exchangeType.getClass();
+                ExchangeType type = exchangeTypeClass.newInstance();
+                registerExchangeType(type);
+            }
+            catch (ClassCastException classCastEx)
+            {
+                _logger.error("No custom exchange class: \""+String.valueOf(className)+"\" cannot be registered as it does not extend class \""+ExchangeType.class+"\"");
+            }
+            catch (IllegalAccessException e)
+            {
+                _logger.error("Cannot create custom exchange class: \""+String.valueOf(className)+"\"",e);
+            }
+            catch (InstantiationException e)
+            {
+                _logger.error("Cannot create custom exchange class: \""+String.valueOf(className)+"\"",e);
+            }
         }
+
     }
 }

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestNameExchange.java Wed Nov 28 07:52:11 2007
@@ -42,6 +42,7 @@
 import org.apache.qpid.server.management.MBeanDescription;
 import org.apache.qpid.server.queue.AMQMessage;
 import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.virtualhost.VirtualHost;
 
 public class DestNameExchange extends AbstractExchange
 {
@@ -51,6 +52,36 @@
      * Maps from queue name to queue instances
      */
     private final Index _index = new Index();
+
+    public static final ExchangeType<DestNameExchange> TYPE = new ExchangeType<DestNameExchange>()
+    {
+
+        public AMQShortString getName()
+        {
+            return ExchangeDefaults.DIRECT_EXCHANGE_CLASS;
+        }
+
+        public Class<DestNameExchange> getExchangeClass()
+        {
+            return DestNameExchange.class;
+        }
+
+        public DestNameExchange newInstance(VirtualHost host,
+                                            AMQShortString name,
+                                            boolean durable,
+                                            int ticket,
+                                            boolean autoDelete) throws AMQException
+        {
+            DestNameExchange exch = new DestNameExchange();
+            exch.initialise(host,name,durable,ticket,autoDelete);
+            return exch;
+        }
+
+        public AMQShortString getDefaultExchangeName()
+        {
+            return ExchangeDefaults.DIRECT_EXCHANGE_NAME;
+        }
+    };
 
     /**
      * MBean class implementing the management interfaces.

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/DestWildExchange.java Wed Nov 28 07:52:11 2007
@@ -30,6 +30,7 @@
 import org.apache.qpid.server.management.MBeanDescription;
 import org.apache.qpid.server.queue.AMQMessage;
 import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.virtualhost.VirtualHost;
 
 import javax.management.JMException;
 import javax.management.MBeanException;
@@ -48,6 +49,38 @@
 
 public class DestWildExchange extends AbstractExchange
 {
+
+    public static final ExchangeType<DestWildExchange> TYPE = new ExchangeType<DestWildExchange>()
+    {
+
+        public AMQShortString getName()
+        {
+            return ExchangeDefaults.TOPIC_EXCHANGE_CLASS;
+        }
+
+        public Class<DestWildExchange> getExchangeClass()
+        {
+            return DestWildExchange.class;
+        }
+
+        public DestWildExchange newInstance(VirtualHost host,
+                                            AMQShortString name,
+                                            boolean durable,
+                                            int ticket,
+                                            boolean autoDelete) throws AMQException
+        {
+            DestWildExchange exch = new DestWildExchange();
+            exch.initialise(host, name, durable, ticket, autoDelete);
+            return exch;
+        }
+
+        public AMQShortString getDefaultExchangeName()
+        {
+            return ExchangeDefaults.TOPIC_EXCHANGE_NAME;
+        }
+    };
+
+
     private static final Logger _logger = Logger.getLogger(DestWildExchange.class);
 
     private ConcurrentHashMap<AMQShortString, List<AMQQueue>> _routingKey2queues =

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java Wed Nov 28 07:52:11 2007
@@ -20,6 +20,10 @@
  */
 package org.apache.qpid.server.exchange;
 
+import java.util.Collection;
+
+import org.apache.commons.configuration.Configuration;
+
 import org.apache.qpid.AMQException;
 import org.apache.qpid.framing.AMQShortString;
 
@@ -29,4 +33,8 @@
     Exchange createExchange(AMQShortString exchange, AMQShortString type, boolean durable, boolean autoDelete,
                             int ticket)
             throws AMQException;
+
+    void initialise(Configuration hostConfig);
+
+    Collection<ExchangeType<? extends Exchange>> getRegisteredTypes();
 }

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java Wed Nov 28 07:52:11 2007
@@ -30,6 +30,7 @@
 import org.apache.qpid.server.management.MBeanDescription;
 import org.apache.qpid.server.queue.AMQMessage;
 import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.virtualhost.VirtualHost;
 
 import javax.management.JMException;
 import javax.management.MBeanException;
@@ -114,6 +115,36 @@
             throw new AMQException("Exception occured in creating the direct exchange mbean", ex);
         }
     }
+
+    public static final ExchangeType<FanoutExchange> TYPE = new ExchangeType<FanoutExchange>()
+    {
+
+    	public AMQShortString getName()
+    	{
+    		return ExchangeDefaults.FANOUT_EXCHANGE_CLASS;
+    	}
+
+    	public Class<FanoutExchange> getExchangeClass()
+    	{
+    		return FanoutExchange.class;
+    	}
+
+    	public FanoutExchange newInstance(VirtualHost host,
+    									  AMQShortString name,
+    									  boolean durable,
+    									  int ticket,
+    									  boolean autoDelete) throws AMQException
+    	{
+    		FanoutExchange exch = new FanoutExchange();
+    		exch.initialise(host, name, durable, ticket, autoDelete);
+    		return exch;
+    	}
+
+    	public AMQShortString getDefaultExchangeName()
+    	{
+    		return ExchangeDefaults.DIRECT_EXCHANGE_NAME;
+    	}
+    };
 
     public Map<AMQShortString, List<AMQQueue>> getBindings()
     {

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java Wed Nov 28 07:52:11 2007
@@ -32,6 +32,7 @@
 import org.apache.qpid.server.management.MBeanDescription;
 import org.apache.qpid.server.queue.AMQMessage;
 import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.virtualhost.VirtualHost;
 
 import javax.management.JMException;
 import javax.management.openmbean.ArrayType;
@@ -80,6 +81,37 @@
 public class HeadersExchange extends AbstractExchange
 {
     private static final Logger _logger = Logger.getLogger(HeadersExchange.class);
+
+
+
+    public static final ExchangeType<HeadersExchange> TYPE = new ExchangeType<HeadersExchange>()
+    {
+
+        public AMQShortString getName()
+        {
+            return ExchangeDefaults.HEADERS_EXCHANGE_CLASS;
+        }
+
+        public Class<HeadersExchange> getExchangeClass()
+        {
+            return HeadersExchange.class;
+        }
+
+        public HeadersExchange newInstance(VirtualHost host, AMQShortString name, boolean durable, int ticket,
+                boolean autoDelete) throws AMQException
+        {
+            HeadersExchange exch = new HeadersExchange();
+            exch.initialise(host, name, durable, ticket, autoDelete);
+            return exch;
+        }
+
+        public AMQShortString getDefaultExchangeName()
+        {
+
+            return ExchangeDefaults.HEADERS_EXCHANGE_NAME;
+        }
+    };
+
 
     private final List<Registration> _bindings = new CopyOnWriteArrayList<Registration>();
 

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/protocol/ExchangeInitialiser.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/protocol/ExchangeInitialiser.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/protocol/ExchangeInitialiser.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/protocol/ExchangeInitialiser.java Wed Nov 28 07:52:11 2007
@@ -23,18 +23,20 @@
 import org.apache.qpid.AMQException;
 import org.apache.qpid.exchange.ExchangeDefaults;
 import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.server.exchange.Exchange;
 import org.apache.qpid.server.exchange.ExchangeFactory;
 import org.apache.qpid.server.exchange.ExchangeRegistry;
+import org.apache.qpid.server.exchange.ExchangeType;
 
 public class ExchangeInitialiser
 {
     public void initialise(ExchangeFactory factory, ExchangeRegistry registry) throws AMQException{
+        for (ExchangeType<? extends Exchange> type : factory.getRegisteredTypes())
+        {
+            define (registry, factory, type.getDefaultExchangeName(), type.getName());
+        }
+        
         define(registry, factory, ExchangeDefaults.DEFAULT_EXCHANGE_NAME, ExchangeDefaults.DIRECT_EXCHANGE_CLASS);
-        define(registry, factory, ExchangeDefaults.DIRECT_EXCHANGE_NAME, ExchangeDefaults.DIRECT_EXCHANGE_CLASS);
-        define(registry, factory, ExchangeDefaults.TOPIC_EXCHANGE_NAME, ExchangeDefaults.TOPIC_EXCHANGE_CLASS);
-        define(registry, factory, ExchangeDefaults.HEADERS_EXCHANGE_NAME, ExchangeDefaults.HEADERS_EXCHANGE_CLASS);
-        define(registry, factory, ExchangeDefaults.FANOUT_EXCHANGE_NAME, ExchangeDefaults.FANOUT_EXCHANGE_CLASS);
-
         registry.setDefaultExchange(registry.getExchange(ExchangeDefaults.DEFAULT_EXCHANGE_NAME));
     }
 

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/ConfigurationFileApplicationRegistry.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/ConfigurationFileApplicationRegistry.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/ConfigurationFileApplicationRegistry.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/ConfigurationFileApplicationRegistry.java Wed Nov 28 07:52:11 2007
@@ -34,6 +34,7 @@
 import org.apache.qpid.server.management.ManagedObjectRegistry;
 import org.apache.qpid.server.management.ManagementConfiguration;
 import org.apache.qpid.server.management.NoopManagedObjectRegistry;
+import org.apache.qpid.server.plugins.PluginManager;
 import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
 import org.apache.qpid.server.security.auth.database.ConfigurationFilePrincipalDatabaseManager;
 import org.apache.qpid.server.security.auth.database.PrincipalDatabaseManager;
@@ -60,6 +61,8 @@
 
     private final Map<String, VirtualHost> _virtualHosts = new ConcurrentHashMap<String, VirtualHost>();
 
+    private PluginManager _pluginManager;
+
 
     public ConfigurationFileApplicationRegistry(File configurationURL) throws ConfigurationException
     {
@@ -117,6 +120,8 @@
 
         _managedObjectRegistry.start();
 
+        _pluginManager = new PluginManager(_configuration.getString("plugin-directory"));
+        
         initialiseVirtualHosts();
 
     }
@@ -172,5 +177,10 @@
     public Collection<String> getVirtualHostNames()
     {
         return getConfiguration().getList("virtualhosts.virtualhost.name");
+    }
+    
+    public PluginManager getPluginManager()
+    {
+        return _pluginManager;
     }
 }

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java Wed Nov 28 07:52:11 2007
@@ -24,6 +24,7 @@
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.qpid.server.management.ManagedObjectRegistry;
+import org.apache.qpid.server.plugins.PluginManager;
 import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
 import org.apache.qpid.server.security.auth.database.PrincipalDatabaseManager;
 import org.apache.qpid.server.security.access.AccessManager;
@@ -68,4 +69,7 @@
     VirtualHostRegistry getVirtualHostRegistry();
 
     AccessManager getAccessManager();
+    
+    PluginManager getPluginManager();
+    
 }

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/util/NullApplicationRegistry.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/util/NullApplicationRegistry.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/util/NullApplicationRegistry.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/util/NullApplicationRegistry.java Wed Nov 28 07:52:11 2007
@@ -29,6 +29,7 @@
 import org.apache.commons.configuration.MapConfiguration;
 import org.apache.qpid.server.management.ManagedObjectRegistry;
 import org.apache.qpid.server.management.NoopManagedObjectRegistry;
+import org.apache.qpid.server.plugins.PluginManager;
 import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
 import org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthenticationManager;
@@ -51,6 +52,8 @@
 
     private PrincipalDatabaseManager _databaseManager;
 
+    private PluginManager _pluginManager;
+
 
     public NullApplicationRegistry()
     {
@@ -76,7 +79,7 @@
         VirtualHost dummyHost = new VirtualHost("test", getConfiguration());
         _virtualHostRegistry.registerVirtualHost(dummyHost);
         _virtualHostRegistry.setDefaultVirtualHostName("test");
-
+        _pluginManager = new PluginManager("");
         _configuration.addProperty("heartbeat.delay", 10 * 60); // 10 minutes
 
     }
@@ -117,6 +120,12 @@
     {
         return _accessManager;
     }
+
+    public PluginManager getPluginManager()
+    {
+        return _pluginManager;
+    }
 }
+
 
 

Modified: incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java (original)
+++ incubator/qpid/branches/M2.1.1/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java Wed Nov 28 07:52:11 2007
@@ -139,6 +139,7 @@
 
         _queueRegistry = new DefaultQueueRegistry(this);
         _exchangeFactory = new DefaultExchangeFactory(this);
+        _exchangeFactory.initialise(hostConfig);
         _exchangeRegistry = new DefaultExchangeRegistry(this);
 
         if (store != null)

Propchange: incubator/qpid/branches/M2.1.1/java/plugins/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Nov 28 07:52:11 2007
@@ -0,0 +1 @@
+target

Modified: incubator/qpid/branches/M2.1.1/java/pom.xml
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/pom.xml?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/pom.xml (original)
+++ incubator/qpid/branches/M2.1.1/java/pom.xml Wed Nov 28 07:52:11 2007
@@ -150,6 +150,7 @@
         <module>common</module>
         <module>broker</module>
         <module>client</module>
+        <module>plugins</module>
         <module>systests</module>
         <module>perftests</module>
         <module>integrationtests</module>

Modified: incubator/qpid/branches/M2.1.1/java/systests/pom.xml
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/systests/pom.xml?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/systests/pom.xml (original)
+++ incubator/qpid/branches/M2.1.1/java/systests/pom.xml Wed Nov 28 07:52:11 2007
@@ -82,6 +82,14 @@
                     <includes>
                         <include>**/*Test.class</include>
                     </includes>
+                    
+                    <systemProperties>
+                      <property>
+                        <name>example.plugin.target</name>
+                        <value>${basedir}/${topDirectoryLocation}/plugins/target</value>
+                      </property>
+                    </systemProperties>
+                    
                     <excludes>
                         <exclude>**/testcases/ImmediateMessageTest.class</exclude>
                         <exclude>**/testcases/MandatoryMessageTest.class</exclude>
@@ -107,8 +115,8 @@
                     
                     <testrunneroptions>
                         <option>-X:decorators "org.apache.qpid.test.framework.qpid.InVMBrokerDecorator:org.apache.qpid.test.framework.qpid.AMQPFeatureDecorator"</option>
-                        <option>-o</option>
-                        <option>--csv</option>
+                        <option>-o ${basedir}/target/surefire-reports</option>
+                        <option>--xml</option>
                     </testrunneroptions>
                     
                     <testrunnerproperties>
@@ -160,4 +168,5 @@
         </resources>
     </build>
 </project>
+
 

Modified: incubator/qpid/branches/M2.1.1/java/systests/src/main/java/org/apache/qpid/server/util/TestApplicationRegistry.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1.1/java/systests/src/main/java/org/apache/qpid/server/util/TestApplicationRegistry.java?rev=599036&r1=599035&r2=599036&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1.1/java/systests/src/main/java/org/apache/qpid/server/util/TestApplicationRegistry.java (original)
+++ incubator/qpid/branches/M2.1.1/java/systests/src/main/java/org/apache/qpid/server/util/TestApplicationRegistry.java Wed Nov 28 07:52:11 2007
@@ -23,6 +23,7 @@
 import org.apache.qpid.server.exchange.ExchangeFactory;
 import org.apache.qpid.server.exchange.ExchangeRegistry;
 import org.apache.qpid.server.management.ManagedObjectRegistry;
+import org.apache.qpid.server.plugins.PluginManager;
 import org.apache.qpid.server.queue.QueueRegistry;
 import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.registry.IApplicationRegistry;
@@ -145,5 +146,11 @@
     {
         return _messageStore;
     }
+
+    public PluginManager getPluginManager()
+    {
+        return null;
+    }
 }
+