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 2010/07/07 06:29:46 UTC
svn commit: r961224 - in /activemq/sandbox/activemq-apollo-actor:
activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/
activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/
activemq-brok...
Author: chirino
Date: Wed Jul 7 04:29:44 2010
New Revision: 961224
URL: http://svn.apache.org/viewvc?rev=961224&view=rev
Log:
following the .index convention set by jaxb for class discovery.
transport factories more consistent now too.
Added:
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/broker-factory.index
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/brokers
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocol-factory.index
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocols
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transport-factory.index
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/vm
activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/store-factory.index
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/stores
activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreFactory.scala
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreSPI.scala
activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/direct-buffer-pool-factory.index
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/direct-buffer-pools
activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/store-factory.index
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/stores
activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolFactory.scala
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolSPI.scala
activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreFactory.scala
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreSPI.scala
activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocol-factory.index
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocols
activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/resources/META-INF/services/org.apache.activemq.apollo/
activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/resources/META-INF/services/org.apache.activemq.apollo/transport-factory.index
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/tcp
activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/resources/META-INF/services/org.apache.activem.apollo/
activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/resources/META-INF/services/org.apache.activem.apollo/transport-factory.index
- copied, changed from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/ssl
Removed:
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/brokers
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocols
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/ssl
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/tcp
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/vm
activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/stores
activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreSPI.scala
activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/direct-buffer-pools
activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/stores
activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolSPI.scala
activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreSPI.scala
activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocols
activemq/sandbox/activemq-apollo-actor/activemq-store/src/main/resources/META-INF/services/org/apache/activemq/broker/store/memory
activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/resources/META-INF/services/org/apache/activemq/transport/pipe
Modified:
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/MultiProtocol.scala
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala
activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/transport/vm/VMTransport.scala
activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala
activemq/sandbox/activemq-apollo-actor/activemq-store/src/main/scala/org/apache/activemq/apollo/store/StoreFactory.scala
activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransportFactory.java
activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/TransportFactory.java
activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/pipe/PipeTransportFactory.java
activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala
activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/DirectBufferPoolFactory.scala
Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/broker-factory.index (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/brokers)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/broker-factory.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/broker-factory.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/brokers&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
(empty)
Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocol-factory.index (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocols)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocol-factory.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocol-factory.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocols&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
(empty)
Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transport-factory.index (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/vm)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transport-factory.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transport-factory.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/vm&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
(empty)
Modified: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/Broker.scala Wed Jul 7 04:29:44 2010
@@ -39,27 +39,24 @@ import ReporterLevel._
*/
object BrokerFactory {
- val finder = ClassFinder[SPI]("META-INF/services/org.apache.activemq.apollo/brokers")
- var spis = List[SPI]()
-
- trait SPI {
+ trait Provider {
def createBroker(brokerURI:String):Broker
}
- finder.find.foreach{ clazz =>
- try {
- spis ::= clazz.newInstance.asInstanceOf[SPI]
- } catch {
- case e:Throwable => e.printStackTrace
- }
+ def discover = {
+ val finder = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/broker-factory.index")
+ finder.new_instances
}
+ var providers = discover
+
+
def createBroker(uri:String, start:Boolean=false):Broker = {
if( uri == null ) {
return null
}
- spis.foreach { spi=>
- val broker = spi.createBroker(uri)
+ providers.foreach { provider=>
+ val broker = provider.createBroker(uri)
if( broker!=null ) {
if (start) {
broker.start();
Modified: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala Wed Jul 7 04:29:44 2010
@@ -25,7 +25,7 @@ import java.lang.String
import XmlEncoderDecoder._
import org.apache.activemq.apollo.util._
-class XmlBrokerFactory extends BrokerFactory.SPI {
+class XmlBrokerFactory extends BrokerFactory.Provider {
def createBroker(value: String): Broker = {
try {
Modified: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/MultiProtocol.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/MultiProtocol.scala?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/MultiProtocol.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/MultiProtocol.scala Wed Jul 7 04:29:44 2010
@@ -31,9 +31,9 @@ import java.lang.String
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class MultiProtocolFactorySPI extends ProtocolFactory.SPI {
+class MultiProtocolFactory extends ProtocolFactory.Provider {
- def all_protocols: Array[Protocol] = ((ProtocolFactory.spis.map(_.create())).filter(_.isIdentifiable)).toArray
+ def all_protocols: Array[Protocol] = ((ProtocolFactory.providers.map(_.create())).filter(_.isIdentifiable)).toArray
def create() = {
new MultiProtocol(()=>all_protocols)
Modified: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/protocol/ProtocolFactory.scala Wed Jul 7 04:29:44 2010
@@ -31,25 +31,21 @@ import org.apache.activemq.apollo.transp
*/
object ProtocolFactory {
- trait SPI {
+ trait Provider {
def create():Protocol
def create(config:String):Protocol
}
- val finder = ClassFinder[SPI]("META-INF/services/org.apache.activemq.apollo/protocols")
- var spis = List[SPI]()
-
- finder.find.foreach{ clazz =>
- try {
- spis ::= clazz.newInstance.asInstanceOf[SPI]
- } catch {
- case e:Throwable => e.printStackTrace
- }
+ def discover = {
+ val finder = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/protocol-factory.index")
+ finder.new_instances
}
+ var providers = discover
+
def get(name:String):Option[Protocol] = {
- spis.foreach { spi=>
- val rc = spi.create(name)
+ providers.foreach { provider=>
+ val rc = provider.create(name)
if( rc!=null ) {
return Some(rc)
}
Modified: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/transport/vm/VMTransport.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/transport/vm/VMTransport.scala?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/transport/vm/VMTransport.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/transport/vm/VMTransport.scala Wed Jul 7 04:29:44 2010
@@ -92,6 +92,10 @@ class VMTransportFactory extends PipeTra
}
override def connect(location: String): Transport = {
+ if( !location.startsWith("vm:") ) {
+ return null;
+ }
+
try {
var uri = new URI(location)
var brokerURI: String = null;
Copied: activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/store-factory.index (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/stores)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/store-factory.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/store-factory.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/resources/META-INF/services/org.apache.activemq.apollo/stores&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
(empty)
Copied: activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreFactory.scala (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreSPI.scala)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreFactory.scala?p2=activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreFactory.scala&p1=activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreSPI.scala&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreSPI.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-cassandra/src/main/scala/org/apache/activemq/apollo/store/cassandra/CassandraStoreFactory.scala Wed Jul 7 04:29:44 2010
@@ -33,7 +33,7 @@ import ReporterLevel._
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class CassandraStoreSPI extends StoreFactory.SPI {
+class CassandraStoreFactory extends StoreFactory.SPI {
def create(config: StoreDTO) = {
if( config.isInstanceOf[CassandraStoreDTO]) {
Copied: activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/direct-buffer-pool-factory.index (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/direct-buffer-pools)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/direct-buffer-pool-factory.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/direct-buffer-pool-factory.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/direct-buffer-pools&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
(empty)
Copied: activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/store-factory.index (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/stores)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/store-factory.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/store-factory.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/resources/META-INF/services/org.apache.activemq.apollo/stores&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
(empty)
Copied: activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolFactory.scala (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolSPI.scala)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolFactory.scala?p2=activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolFactory.scala&p1=activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolSPI.scala&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolSPI.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBDirectBufferPoolFactory.scala Wed Jul 7 04:29:44 2010
@@ -31,7 +31,7 @@ import org.apache.activemq.apollo.util.D
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class HawtDBDirectBufferPoolSPI extends DirectBufferPoolFactory.SPI {
+class HawtDBDirectBufferPoolFactory extends DirectBufferPoolFactory.SPI {
val prefix: String = "hawtdb:"
Copied: activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreFactory.scala (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreSPI.scala)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreFactory.scala?p2=activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreFactory.scala&p1=activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreSPI.scala&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreSPI.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-hawtdb/src/main/scala/org/apache/activemq/apollo/store/hawtdb/HawtDBStoreFactory.scala Wed Jul 7 04:29:44 2010
@@ -33,7 +33,7 @@ import ReporterLevel._
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class HawtDBStoreSPI extends StoreFactory.SPI {
+class HawtDBStoreFactory extends StoreFactory.SPI {
def create(config: StoreDTO) = {
if( config.isInstanceOf[HawtDBStoreDTO]) {
Copied: activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocol-factory.index (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocols)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocol-factory.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocol-factory.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/resources/META-INF/services/org.apache.activemq.apollo/protocols&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
(empty)
Modified: activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-stomp/src/main/scala/org/apache/activemq/apollo/stomp/StompProtocol.scala Wed Jul 7 04:29:44 2010
@@ -81,7 +81,7 @@ class StompProtocolCodecFactory extends
}
}
-class StompProtocolFactorySPI extends ProtocolFactory.SPI {
+class StompProtocolFactory extends ProtocolFactory.Provider {
def create() = StompProtocol
Modified: activemq/sandbox/activemq-apollo-actor/activemq-store/src/main/scala/org/apache/activemq/apollo/store/StoreFactory.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-store/src/main/scala/org/apache/activemq/apollo/store/StoreFactory.scala?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-store/src/main/scala/org/apache/activemq/apollo/store/StoreFactory.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-store/src/main/scala/org/apache/activemq/apollo/store/StoreFactory.scala Wed Jul 7 04:29:44 2010
@@ -36,30 +36,24 @@ class StoreFactory
*/
object StoreFactory {
- val finder = ClassFinder[SPI]("META-INF/services/org.apache.activemq.apollo/stores")
- var storesSPI = List[SPI]()
-
- trait SPI {
+ trait Provider {
def create(config:StoreDTO):Store
def validate(config: StoreDTO, reporter:Reporter):ReporterLevel
}
- finder.find.foreach{ clazz =>
- try {
- val SPI = clazz.newInstance.asInstanceOf[SPI]
- storesSPI ::= SPI
- } catch {
- case e:Throwable =>
- e.printStackTrace
- }
+ def discover = {
+ val finder = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/store-factory.index")
+ finder.new_instances
}
+ var providers = discover
+
def create(config:StoreDTO):Store = {
if( config == null ) {
return null
}
- storesSPI.foreach { spi=>
- val rc = spi.create(config)
+ providers.foreach { provider=>
+ val rc = provider.create(config)
if( rc!=null ) {
return rc
}
@@ -72,8 +66,8 @@ object StoreFactory {
if( config == null ) {
return INFO
} else {
- storesSPI.foreach { spi=>
- val rc = spi.validate(config, reporter)
+ providers.foreach { provider=>
+ val rc = provider.validate(config, reporter)
if( rc!=null ) {
return rc
}
Modified: activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransportFactory.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransportFactory.java?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransportFactory.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/java/org/apache/activemq/apollo/transport/tcp/TcpTransportFactory.java Wed Jul 7 04:29:44 2010
@@ -38,10 +38,14 @@ import static org.apache.activemq.apollo
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
* @author David Martin Clavo david(dot)martin(dot)clavo(at)gmail.com (logging improvement modifications)
*/
-public class TcpTransportFactory implements TransportFactory.TransportFactorySPI {
+public class TcpTransportFactory implements TransportFactory.Provider {
private static final Log LOG = LogFactory.getLog(TcpTransportFactory.class);
public TransportServer bind(String location) throws Exception {
+ if( !location.startsWith("tcp:") ) {
+ return null;
+ }
+
URI uri = new URI(location);
Map<String, String> options = new HashMap<String, String>(URISupport.parseParamters(uri));
TcpTransportServer server = createTcpTransportServer(uri);
@@ -61,6 +65,10 @@ public class TcpTransportFactory impleme
public Transport connect(String location) throws Exception {
+ if( !location.startsWith("tcp:") ) {
+ return null;
+ }
+
URI uri = new URI(location);
Map<String, String> options = new HashMap<String, String>(URISupport.parseParamters(uri));
URI localLocation = getLocalLocation(uri);
Copied: activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/resources/META-INF/services/org.apache.activemq.apollo/transport-factory.index (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/tcp)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/resources/META-INF/services/org.apache.activemq.apollo/transport-factory.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-tcp/src/main/resources/META-INF/services/org.apache.activemq.apollo/transport-factory.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/tcp&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
(empty)
Modified: activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/TransportFactory.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/TransportFactory.java?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/TransportFactory.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/TransportFactory.java Wed Jul 7 04:29:44 2010
@@ -16,11 +16,9 @@
*/
package org.apache.activemq.apollo.transport;
-import org.apache.activemq.apollo.util.FactoryFinder;
-import org.apache.activemq.apollo.util.IOExceptionSupport;
+import org.apache.activemq.apollo.util.ClassFinder;
-import java.io.IOException;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.ArrayList;
/**
*
@@ -28,57 +26,50 @@ import java.util.concurrent.ConcurrentHa
*/
public class TransportFactory {
- private static final FactoryFinder TRANSPORT_FACTORY_FINDER = new FactoryFinder("META-INF/services/org.apache.activemq.apollo/transports/");
- private static final ConcurrentHashMap<String, TransportFactorySPI> TRANSPORT_FACTORYS = new ConcurrentHashMap<String, TransportFactorySPI>();
-
- public interface TransportFactorySPI {
+ public interface Provider {
public TransportServer bind(String location) throws Exception;
public Transport connect(String location) throws Exception;
}
-
- /**
- */
- private static TransportFactorySPI factory(String location) throws IOException {
- String scheme = FactoryFinder.getScheme(location);
- if (scheme == null) {
- throw new IOException("Transport not scheme specified: [" + location + "]");
- }
- TransportFactorySPI tf = TRANSPORT_FACTORYS.get(scheme);
- if (tf == null) {
- // Try to load if from a META-INF property.
+
+ static public ArrayList<Provider> providers;
+
+ static {
+ ClassFinder<Provider> finder = new ClassFinder<Provider>("META-INF/services/org.apache.activemq.apollo/transport-factory.index");
+ ArrayList<Provider> t = new ArrayList<Provider>();
+ for( Class<Provider> clazz: finder.findArray() ) {
try {
- tf = (TransportFactorySPI)TRANSPORT_FACTORY_FINDER.newInstance(scheme);
- TRANSPORT_FACTORYS.put(scheme, tf);
- } catch (Throwable e) {
- throw IOExceptionSupport.create("Transport scheme NOT recognized: [" + scheme + "]", e);
+ t.add( clazz.newInstance() );
+ } catch(Throwable e) {
+ e.printStackTrace();
}
}
- return tf;
- }
-
-
- /**
- * Allow registration of a transport factory without wiring via META-INF classes
- * @param scheme
- * @param tf
- */
- public static void registerTransportFactory(String scheme, TransportFactorySPI tf) {
- TRANSPORT_FACTORYS.put(scheme, tf);
+ providers = t;
}
/**
* Creates a client transport.
*/
public static Transport connect(String location) throws Exception {
- return factory(location).connect(location);
+ for( Provider provider : providers) {
+ Transport rc = provider.connect(location);
+ if( rc!=null ) {
+ return rc;
+ }
+ }
+ throw new IllegalArgumentException("Unknown transport connect uri: "+location);
}
/**
* Creates a transport server.
*/
public static TransportServer bind(String location) throws Exception {
- return factory(location).bind(location);
+ for( Provider spi : providers) {
+ TransportServer rc = spi.bind(location);
+ if( rc!=null ) {
+ return rc;
+ }
+ }
+ throw new IllegalArgumentException("Unknown transport bind uri: "+location);
}
-
}
Modified: activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/pipe/PipeTransportFactory.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/pipe/PipeTransportFactory.java?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/pipe/PipeTransportFactory.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/java/org/apache/activemq/apollo/transport/pipe/PipeTransportFactory.java Wed Jul 7 04:29:44 2010
@@ -34,11 +34,15 @@ import org.apache.activemq.apollo.util.I
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-public class PipeTransportFactory implements TransportFactory.TransportFactorySPI {
+public class PipeTransportFactory implements TransportFactory.Provider {
public static final HashMap<String, PipeTransportServer> servers = new HashMap<String, PipeTransportServer>();
public TransportServer bind(String location) throws URISyntaxException, IOException {
+ if( !location.startsWith("pipe:") ) {
+ return null;
+ }
+
URI uri = new URI(location);
Map<String, String> options = new HashMap<String, String>(URISupport.parseParamters(uri));
String node = uri.getHost();
@@ -61,6 +65,10 @@ public class PipeTransportFactory implem
}
public Transport connect(String location) throws IOException, URISyntaxException {
+ if( !location.startsWith("pipe:") ) {
+ return null;
+ }
+
URI uri = new URI(location);
String name = uri.getHost();
synchronized(servers) {
Copied: activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/resources/META-INF/services/org.apache.activem.apollo/transport-factory.index (from r961223, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/ssl)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/resources/META-INF/services/org.apache.activem.apollo/transport-factory.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/resources/META-INF/services/org.apache.activem.apollo/transport-factory.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/ssl&r1=961223&r2=961224&rev=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org.apache.activemq.apollo/transports/ssl (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-transport/src/main/resources/META-INF/services/org.apache.activem.apollo/transport-factory.index Wed Jul 7 04:29:44 2010
@@ -1,17 +1,17 @@
-## ---------------------------------------------------------------------------
-## 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.
-## ---------------------------------------------------------------------------
-class=org.apache.activemq.transport.tcp.SslTransportFactory
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+org.apache.activemq.transport.pipe.PipeTransportFactory
Modified: activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/ClassFinder.scala Wed Jul 7 04:29:44 2010
@@ -18,6 +18,7 @@ package org.apache.activemq.apollo.util
import java.io.InputStream
import java.util.Properties
+import scala.collection.mutable.ListBuffer
/**
* <p>
@@ -26,7 +27,11 @@ import java.util.Properties
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-case class ClassFinder[T](path:String, loaders:Seq[ClassLoader]=Thread.currentThread.getContextClassLoader::Nil) {
+class ClassFinder[T](val path:String, val loaders:Array[ClassLoader]) {
+
+ def this(path:String) = this(path, Array(Thread.currentThread.getContextClassLoader))
+
+ def findArray(): Array[Class[T]] = find.toArray
def find(): List[Class[T]] = {
var classes = List[Class[T]]()
@@ -53,6 +58,18 @@ case class ClassFinder[T](path:String, l
return classes.distinct
}
+ def new_instances() = {
+ val t = ListBuffer[T]()
+ find.foreach {clazz =>
+ try {
+ t += clazz.newInstance.asInstanceOf[T]
+ } catch {
+ case e: Throwable => e.printStackTrace
+ }
+ }
+ t.toList
+ }
+
private def loadProperties(is:InputStream):Properties = {
if( is==null ) {
return null;
Modified: activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/DirectBufferPoolFactory.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/DirectBufferPoolFactory.scala?rev=961224&r1=961223&r2=961224&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/DirectBufferPoolFactory.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-util/src/main/scala/org/apache/activemq/apollo/util/DirectBufferPoolFactory.scala Wed Jul 7 04:29:44 2010
@@ -16,6 +16,8 @@
*/
package org.apache.activemq.apollo.util
+import scala.collection.mutable.ListBuffer
+
/**
* <p>
* </p>
@@ -24,28 +26,24 @@ package org.apache.activemq.apollo.util
*/
object DirectBufferPoolFactory {
- val finder = ClassFinder[SPI]("META-INF/services/org.apache.activemq.apollo/direct-buffer-pools")
- var spis = List[SPI]()
-
- trait SPI {
+ trait Provider {
def create(config:String):DirectBufferPool
def validate(config: String):Boolean
}
- finder.find.foreach{ clazz =>
- try {
- spis ::= clazz.newInstance.asInstanceOf[SPI]
- } catch {
- case e:Throwable => e.printStackTrace
- }
+ def discover = {
+ val finder = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/direct-buffer-pool-factory.index")
+ finder.new_instances
}
+ var providers = discover
+
def create(config:String):DirectBufferPool = {
if( config == null ) {
return null
}
- spis.foreach { spi=>
- val rc = spi.create(config)
+ providers.foreach { provider=>
+ val rc = provider.create(config)
if( rc!=null ) {
return rc
}
@@ -58,8 +56,8 @@ object DirectBufferPoolFactory {
if( config == null ) {
return true
} else {
- spis.foreach { spi=>
- if( spi.validate(config) ) {
+ providers.foreach { provider=>
+ if( provider.validate(config) ) {
return true
}
}