You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2011/08/22 02:34:15 UTC
svn commit: r1160087 - in /activemq/activemq-apollo/trunk:
apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/
apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/
apollo-broker/src/main/scala/org/apache/active...
Author: chirino
Date: Mon Aug 22 00:34:13 2011
New Revision: 1160087
URL: http://svn.apache.org/viewvc?rev=1160087&view=rev
Log:
Simplified all and standardized the way extension points are found.
Added:
activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionJaxbModule.scala
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionModule.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Binding.scala
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/QueueBinding.scala
activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/PrimaryJaxbModule.java
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-selector/src/main/java/org/apache/activemq/apollo/filter/ExtensionModule.java
activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionJaxbModule.scala
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionModule.scala
activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionJaxbModule.scala
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionModule.scala
activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionJaxbModule.scala
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionModule.scala
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/JaxbModule.scala
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-transport/src/main/java/org/apache/activemq/apollo/transport/ExtensionModule.java
activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/web-module.index
- copied, changed from r1159803, activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/WebModule.scala
Removed:
activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionModule.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/QueueBinding.scala
activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/ExtensionModule.java
activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionModule.scala
activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionModule.scala
activemq/activemq-apollo/trunk/apollo-selector/src/main/java/org/apache/activemq/apollo/filter/ExtensionModule.java
activemq/activemq-apollo/trunk/apollo-selector/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionModule.scala
activemq/activemq-apollo/trunk/apollo-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/ExtensionModule.java
activemq/activemq-apollo/trunk/apollo-tcp/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-transport/src/main/java/org/apache/activemq/apollo/transport/ExtensionModule.java
activemq/activemq-apollo/trunk/apollo-transport/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/Module.scala
activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/ExtensionModule.scala
Modified:
activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStoreFactory.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Connector.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/CustomServiceFactory.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/LocalRouter.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Queue.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/VirtualHost.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jetty/JettyWebServer.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/AnyProtocol.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/StoreFactory.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/web/WebServerFactory.scala
activemq/activemq-apollo/trunk/apollo-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/XmlCodec.java
activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStoreFactory.scala
activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/JDBM2StoreFactory.scala
activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/DestinationAdvisoryRouterListener.scala
activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/OpenwireProtocolFactory.scala
activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala
activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/RootResource.scala
activemq/activemq-apollo/trunk/apollo-web/src/main/webapp/META-INF/services/org.apache.activemq.apollo/modules.index
activemq/activemq-apollo/trunk/apollo-website/src/documentation/extending-guide.md
Copied: activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index (from r1159803, activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index?p2=activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index&p1=activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index (original)
+++ activemq/activemq-apollo/trunk/apollo-bdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index Mon Aug 22 00:34:13 2011
@@ -14,4 +14,4 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
-org.apache.activemq.apollo.broker.store.bdb.ExtensionModule
\ No newline at end of file
+org.apache.activemq.apollo.broker.store.bdb.ExtensionJaxbModule
\ No newline at end of file
Modified: activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStoreFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStoreFactory.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStoreFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStoreFactory.scala Mon Aug 22 00:34:13 2011
@@ -33,7 +33,7 @@ import org.apache.activemq.apollo.util._
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class BDBStoreFactory extends StoreFactory.Provider {
+class BDBStoreFactory extends StoreFactory {
def create(config: StoreDTO) = config match {
case config:BDBStoreDTO => new BDBStore(config)
Copied: activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionJaxbModule.scala (from r1159803, activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionModule.scala)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionJaxbModule.scala?p2=activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionJaxbModule.scala&p1=activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionModule.scala&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionModule.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/ExtensionJaxbModule.scala Mon Aug 22 00:34:13 2011
@@ -1,5 +1,3 @@
-package org.apache.activemq.apollo.broker.store.bdb
-
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -16,11 +14,13 @@ package org.apache.activemq.apollo.broke
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import org.apache.activemq.apollo.util.Module
+package org.apache.activemq.apollo.broker.store.bdb
+
+import org.apache.activemq.apollo.util.JaxbModule
/**
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class ExtensionModule extends Module {
- override def xml_packages = Array("org.apache.activemq.apollo.broker.store.bdb.dto")
+class ExtensionJaxbModule extends JaxbModule {
+ def xml_package = "org.apache.activemq.apollo.broker.store.bdb.dto"
}
\ No newline at end of file
Copied: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Binding.scala (from r1159803, activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/QueueBinding.scala)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Binding.scala?p2=activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Binding.scala&p1=activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/QueueBinding.scala&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/QueueBinding.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Binding.scala Mon Aug 22 00:34:13 2011
@@ -24,7 +24,11 @@ import org.apache.activemq.apollo.util.p
import java.lang.String
import org.fusesource.hawtbuf.{Buffer, AsciiBuffer}
import Buffer._
-import javax.management.remote.rmi._RMIConnection_Stub
+
+trait BindingFactory {
+ def create(binding_kind:AsciiBuffer, binding_data:Buffer):Binding
+ def create(binding_dto:DestinationDTO):Binding
+}
/**
* <p>
@@ -32,17 +36,12 @@ import javax.management.remote.rmi._RMIC
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-object QueueBinding {
-
- trait Provider {
- def create(binding_kind:AsciiBuffer, binding_data:Buffer):QueueBinding
- def create(binding_dto:DestinationDTO):QueueBinding
- }
+object BindingFactory {
- val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/binding-factory.index",classOf[Provider])
+ val finder = new ClassFinder[BindingFactory]("META-INF/services/org.apache.activemq.apollo/binding-factory.index",classOf[BindingFactory])
- def create(binding_kind:AsciiBuffer, binding_data:Buffer):QueueBinding = {
- providers.singletons.foreach { provider=>
+ def create(binding_kind:AsciiBuffer, binding_data:Buffer):Binding = {
+ finder.singletons.foreach { provider=>
val rc = provider.create(binding_kind, binding_data)
if( rc!=null ) {
return rc
@@ -50,8 +49,8 @@ object QueueBinding {
}
throw new IllegalArgumentException("Invalid binding type: "+binding_kind);
}
- def create(binding_dto:DestinationDTO):QueueBinding = {
- providers.singletons.foreach { provider=>
+ def create(binding_dto:DestinationDTO):Binding = {
+ finder.singletons.foreach { provider=>
val rc = provider.create(binding_dto)
if( rc!=null ) {
return rc
@@ -68,7 +67,7 @@ object QueueBinding {
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-trait QueueBinding {
+trait Binding {
/**
* The name of the queue (could be the queue name or a subscription id etc)
@@ -98,7 +97,7 @@ trait QueueBinding {
override def toString: String = id
}
-object QueueDomainQueueBinding extends QueueBinding.Provider {
+object QueueDomainQueueBinding extends BindingFactory {
val POINT_TO_POINT_KIND = new AsciiBuffer("ptp")
val DESTINATION_PATH = new AsciiBuffer("default");
@@ -137,7 +136,7 @@ object QueueDomainQueueBinding extends Q
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class QueueDomainQueueBinding(val binding_data:Buffer, val binding_dto:QueueDestinationDTO) extends QueueBinding {
+class QueueDomainQueueBinding(val binding_data:Buffer, val binding_dto:QueueDestinationDTO) extends Binding {
import QueueDomainQueueBinding._
@@ -167,7 +166,7 @@ class QueueDomainQueueBinding(val bindin
}
-object DurableSubscriptionQueueBinding extends QueueBinding.Provider {
+object DurableSubscriptionQueueBinding extends BindingFactory {
val DURABLE_SUB_KIND = new AsciiBuffer("ds")
@@ -213,7 +212,7 @@ object DurableSubscriptionQueueBinding e
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class DurableSubscriptionQueueBinding(val binding_data:Buffer, val binding_dto:DurableSubscriptionDestinationDTO) extends QueueBinding {
+class DurableSubscriptionQueueBinding(val binding_data:Buffer, val binding_dto:DurableSubscriptionDestinationDTO) extends Binding {
import DurableSubscriptionQueueBinding._
val destination = LocalRouter.destination_parser.decode_path(binding_dto.path)
@@ -251,7 +250,7 @@ class DurableSubscriptionQueueBinding(va
}
-object TempQueueBinding extends QueueBinding.Provider {
+object TempQueueBinding extends BindingFactory {
val TEMP_DATA = new AsciiBuffer("")
val TEMP_KIND = new AsciiBuffer("tmp")
val TEMP_DTO = null
@@ -273,7 +272,7 @@ object TempQueueBinding extends QueueBin
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class TempQueueBinding(val key:AnyRef, val id:String) extends QueueBinding {
+class TempQueueBinding(val key:AnyRef, val id:String) extends Binding {
import TempQueueBinding._
def this(c:DeliveryConsumer) = this(c, c.connection.map(_.transport.getRemoteAddress.toString).getOrElse("known") )
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala Mon Aug 22 00:34:13 2011
@@ -42,19 +42,26 @@ import org.fusesource.hawtdispatch.TaskT
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-object BrokerFactory {
+trait BrokerFactory {
+ def createBroker(brokerURI:String):Broker
+}
- trait Provider {
- def createBroker(brokerURI:String):Broker
- }
+/**
+ * <p>
+ * The BrokerFactory creates Broker objects from a URI.
+ * </p>
+ *
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
+object BrokerFactory {
- val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/broker-factory.index",classOf[Provider])
+ val finder = new ClassFinder[BrokerFactory]("META-INF/services/org.apache.activemq.apollo/broker-factory.index",classOf[BrokerFactory])
def createBroker(uri:String):Broker = {
if( uri == null ) {
return null
}
- providers.singletons.foreach { provider=>
+ finder.singletons.foreach { provider=>
val broker = provider.createBroker(uri)
if( broker!=null ) {
return broker;
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Connector.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Connector.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Connector.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Connector.scala Mon Aug 22 00:34:13 2011
@@ -48,6 +48,10 @@ trait Connector extends BaseService {
def status:ServiceStatusDTO
}
+trait ConnectorFactory {
+ def create(broker:Broker, dto:ConnectorTypeDTO):Connector
+}
+
/**
* <p>
* </p>
@@ -56,17 +60,13 @@ trait Connector extends BaseService {
*/
object ConnectorFactory {
- trait Provider {
- def create(broker:Broker, dto:ConnectorTypeDTO):Connector
- }
-
- val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/connector-factory.index",classOf[Provider])
+ val finder = new ClassFinder[ConnectorFactory]("META-INF/services/org.apache.activemq.apollo/connector-factory.index",classOf[ConnectorFactory])
def create(broker:Broker, dto:ConnectorTypeDTO):Connector = {
if( dto == null ) {
return null
}
- providers.singletons.foreach { provider=>
+ finder.singletons.foreach { provider=>
val connector = provider.create(broker, dto)
if( connector!=null ) {
return connector;
@@ -76,7 +76,7 @@ object ConnectorFactory {
}
}
-object AcceptingConnectorFactory extends ConnectorFactory.Provider with Log {
+object AcceptingConnectorFactory extends ConnectorFactory with Log {
def create(broker: Broker, dto: ConnectorTypeDTO): Connector = dto match {
case dto:AcceptingConnectorDTO =>
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/CustomServiceFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/CustomServiceFactory.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/CustomServiceFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/CustomServiceFactory.scala Mon Aug 22 00:34:13 2011
@@ -19,6 +19,10 @@ package org.apache.activemq.apollo.broke
import org.apache.activemq.apollo.dto.CustomServiceDTO
import org.apache.activemq.apollo.util.{Log, Service, ClassFinder}
+trait CustomServiceFactory {
+ def create(broker:Broker, dto:CustomServiceDTO):Service
+}
+
/**
* <p>
* </p>
@@ -27,17 +31,13 @@ import org.apache.activemq.apollo.util.{
*/
object CustomServiceFactory {
- trait Provider {
- def create(broker:Broker, dto:CustomServiceDTO):Service
- }
-
- val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/custom-service-factory.index",classOf[Provider])
+ val finder = new ClassFinder[CustomServiceFactory]("META-INF/services/org.apache.activemq.apollo/custom-service-factory.index",classOf[CustomServiceFactory])
def create(broker:Broker, dto:CustomServiceDTO):Service = {
if( dto == null ) {
return null
}
- providers.singletons.foreach { provider=>
+ finder.singletons.foreach { provider=>
val service = provider.create(broker, dto)
if( service!=null ) {
return service;
@@ -48,7 +48,7 @@ object CustomServiceFactory {
}
-object ReflectiveCustomServiceFactory extends CustomServiceFactory.Provider with Log {
+object ReflectiveCustomServiceFactory extends CustomServiceFactory with Log {
def create(broker: Broker, dto: CustomServiceDTO): Service = {
if( dto.getClass != classOf[CustomServiceDTO] ) {
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/LocalRouter.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/LocalRouter.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/LocalRouter.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/LocalRouter.scala Mon Aug 22 00:34:13 2011
@@ -47,6 +47,11 @@ trait RouterListener {
def close
}
+
+trait RouterListenerFactory {
+ def create(router:Router):RouterListener
+}
+
/**
* <p>
* </p>
@@ -55,14 +60,10 @@ trait RouterListener {
*/
object RouterListenerFactory {
- trait Provider {
- def create(router:Router):RouterListener
- }
-
- val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/router-listener-factory.index",classOf[Provider])
+ val finder = new ClassFinder[RouterListenerFactory]("META-INF/services/org.apache.activemq.apollo/router-listener-factory.index",classOf[RouterListenerFactory])
def create(router:Router):List[RouterListener] = {
- providers.singletons.map(_.create(router))
+ finder.singletons.map(_.create(router))
}
}
@@ -361,7 +362,7 @@ class LocalRouter(val virtual_host:Virtu
def get_or_create_durable_subscription(destination:DurableSubscriptionDestinationDTO):Queue = {
val key = destination.subscription_id
durable_subscriptions_by_id.get( key ).getOrElse {
- val queue = _create_queue(QueueBinding.create(destination))
+ val queue = _create_queue(BindingFactory.create(destination))
durable_subscriptions_by_id.put(key, queue)
queue
}
@@ -562,7 +563,7 @@ class LocalRouter(val virtual_host:Virtu
// We may need to update the bindings...
if( queue.destination_dto != destination) {
- val binding = QueueBinding.create(destination)
+ val binding = BindingFactory.create(destination)
if( queue.tune_persistent && queue.store_id == -1 ) {
val record = new QueueRecord
@@ -586,7 +587,7 @@ class LocalRouter(val virtual_host:Virtu
}
queue
case None =>
- _create_queue(QueueBinding.create(destination))
+ _create_queue(BindingFactory.create(destination))
}
@@ -865,7 +866,7 @@ class LocalRouter(val virtual_host:Virtu
destination.subscription_id = dto.id
destination.path = Arrays.asList(destination_parser.parts(dto.topic) : _ *)
destination.selector = dto.selector
- _create_queue(QueueBinding.create(destination))
+ _create_queue(BindingFactory.create(destination))
}
}
@@ -890,7 +891,7 @@ class LocalRouter(val virtual_host:Virtu
// avoid blocking producers.
virtual_host.store.remove_queue(queue_key){x=> task.run}
} else {
- var binding = QueueBinding.create(record.binding_kind, record.binding_data)
+ var binding = BindingFactory.create(record.binding_kind, record.binding_data)
if( binding.binding_dto.temp_owner != null ) {
// These are the temp queues clients create.
virtual_host.store.remove_queue(queue_key){x=> task.run}
@@ -1116,14 +1117,14 @@ class LocalRouter(val virtual_host:Virtu
//
/////////////////////////////////////////////////////////////////////////////
- var queues_by_binding = LinkedHashMap[QueueBinding, Queue]()
+ var queues_by_binding = LinkedHashMap[Binding, Queue]()
var queues_by_id = LinkedHashMap[String, Queue]()
/**
* Gets an existing queue.
*/
def get_queue(dto:DestinationDTO) = dispatch_queue ! {
- queues_by_binding.get(QueueBinding.create(dto))
+ queues_by_binding.get(BindingFactory.create(dto))
}
/**
@@ -1134,7 +1135,7 @@ class LocalRouter(val virtual_host:Virtu
}
- def _create_queue(binding:QueueBinding, id:Long= -1):Queue = {
+ def _create_queue(binding:Binding, id:Long= -1):Queue = {
var qid = id
if( qid == -1 ) {
@@ -1175,7 +1176,7 @@ class LocalRouter(val virtual_host:Virtu
def destroy_queue(dto:DestinationDTO, security:SecurityContext) = dispatch_queue ! { _destroy_queue(dto, security) }
def _destroy_queue(dto:DestinationDTO, security:SecurityContext):Option[String] = {
- queues_by_binding.get(QueueBinding.create(dto)) match {
+ queues_by_binding.get(BindingFactory.create(dto)) match {
case Some(queue) =>
_destroy_queue(queue, security)
case None =>
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Queue.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Queue.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Queue.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Queue.scala Mon Aug 22 00:34:13 2011
@@ -44,7 +44,7 @@ import Queue._
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class Queue(val router: LocalRouter, val store_id:Long, var binding:QueueBinding, var config:QueueDTO) extends BaseRetained with BindableDeliveryProducer with DeliveryConsumer with BaseService with DomainDestination with Dispatched {
+class Queue(val router: LocalRouter, val store_id:Long, var binding:Binding, var config:QueueDTO) extends BaseRetained with BindableDeliveryProducer with DeliveryConsumer with BaseService with DomainDestination with Dispatched {
def id = binding.id
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/VirtualHost.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/VirtualHost.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/VirtualHost.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/VirtualHost.scala Mon Aug 22 00:34:13 2011
@@ -33,6 +33,10 @@ import security.{AclAuthorizer, JaasAuth
import org.apache.activemq.apollo.dto._
import store.{PersistentLongCounter, ZeroCopyBufferAllocator, Store, StoreFactory}
+trait VirtualHostFactory {
+ def create(broker:Broker, dto:VirtualHostDTO):VirtualHost
+}
+
/**
* <p>
* </p>
@@ -41,17 +45,13 @@ import store.{PersistentLongCounter, Zer
*/
object VirtualHostFactory {
- trait Provider {
- def create(broker:Broker, dto:VirtualHostDTO):VirtualHost
- }
-
- val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/virtual-host-factory.index",classOf[Provider])
+ val finder = new ClassFinder[VirtualHostFactory]("META-INF/services/org.apache.activemq.apollo/virtual-host-factory.index",classOf[VirtualHostFactory])
def create(broker:Broker, dto:VirtualHostDTO):VirtualHost = {
if( dto == null ) {
return null
}
- providers.singletons.foreach { provider=>
+ finder.singletons.foreach { provider=>
val connector = provider.create(broker, dto)
if( connector!=null ) {
return connector;
@@ -61,7 +61,7 @@ object VirtualHostFactory {
}
}
-object DefaultVirtualHostFactory extends VirtualHostFactory.Provider with Log {
+object DefaultVirtualHostFactory extends VirtualHostFactory with Log {
def create(broker: Broker, dto: VirtualHostDTO): VirtualHost = dto match {
case dto:VirtualHostDTO =>
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala Mon Aug 22 00:34:13 2011
@@ -25,7 +25,7 @@ import java.lang.String
import XmlCodec._
import org.apache.activemq.apollo.util._
-class XmlBrokerFactory extends BrokerFactory.Provider {
+class XmlBrokerFactory extends BrokerFactory {
def createBroker(value: String): Broker = {
try {
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jetty/JettyWebServer.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jetty/JettyWebServer.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jetty/JettyWebServer.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/jetty/JettyWebServer.scala Mon Aug 22 00:34:13 2011
@@ -40,7 +40,7 @@ import java.lang.String
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-object JettyWebServerFactory extends WebServerFactory.Provider {
+object JettyWebServerFactory extends WebServerFactory {
// Enabled this factory if we can load the jetty classes.
val enabled = try {
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/AnyProtocol.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/AnyProtocol.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/AnyProtocol.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/AnyProtocol.scala Mon Aug 22 00:34:13 2011
@@ -34,9 +34,9 @@ import org.apache.activemq.apollo.transp
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class AnyProtocolFactory extends ProtocolFactory.Provider {
+class AnyProtocolFactory extends ProtocolFactory {
- def all_protocols: Array[Protocol] = ((ProtocolFactory.provider.singletons.map(_.create())).filter(_.isIdentifiable)).toArray
+ def all_protocols: Array[Protocol] = ((ProtocolFactory.finder.singletons.map(_.create())).filter(_.isIdentifiable)).toArray
def create() = {
new AnyProtocol(()=>all_protocols)
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala Mon Aug 22 00:34:13 2011
@@ -23,6 +23,11 @@ import org.apache.activemq.apollo.dto.Co
import org.apache.activemq.apollo.util.{Log, ClassFinder}
import org.apache.activemq.apollo.broker.{Broker, Message, BrokerConnection}
+trait ProtocolFactory {
+ def create():Protocol
+ def create(config:String):Protocol
+}
+
/**
* <p>
* </p>
@@ -31,15 +36,10 @@ import org.apache.activemq.apollo.broker
*/
object ProtocolFactory {
- trait Provider {
- def create():Protocol
- def create(config:String):Protocol
- }
-
- val provider = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/protocol-factory.index",classOf[Provider])
+ val finder = new ClassFinder[ProtocolFactory]("META-INF/services/org.apache.activemq.apollo/protocol-factory.index",classOf[ProtocolFactory])
def get(name:String):Option[Protocol] = {
- provider.singletons.foreach { provider=>
+ finder.singletons.foreach { provider=>
val rc = provider.create(name)
if( rc!=null ) {
return Some(rc)
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/StoreFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/StoreFactory.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/StoreFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/StoreFactory.scala Mon Aug 22 00:34:13 2011
@@ -19,6 +19,10 @@ package org.apache.activemq.apollo.broke
import org.apache.activemq.apollo.util._
import org.apache.activemq.apollo.dto.{NullStoreDTO, StoreDTO}
+trait StoreFactory {
+ def create(config:StoreDTO):Store
+}
+
/**
* <p>
* </p>
@@ -27,17 +31,13 @@ import org.apache.activemq.apollo.dto.{N
*/
object StoreFactory {
- trait Provider {
- def create(config:StoreDTO):Store
- }
-
- val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/store-factory.index", classOf[Provider])
+ val finder = new ClassFinder[StoreFactory]("META-INF/services/org.apache.activemq.apollo/store-factory.index", classOf[StoreFactory])
def create(config:StoreDTO):Store = config match {
case null => null
case config:NullStoreDTO => null
case _ =>
- providers.singletons.foreach { provider=>
+ finder.singletons.foreach { provider=>
val rc = provider.create(config)
if( rc!=null ) {
return rc
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/web/WebServerFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/web/WebServerFactory.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/web/WebServerFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/web/WebServerFactory.scala Mon Aug 22 00:34:13 2011
@@ -29,6 +29,10 @@ trait WebServer extends Service {
def update(on_complete:Runnable):Unit
}
+trait WebServerFactory {
+ def create(broker:Broker):WebServer
+}
+
/**
* <p>
* </p>
@@ -37,17 +41,13 @@ trait WebServer extends Service {
*/
object WebServerFactory {
- trait Provider {
- def create(broker:Broker):WebServer
- }
-
- val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/web-server-factory.index",classOf[Provider])
+ val finder = new ClassFinder[WebServerFactory]("META-INF/services/org.apache.activemq.apollo/web-server-factory.index",classOf[WebServerFactory])
def create(broker:Broker):WebServer = {
if( broker == null ) {
return null
}
- providers.singletons.foreach { provider=>
+ finder.singletons.foreach { provider=>
val rc = provider.create(broker)
if( rc!=null ) {
return rc
Modified: activemq/activemq-apollo/trunk/apollo-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index (original)
+++ activemq/activemq-apollo/trunk/apollo-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index Mon Aug 22 00:34:13 2011
@@ -14,4 +14,4 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
-org.apache.activemq.apollo.broker.store.cassandra.ExtensionModule
\ No newline at end of file
+org.apache.activemq.apollo.broker.store.cassandra.ExtensionJaxbModule
\ No newline at end of file
Copied: activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/PrimaryJaxbModule.java (from r1159803, activemq/activemq-apollo/trunk/apollo-selector/src/main/java/org/apache/activemq/apollo/filter/ExtensionModule.java)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/PrimaryJaxbModule.java?p2=activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/PrimaryJaxbModule.java&p1=activemq/activemq-apollo/trunk/apollo-selector/src/main/java/org/apache/activemq/apollo/filter/ExtensionModule.java&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-selector/src/main/java/org/apache/activemq/apollo/filter/ExtensionModule.java (original)
+++ activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/PrimaryJaxbModule.java Mon Aug 22 00:34:13 2011
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.activemq.apollo.filter;
+package org.apache.activemq.apollo.dto;
-import org.apache.activemq.apollo.util.Module;
+import org.apache.activemq.apollo.util.JaxbModule;
/**
* <p>
@@ -24,10 +24,8 @@ import org.apache.activemq.apollo.util.M
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-public class ExtensionModule extends Module {
-
- public String name() {
- return "apollo-selector";
+public class PrimaryJaxbModule implements JaxbModule {
+ public String xml_package() {
+ return "org.apache.activemq.apollo.dto";
}
-
}
Modified: activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/XmlCodec.java
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/XmlCodec.java?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/XmlCodec.java (original)
+++ activemq/activemq-apollo/trunk/apollo-dto/src/main/java/org/apache/activemq/apollo/dto/XmlCodec.java Mon Aug 22 00:34:13 2011
@@ -17,8 +17,7 @@
package org.apache.activemq.apollo.dto;
import org.apache.activemq.apollo.util.ClassFinder;
-import org.apache.activemq.apollo.util.Module;
-import org.apache.activemq.apollo.util.ModuleRegistry;
+import org.apache.activemq.apollo.util.JaxbModule$;
import org.xml.sax.SAXException;
import javax.xml.XMLConstants;
@@ -90,15 +89,8 @@ public class XmlCodec {
}
private static JAXBContext createContext() throws JAXBException {
- HashSet<String> names = new HashSet<String>();
- for( Module m: ModuleRegistry.jsingletons()) {
- for( String p:m.xml_packages() ) {
- names.add(p);
- }
- }
-
String packages = "";
- for ( String p : names) {
+ for ( String p : JaxbModule$.MODULE$.packages()) {
if( packages.length() !=0 ) {
packages += ":";
}
Copied: activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index (from r1159803, activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index?p2=activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index&p1=activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index (original)
+++ activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index Mon Aug 22 00:34:13 2011
@@ -14,4 +14,4 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
-org.apache.activemq.apollo.web.ExtensionModule
\ No newline at end of file
+org.apache.activemq.apollo.dto.PrimaryJaxbModule
\ No newline at end of file
Copied: activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index (from r1159803, activemq/activemq-apollo/trunk/apollo-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index?p2=activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index&p1=activemq/activemq-apollo/trunk/apollo-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index (original)
+++ activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index Mon Aug 22 00:34:13 2011
@@ -14,4 +14,4 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
-org.apache.activemq.apollo.broker.store.cassandra.ExtensionModule
\ No newline at end of file
+org.apache.activemq.apollo.broker.store.hawtdb.ExtensionJaxbModule
\ No newline at end of file
Copied: activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionJaxbModule.scala (from r1159803, activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionModule.scala)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionJaxbModule.scala?p2=activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionJaxbModule.scala&p1=activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionModule.scala&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionModule.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/ExtensionJaxbModule.scala Mon Aug 22 00:34:13 2011
@@ -1,5 +1,3 @@
-package org.apache.activemq.apollo.broker.store.hawtdb
-
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -16,11 +14,13 @@ package org.apache.activemq.apollo.broke
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import org.apache.activemq.apollo.util.Module
+package org.apache.activemq.apollo.broker.store.hawtdb
+
+import org.apache.activemq.apollo.util.JaxbModule
/**
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class ExtensionModule extends Module {
- override def xml_packages = Array("org.apache.activemq.apollo.broker.store.hawtdb.dto")
+class ExtensionJaxbModule extends JaxbModule {
+ def xml_package = "org.apache.activemq.apollo.broker.store.hawtdb.dto"
}
\ No newline at end of file
Modified: activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStoreFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStoreFactory.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStoreFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStoreFactory.scala Mon Aug 22 00:34:13 2011
@@ -33,7 +33,7 @@ import org.apache.activemq.apollo.util._
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class HawtDBStoreFactory extends StoreFactory.Provider {
+class HawtDBStoreFactory extends StoreFactory {
def create(config: StoreDTO) = config match {
case config:HawtDBStoreDTO => new HawtDBStore(config)
Copied: activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index (from r1159803, activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index?p2=activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index&p1=activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index (original)
+++ activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index Mon Aug 22 00:34:13 2011
@@ -14,4 +14,4 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
-org.apache.activemq.apollo.broker.store.hawtdb.ExtensionModule
\ No newline at end of file
+org.apache.activemq.apollo.broker.store.jdbm2.ExtensionJaxbModule
\ No newline at end of file
Copied: activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionJaxbModule.scala (from r1159803, activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionModule.scala)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionJaxbModule.scala?p2=activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionJaxbModule.scala&p1=activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionModule.scala&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionModule.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/ExtensionJaxbModule.scala Mon Aug 22 00:34:13 2011
@@ -1,5 +1,3 @@
-package org.apache.activemq.apollo.broker.store.jdbm2
-
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -16,11 +14,13 @@ package org.apache.activemq.apollo.broke
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import org.apache.activemq.apollo.util.Module
+package org.apache.activemq.apollo.broker.store.jdbm2
+
+import org.apache.activemq.apollo.util.JaxbModule
/**
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class ExtensionModule extends Module {
- override def xml_packages = Array("org.apache.activemq.apollo.broker.store.jdbm2.dto")
+class ExtensionJaxbModule extends JaxbModule {
+ def xml_package = "org.apache.activemq.apollo.broker.store.jdbm2.dto"
}
\ No newline at end of file
Modified: activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/JDBM2StoreFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/JDBM2StoreFactory.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/JDBM2StoreFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/JDBM2StoreFactory.scala Mon Aug 22 00:34:13 2011
@@ -29,7 +29,7 @@ import org.apache.activemq.apollo.util._
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class JDBM2StoreFactory extends StoreFactory.Provider {
+class JDBM2StoreFactory extends StoreFactory {
def create(config: StoreDTO) = config match {
case config:JDBM2StoreDTO =>
Modified: activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/DestinationAdvisoryRouterListener.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/DestinationAdvisoryRouterListener.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/DestinationAdvisoryRouterListener.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/DestinationAdvisoryRouterListener.scala Mon Aug 22 00:34:13 2011
@@ -34,7 +34,7 @@ import org.fusesource.hawtdispatch._
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-object DestinationAdvisoryRouterListenerFactory extends RouterListenerFactory.Provider {
+object DestinationAdvisoryRouterListenerFactory extends RouterListenerFactory {
def create(router: Router) = new DestinationAdvisoryRouterListener(router)
}
Modified: activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/OpenwireProtocolFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/OpenwireProtocolFactory.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/OpenwireProtocolFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/OpenwireProtocolFactory.scala Mon Aug 22 00:34:13 2011
@@ -30,7 +30,7 @@ import org.fusesource.hawtbuf.Buffer
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-object OpenwireProtocolFactory extends ProtocolFactory.Provider {
+object OpenwireProtocolFactory extends ProtocolFactory {
def create() = OpenwireProtocol
Copied: activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index (from r1159803, activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index?p2=activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index&p1=activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index (original)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/jaxb-module.index Mon Aug 22 00:34:13 2011
@@ -14,4 +14,4 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
-org.apache.activemq.apollo.stomp.ExtensionModule
\ No newline at end of file
+org.apache.activemq.apollo.stomp.ExtensionJaxbModule
\ No newline at end of file
Copied: activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionJaxbModule.scala (from r1159803, activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionModule.scala)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionJaxbModule.scala?p2=activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionJaxbModule.scala&p1=activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionModule.scala&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionModule.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/ExtensionJaxbModule.scala Mon Aug 22 00:34:13 2011
@@ -1,5 +1,3 @@
-package org.apache.activemq.apollo.stomp
-
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -16,11 +14,13 @@ package org.apache.activemq.apollo.stomp
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import org.apache.activemq.apollo.util.Module
+package org.apache.activemq.apollo.stomp
+
+import org.apache.activemq.apollo.util.JaxbModule
/**
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class ExtensionModule extends Module {
- override def xml_packages = Array("org.apache.activemq.apollo.stomp.dto")
+class ExtensionJaxbModule extends JaxbModule {
+ def xml_package = "org.apache.activemq.apollo.stomp.dto"
}
\ No newline at end of file
Modified: activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala Mon Aug 22 00:34:13 2011
@@ -51,7 +51,7 @@ class StompProtocolCodecFactory extends
}
}
-class StompProtocolFactory extends ProtocolFactory.Provider {
+class StompProtocolFactory extends ProtocolFactory {
def create() = StompProtocol
Copied: activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/JaxbModule.scala (from r1159803, activemq/activemq-apollo/trunk/apollo-transport/src/main/java/org/apache/activemq/apollo/transport/ExtensionModule.java)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/JaxbModule.scala?p2=activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/JaxbModule.scala&p1=activemq/activemq-apollo/trunk/apollo-transport/src/main/java/org/apache/activemq/apollo/transport/ExtensionModule.java&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-transport/src/main/java/org/apache/activemq/apollo/transport/ExtensionModule.java (original)
+++ activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/JaxbModule.scala Mon Aug 22 00:34:13 2011
@@ -14,9 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.activemq.apollo.transport;
+package org.apache.activemq.apollo.util
-import org.apache.activemq.apollo.util.Module;
+/**
+ * <p>
+ * </p>
+ *
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
+trait JaxbModule {
+ def xml_package:String
+}
/**
* <p>
@@ -24,10 +32,10 @@ import org.apache.activemq.apollo.util.M
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-public class ExtensionModule extends Module {
+object JaxbModule {
- public String name() {
- return "apollo-transport";
- }
+ val finder = new ClassFinder[JaxbModule]("META-INF/services/org.apache.activemq.apollo/jaxb-module.index",classOf[JaxbModule])
+ val packages = finder.singletons.map(_.xml_package).toArray
}
+
Copied: activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/web-module.index (from r1159803, activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/web-module.index?p2=activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/web-module.index&p1=activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index&r1=1159803&r2=1160087&rev=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-dto/src/main/resources/META-INF/services/org.apache.activemq.apollo/modules.index (original)
+++ activemq/activemq-apollo/trunk/apollo-web/src/main/resources/META-INF/services/org.apache.activemq.apollo/web-module.index Mon Aug 22 00:34:13 2011
@@ -14,4 +14,4 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
-org.apache.activemq.apollo.dto.ExtensionModule
\ No newline at end of file
+org.apache.activemq.apollo.web.DefaultWebModule
\ No newline at end of file
Added: activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/WebModule.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/WebModule.scala?rev=1160087&view=auto
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/WebModule.scala (added)
+++ activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/WebModule.scala Mon Aug 22 00:34:13 2011
@@ -0,0 +1,61 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.apollo.web
+
+import org.apache.activemq.apollo.util.ClassFinder
+import resources.BrokerResource
+import collection.immutable.TreeMap
+
+trait WebModule {
+ def priority:Int
+ def web_resources: Map[String, ()=>AnyRef]
+ def root_redirect:String
+}
+
+/**
+ * <p>
+ * </p>
+ *
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
+object WebModule {
+
+ val finder = new ClassFinder[WebModule]("META-INF/services/org.apache.activemq.apollo/web-module.index",classOf[WebModule])
+
+ val (root_redirect, web_resources) = {
+
+ // sort by priority. Highest priority wins.
+ val sorted = TreeMap(finder.singletons.map(x=> x.priority -> x): _*).values
+ val web_resources = sorted.foldLeft(Map[String, ()=>AnyRef]()) { case (map, provider) =>
+ map ++ provider.web_resources
+ }
+ (sorted.last.root_redirect, web_resources)
+ }
+
+
+}
+
+object DefaultWebModule extends WebModule {
+
+ def priority: Int = 100
+
+ def create_broker_resource() = new BrokerResource
+ override def web_resources = Map("broker" -> create_broker_resource _ )
+
+ def root_redirect: String = "broker"
+
+}
\ No newline at end of file
Modified: activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/RootResource.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/RootResource.scala?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/RootResource.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/RootResource.scala Mon Aug 22 00:34:13 2011
@@ -18,39 +18,23 @@ package org.apache.activemq.apollo.web.r
import javax.ws.rs._
import core.Response.Status._
-import core.{Response, UriInfo, Context}
-import org.apache.activemq.apollo.util.ModuleRegistry
-import collection.mutable.HashMap
+import core.Response
import javax.servlet.http.HttpServletRequest
import com.sun.jersey.server.impl.ThreadLocalInvoker
+import org.apache.activemq.apollo.web.WebModule
-object RootResource {
-
- // Load up all extension module web resources..
- val web_resources:Map[String, ()=>AnyRef] = {
- val rc = HashMap[String, ()=>AnyRef]()
- for (m <- ModuleRegistry.singletons ) {
- m.web_resources.foreach { case (key,value) =>
- rc.put(key, value)
- }
- }
- rc.toMap
- }
-
-}
/**
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
@Path("/")
case class RootResource() extends Resource() {
-
- import RootResource._
+ import WebModule._
@GET
@Produces(Array("application/json", "application/xml","text/xml","text/html"))
def post_connection_shutdown_and_redirect() = {
- Response.seeOther(strip_resolve("broker")).build
+ Response.seeOther(strip_resolve(root_redirect)).build
}
@Path("{name}")
Modified: activemq/activemq-apollo/trunk/apollo-web/src/main/webapp/META-INF/services/org.apache.activemq.apollo/modules.index
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-web/src/main/webapp/META-INF/services/org.apache.activemq.apollo/modules.index?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-web/src/main/webapp/META-INF/services/org.apache.activemq.apollo/modules.index (original)
+++ activemq/activemq-apollo/trunk/apollo-web/src/main/webapp/META-INF/services/org.apache.activemq.apollo/modules.index Mon Aug 22 00:34:13 2011
@@ -14,4 +14,4 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------
-org.apache.activemq.apollo.web.ExtensionModule
\ No newline at end of file
+org.apache.activemq.apollo.web.ExtensionJaxbModule
\ No newline at end of file
Modified: activemq/activemq-apollo/trunk/apollo-website/src/documentation/extending-guide.md
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-website/src/documentation/extending-guide.md?rev=1160087&r1=1160086&r2=1160087&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-website/src/documentation/extending-guide.md (original)
+++ activemq/activemq-apollo/trunk/apollo-website/src/documentation/extending-guide.md Mon Aug 22 00:34:13 2011
@@ -23,17 +23,17 @@ Example module class:
{pygmentize:: scala}
package org.example
-import org.apache.activemq.apollo.util.Module
+import org.apache.activemq.apollo.util.JaxbModule
-class ExtensionModule extends Module {
- override def xml_packages = Array("org.example.dto")
+class ExtensionJaxbModule extends JaxbModule {
+ def xml_package = "org.example.dto"
}
{pygmentize}
-Example `META-INF/services/org.apache.activemq.apollo/modules.index` resource:
+Example `META-INF/services/org.apache.activemq.apollo/jaxb-module.index` resource:
- org.example.ExtensionModule
+ org.example.ExtensionJaxbModule
### Plugging into the Broker Lifecycle