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/06/10 22:51:32 UTC
svn commit: r1134439 - in /activemq/activemq-apollo/trunk:
apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/
apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/
apollo-broker/src/main/scala/org/apache/activemq/apollo/br...
Author: chirino
Date: Fri Jun 10 20:51:31 2011
New Revision: 1134439
URL: http://svn.apache.org/viewvc?rev=1134439&view=rev
Log:
Initial support for https://issues.apache.org/jira/browse/APLO-39 : Apply configuration updates to a broker without needing a restart. Virtual hosts and connectors can be added or removed dynamically by just updating the config file.
Added:
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/CollectionsSupport.scala
- copied, changed from r1134421, activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/LoggingTracker.scala
Removed:
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/Reporter.scala
Modified:
activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStore.scala
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/ConfigStore.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/KeyStorage.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Router.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/osgi/BrokerService.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/Store.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/transport/VMTransport.scala
activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/web/WebServerFactory.scala
activemq/activemq-apollo/trunk/apollo-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/BrokerPerfSupport.scala
activemq/activemq-apollo/trunk/apollo-cli/src/main/scala/org/apache/activemq/apollo/cli/commands/Run.scala
activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStore.scala
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/JDBM2Store.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/OpenwireProtocolHandler.scala
activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/StompTest.scala
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/BaseService.scala
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/Logging.scala
activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/LoggingTracker.scala
activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/ApolloListener.scala
activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/osgi/OsgiWebServerFactory.scala
activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/BrokerResource.scala
activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/Support.scala
Modified: activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStore.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStore.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStore.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-bdb/src/main/scala/org/apache/activemq/apollo/broker/store/bdb/BDBStore.scala Fri Jun 10 20:51:31 2011
@@ -23,7 +23,6 @@ import org.fusesource.hawtdispatch._
import java.util.concurrent._
import org.apache.activemq.apollo.broker.store._
import org.apache.activemq.apollo.util._
-import ReporterLevel._
import org.fusesource.hawtdispatch.ListEventAggregator
import org.apache.activemq.apollo.dto.{StoreStatusDTO, IntMetricDTO, TimeMetricDTO, StoreDTO}
import org.apache.activemq.apollo.util.OptionSupport._
@@ -35,17 +34,6 @@ import scala.util.continuations._
*/
object BDBStore extends Log {
val DATABASE_LOCKED_WAIT_DELAY = 10 * 1000;
-
- /**
- * Validates a configuration object.
- */
- def validate(config: BDBStoreDTO, reporter:Reporter):ReporterLevel = {
- new Reporting(reporter) {
- if( config.directory==null ) {
- error("The BDB Store directory property must be configured.")
- }
- }.result
- }
}
/**
@@ -80,19 +68,6 @@ class BDBStore(var config:BDBStoreDTO) e
}
}
- def configure(config: StoreDTO, reporter: Reporter) = configure(config.asInstanceOf[BDBStoreDTO], reporter)
-
- def configure(config: BDBStoreDTO, reporter: Reporter) = {
- if ( BDBStore.validate(config, reporter) < ERROR ) {
- if( service_state.is_started ) {
- // TODO: apply changes while he broker is running.
- reporter.report(WARN, "Updating bdb store configuration at runtime is not yet supported. You must restart the broker for the change to take effect.")
- } else {
- this.config = config
- }
- }
- }
-
protected def _start(on_completed: Runnable) = {
write_executor = Executors.newFixedThreadPool(1, new ThreadFactory(){
def newThread(r: Runnable) = {
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -20,7 +20,6 @@ import dto.BDBStoreDTO
import org.apache.activemq.apollo.broker.store.StoreFactory
import org.apache.activemq.apollo.dto.StoreDTO
import org.apache.activemq.apollo.util._
-import ReporterLevel._
/**
* <p>
@@ -36,21 +35,9 @@ import ReporterLevel._
*/
class BDBStoreFactory extends StoreFactory.Provider {
- def create(config: StoreDTO) = {
- config match {
- case config:BDBStoreDTO =>
- new BDBStore(config)
- case _ =>
- null
- }
+ def create(config: StoreDTO) = config match {
+ case config:BDBStoreDTO => new BDBStore(config)
+ case _ => null
}
- def validate(config: StoreDTO, reporter:Reporter):ReporterLevel = {
- config match {
- case config:BDBStoreDTO =>
- BDBStore.validate(config, reporter)
- case _ =>
- null
- }
- }
}
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -20,19 +20,17 @@ import _root_.java.io.File
import _root_.java.lang.String
import org.fusesource.hawtdispatch._
import org.fusesource.hawtbuf._
-import AsciiBuffer._
import collection.JavaConversions
import JavaConversions._
-import java.util.concurrent.atomic.AtomicLong
-import org.apache.activemq.apollo.util._
-import ReporterLevel._
import security.{AclAuthorizer, Authorizer, JaasAuthenticator, Authenticator}
-import java.net.InetSocketAddress
import org.apache.activemq.apollo.broker.web._
import collection.mutable.{HashSet, LinkedHashMap, HashMap}
import scala.util.Random
+import org.apache.activemq.apollo.util._
+import org.fusesource.hawtbuf.AsciiBuffer._
+import CollectionsSupport._
import FileSupport._
-import org.apache.activemq.apollo.dto.{LogCategoryDTO, BrokerDTO}
+import org.apache.activemq.apollo.dto.{ConnectorDTO, VirtualHostDTO, LogCategoryDTO, BrokerDTO}
/**
* <p>
@@ -144,39 +142,6 @@ object Broker extends Log {
def class_loader:ClassLoader = ClassFinder.class_loader
- /**
- * Creates a default a configuration object.
- */
- def defaultConfig() = {
- val rc = new BrokerDTO
- rc.notes = "A default configuration"
- rc.virtual_hosts.add(VirtualHost.default_config)
- rc.connectors.add(Connector.defaultConfig)
- rc
- }
-
- /**
- * Validates a configuration object.
- */
- def validate(config: BrokerDTO, reporter:Reporter):ReporterLevel = {
- new Reporting(reporter) {
- if( config.virtual_hosts.isEmpty ) {
- error("Broker must define at least one virtual host.")
- }
-
- for (host <- config.virtual_hosts ) {
- result |= VirtualHost.validate(host, reporter)
- }
- for (connector <- config.connectors ) {
- result |= Connector.validate(connector, reporter)
- }
- if( !config.web_admins.isEmpty ) {
- WebServerFactory.validate(config.web_admins.toList, reporter)
- }
-
- }.result
- }
-
val version = using(getClass().getResourceAsStream("version.txt")) { source=>
read_text(source).trim
}
@@ -197,13 +162,26 @@ class Broker() extends BaseService {
import Broker._
var tmp: File = _
- var config: BrokerDTO = defaultConfig
+
+ var config: BrokerDTO = new BrokerDTO
+ config.virtual_hosts.add({
+ val rc = new VirtualHostDTO
+ rc.id = "default"
+ rc.host_names.add("localhost")
+ rc
+ })
+ config.connectors.add({
+ val rc = new ConnectorDTO
+ rc.id = "default"
+ rc.bind = "tcp://0.0.0.0:0"
+ rc
+ })
var default_virtual_host: VirtualHost = null
val virtual_hosts = LinkedHashMap[AsciiBuffer, VirtualHost]()
val virtual_hosts_by_hostname = new LinkedHashMap[AsciiBuffer, VirtualHost]()
- var connectors: List[Connector] = Nil
+ val connectors = LinkedHashMap[String, Connector]()
val connections = HashMap[Long, BrokerConnection]()
val dispatch_queue = createQueue("broker")
@@ -216,6 +194,7 @@ class Broker() extends BaseService {
var web_server:WebServer = _
+ var config_log:Log = Log(new MemoryLogger(Broker.log))
var audit_log:Log = _
var security_log:Log = _
var connection_log:Log = _
@@ -224,23 +203,6 @@ class Broker() extends BaseService {
override def toString() = "broker: "+id
-
- /**
- * Validates and then applies the configuration.
- */
- def configure(config: BrokerDTO, reporter:Reporter) = {
- if ( validate(config, reporter) < ERROR ) {
- dispatch_queue {
- this.config = config
- }
- if( service_state.is_started ) {
- // TODO: apply changes while he broker is running.
- reporter.report(WARN, "Updating broker configuration at runtime is not yet supported. You must restart the broker for the change to take effect.")
-
- }
- }
- }
-
var authenticator:Authenticator = _
var authorizer:Authorizer = _
@@ -253,135 +215,233 @@ class Broker() extends BaseService {
}
}
+ /**
+ * Validates and then applies the configuration.
+ */
+ def update(config: BrokerDTO, on_completed:Runnable) = dispatch_queue {
+ dispatch_queue.assertExecuting()
+ this.config = config
+
+ val tracker = new LoggingTracker("broker reconfiguration", console_log, dispatch_queue)
+ if( service_state.is_started ) {
+ apply_update(tracker)
+ }
+ tracker.callback(on_completed)
+ }
+
override def _start(on_completed:Runnable) = {
// create the runtime objects from the config
- {
- import OptionSupport._
- init_dispatch_queue(dispatch_queue)
+ init_logs
+ log_versions
+ check_file_limit
+ init_dispatch_queue(dispatch_queue)
+ BrokerRegistry.add(this)
- // Configure the logging categories...
- val log_category = config.log_category.getOrElse(new LogCategoryDTO)
- val base_category = "org.apache.activemq.apollo.log."
- security_log = Log(log_category.security.getOrElse(base_category+"security"))
- audit_log = Log(log_category.audit.getOrElse(base_category+"audit"))
- connection_log = Log(log_category.connection.getOrElse(base_category+"connection"))
- console_log = Log(log_category.console.getOrElse(base_category+"console"))
+ val tracker = new LoggingTracker("broker startup", console_log, dispatch_queue)
+ apply_update(tracker)
+ tracker.callback(on_completed)
- log_versions
- check_file_limit
+ }
- if( config.key_storage!=null ) {
- key_storage = new KeyStorage
- key_storage.config = config.key_storage
- }
+ def _stop(on_completed:Runnable): Unit = {
+ val tracker = new LoggingTracker("broker shutdown", console_log, dispatch_queue)
+ // Stop the services...
+ services.foreach( x=>
+ tracker.stop(x)
+ )
+ services = Nil
- if( config.authentication != null && config.authentication.enabled.getOrElse(true) ) {
- authenticator = new JaasAuthenticator(config.authentication, security_log)
- authorizer = new AclAuthorizer(config.authentication.acl_principal_kinds().toList, security_log)
- }
+ // Stop accepting connections..
+ connectors.values.foreach( x=>
+ tracker.stop(x)
+ )
+ connectors.clear()
- default_virtual_host = null
- for (c <- config.virtual_hosts) {
- val host = new VirtualHost(this, c.host_names.head)
- host.configure(c, LoggingReporter(VirtualHost))
- virtual_hosts += ascii(c.id)-> host
- // first defined host is the default virtual host
- if( default_virtual_host == null ) {
- default_virtual_host = host
- }
+ // stop the connections..
+ connections.valuesIterator.foreach { connection=>
+ tracker.stop(connection)
+ }
+ connections.clear()
+
+ // Shutdown the virtual host services
+ virtual_hosts.valuesIterator.foreach( x=>
+ tracker.stop(x)
+ )
+ virtual_hosts.clear()
+ virtual_hosts_by_hostname.clear()
+
+ Option(web_server).foreach(tracker.stop(_))
+ web_server = null
+
+ BrokerRegistry.remove(this)
+ tracker.callback(on_completed)
+ }
+
+ protected def init_logs = {
+ import OptionSupport._
+ // Configure the logging categories...
+ val log_category = config.log_category.getOrElse(new LogCategoryDTO)
+ val base_category = "org.apache.activemq.apollo.log."
+ security_log = Log(log_category.security.getOrElse(base_category + "security"))
+ audit_log = Log(log_category.audit.getOrElse(base_category + "audit"))
+ connection_log = Log(log_category.connection.getOrElse(base_category + "connection"))
+ console_log = Log(log_category.console.getOrElse(base_category + "console"))
+ }
+
+ protected def apply_update(tracker:LoggingTracker) {
+
+ import OptionSupport._
+ init_logs
- // add all the host names of the virtual host to the virtual_hosts_by_hostname map..
- c.host_names.foreach { name=>
- virtual_hosts_by_hostname += ascii(name)->host
+ key_storage = if (config.key_storage != null) {
+ new KeyStorage(config.key_storage)
+ } else {
+ null
+ }
+
+ if (config.authentication != null && config.authentication.enabled.getOrElse(true)) {
+ authenticator = new JaasAuthenticator(config.authentication, security_log)
+ authorizer = new AclAuthorizer(config.authentication.acl_principal_kinds().toList, security_log)
+ } else {
+ authenticator = null
+ authorizer = null
+ }
+
+ val host_config_by_id = HashMap[AsciiBuffer, VirtualHostDTO]()
+ config.virtual_hosts.foreach{ value =>
+ host_config_by_id += ascii(value.id) -> value
+ }
+
+ diff(virtual_hosts.keySet.toSet, host_config_by_id.keySet.toSet) match { case (added, updated, removed) =>
+ removed.foreach { id =>
+ for( host <- virtual_hosts.remove(id) ) {
+ host.config.host_names.foreach { name =>
+ virtual_hosts_by_hostname.remove(ascii(name))
+ }
+ tracker.stop(host)
}
}
- for (c <- config.connectors) {
- val connector = new AcceptingConnector(this, c.id)
- connector.configure(c, LoggingReporter(VirtualHost))
- connectors ::= connector
- }
+ updated.foreach { id=>
+ for( host <- virtual_hosts.get(id); config <- host_config_by_id.get(id) ) {
+
+ host.config.host_names.foreach { name =>
+ virtual_hosts_by_hostname.remove(ascii(name))
+ }
+ host.update(config, tracker.task("update: "+host))
- services = (config.services.map { clazz =>
- val service = Broker.class_loader.loadClass(clazz).newInstance().asInstanceOf[Service]
+ config.host_names.foreach { name =>
+ virtual_hosts_by_hostname += ascii(name) -> host
+ }
- // Try to inject the broker via reflection..
- type BrokerAware = { var broker:Broker }
- try {
- service.asInstanceOf[BrokerAware].broker = this
- } catch { case _ => }
+ }
+ }
+
+ added.foreach { id=>
+ for( config <- host_config_by_id.get(id) ) {
- service
+ val host = new VirtualHost(this, config.id)
+ host.config = config
+ virtual_hosts += ascii(config.id) -> host
+
+ // add all the host names of the virtual host to the virtual_hosts_by_hostname map..
+ config.host_names.foreach { name =>
+ virtual_hosts_by_hostname += ascii(name) -> host
+ }
- }).toList
+ tracker.start(host)
+ }
+ }
}
- BrokerRegistry.add(this)
+ // first defined host is the default virtual host
+ config.virtual_hosts.headOption.map(x=>ascii(x.id)).foreach { id =>
+ default_virtual_host = virtual_hosts.get(id).getOrElse(null)
+ }
- // Start up the virtual hosts
- val first_tracker = new LoggingTracker("broker startup", console_log, dispatch_queue)
- val second_tracker = new LoggingTracker("broker startup", console_log, dispatch_queue)
- if( !config.web_admins.isEmpty ) {
- WebServerFactory.create(this) match {
- case null =>
- warn("Could not start admistration interface.")
- case x =>
- web_server = x
- second_tracker.start(web_server)
- }
+ val connector_config_by_id = HashMap[String, ConnectorDTO]()
+ config.connectors.foreach{ value =>
+ connector_config_by_id += value.id -> value
}
- virtual_hosts.valuesIterator.foreach( x=>
- first_tracker.start(x)
- )
+ diff(connectors.keySet.toSet, connector_config_by_id.keySet.toSet) match { case (added, updated, removed) =>
+ removed.foreach { id =>
+ for( connector <- connectors.remove(id) ) {
+ tracker.stop(connector)
+ }
+ }
- // Once virtual hosts are up.. start up the connectors.
- first_tracker.callback{
- connectors.foreach(second_tracker.start(_))
- second_tracker.callback {
- // Once the connectors are up, start the services.
- val services_tracker = new LoggingTracker("broker startup", console_log, dispatch_queue)
- services.foreach( x=>
- first_tracker.start(x)
- )
- services_tracker.callback(on_completed)
+ updated.foreach { id=>
+ for( connector <- connectors.get(id); config <- connector_config_by_id.get(id) ) {
+ connector.update(config, tracker.task("update: "+connector))
+ }
+ }
+
+ added.foreach { id=>
+ for( config <- connector_config_by_id.get(id) ) {
+ val connector = new AcceptingConnector(this, config.id)
+ connector.config = config
+ connectors += config.id -> connector
+ tracker.start(connector)
+ }
}
}
- }
+ val set1 = (services.map{x => x.getClass.getName}).toSet
+ diff(set1, config.services.toSet) match { case (added, updated, removed) =>
+ removed.foreach { id =>
+ for( service <- services.find(_.getClass.getName == id) ) {
+ services = services.filterNot( _ == service )
+ tracker.stop(service)
+ }
+ }
+ // Not much to do on updates..
- def _stop(on_completed:Runnable): Unit = {
- val tracker = new LoggingTracker("broker shutdown", console_log, dispatch_queue)
+ added.foreach { clazz=>
- // Stop the services...
- services.foreach( x=>
- tracker.stop(x)
- )
+ val service = Broker.class_loader.loadClass(clazz).newInstance().asInstanceOf[Service]
- // Stop accepting connections..
- connectors.foreach( x=>
- tracker.stop(x)
- )
+ // Try to inject the broker via reflection..
+ type BrokerAware = {var broker: Broker}
+ try {
+ service.asInstanceOf[BrokerAware].broker = this
+ } catch {
+ case _ =>
+ }
- // stop the connections..
- connections.valuesIterator.foreach { connection=>
- tracker.stop(connection)
+ services ::= service
+
+ tracker.start(service)
+ }
}
- // Shutdown the virtual host services
- virtual_hosts.valuesIterator.foreach( x=>
- tracker.stop(x)
- )
+ if( !config.web_admins.isEmpty ) {
+ if ( web_server!=null ) {
+ val task = tracker.task("restart: "+web_server)
+ web_server.stop(^{
+ web_server.start(task)
+ })
+ } else {
+ web_server = WebServerFactory.create(this)
+ if (web_server==null) {
+ warn("Could not start admistration interface.")
+ } else {
+ tracker.start(web_server)
+ }
+ }
+ } else {
+ if( web_server!=null ) {
+ tracker.stop(web_server)
+ web_server = null
+ }
+ }
- Option(web_server).foreach(tracker.stop(_))
- BrokerRegistry.remove(this)
- tracker.callback(on_completed)
}
private def log_versions = {
@@ -492,6 +552,6 @@ class Broker() extends BaseService {
first_accepting_connector.get.transport_server.getSocketAddress
}
- def first_accepting_connector = connectors.find(_.isInstanceOf[AcceptingConnector]).map(_.asInstanceOf[AcceptingConnector])
+ def first_accepting_connector = connectors.values.find(_.isInstanceOf[AcceptingConnector]).map(_.asInstanceOf[AcceptingConnector])
}
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/ConfigStore.scala Fri Jun 10 20:51:31 2011
@@ -27,6 +27,7 @@ import FileSupport._
import java.util.Properties
import java.io.{FileOutputStream, FileInputStream, File}
import java.util.concurrent.{ThreadFactory, TimeUnit, ExecutorService, Executors}
+import org.springframework.core.style.DefaultToStringStyler
object ConfigStore {
@@ -60,6 +61,8 @@ trait ConfigStore {
def stop:Unit
+ var on_update: (BrokerDTO)=>Unit = { dto => }
+
}
object FileConfigStore extends Log
@@ -92,7 +95,7 @@ class FileConfigStore(var file:File = ne
if( !file.exists ) {
try {
// try to create a default version of the file.
- store(Broker.defaultConfig)
+ store((new Broker).config)
} catch {
case e:Throwable =>
}
@@ -139,7 +142,7 @@ class FileConfigStore(var file:File = ne
if( l != last_modified ) {
val config = read(file)
if ( !Arrays.equals(latestData, config.data) ) {
- // TODO: trigger reloading the config file.
+ on_update(unmarshall(config.data, true))
}
latest = config
}
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -20,10 +20,8 @@ import org.fusesource.hawtdispatch._
import org.fusesource.hawtdispatch.{Dispatch}
import org.apache.activemq.apollo.dto.{ConnectorDTO}
import protocol.{ProtocolFactory, Protocol}
-import collection.mutable.HashMap
import org.apache.activemq.apollo.transport._
import org.apache.activemq.apollo.util._
-import ReporterLevel._
import org.apache.activemq.apollo.util.OptionSupport._
@@ -34,31 +32,6 @@ import org.apache.activemq.apollo.util.O
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
object Connector extends Log {
-
- /**
- * Creates a default a configuration object.
- */
- def defaultConfig() = {
- val rc = new ConnectorDTO
- rc.id = "default"
- rc.bind = "tcp://0.0.0.0:61613"
- rc.protocol = "any"
- rc.connection_limit = 1000
- rc
- }
-
- /**
- * Validates a configuration object.
- */
- def validate(config: ConnectorDTO, reporter:Reporter):ReporterLevel = {
- new Reporting(reporter) {
- if( empty(config.id) ) {
- error("Connector id must be specified")
- }
- }.result
- }
-
-
}
trait Connector extends BaseService {
@@ -69,6 +42,7 @@ trait Connector extends BaseService {
def config:ConnectorDTO
def accepted:LongCounter
def connected:LongCounter
+ def update(config: ConnectorDTO, on_complete:Runnable):Unit
}
@@ -84,7 +58,10 @@ class AcceptingConnector(val broker:Brok
override val dispatch_queue = broker.dispatch_queue
- var config:ConnectorDTO = defaultConfig
+ var config:ConnectorDTO = new ConnectorDTO
+ config.id = id
+ config.bind = "tcp://0.0.0.:0"
+
var transport_server:TransportServer = _
var protocol:Protocol = _
val accepted = new LongCounter()
@@ -133,19 +110,15 @@ class AcceptingConnector(val broker:Brok
}
/**
- * Validates and then applies the configuration.
*/
- def configure(config: ConnectorDTO, reporter:Reporter) = ^{
- if ( validate(config, reporter) < ERROR ) {
- this.config = config
-
- if( service_state.is_started ) {
- // TODO: apply changes while running
- reporter.report(WARN, "Updating connector configuration at runtime is not yet supported. You must restart the broker for the change to take effect.")
+ def update(config: ConnectorDTO, on_completed:Runnable) = {
+ dispatch_queue.assertExecuting()
+ this.config = config
+ if( service_state.is_started ) {
- }
}
- } |>>: dispatch_queue
+ on_completed.run
+ }
override def _start(on_completed:Runnable) = {
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/KeyStorage.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/KeyStorage.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/KeyStorage.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/KeyStorage.scala Fri Jun 10 20:51:31 2011
@@ -25,9 +25,7 @@ import java.io.FileInputStream
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class KeyStorage {
-
- var config = new KeyStorageDTO
+class KeyStorage(val config:KeyStorageDTO) {
var key_store:KeyStore = _
var trust_managers:Array[TrustManager] = _
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Router.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Router.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Router.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/Router.scala Fri Jun 10 20:51:31 2011
@@ -24,7 +24,6 @@ import org.apache.activemq.apollo.dto._
import security.SecurityContext
import store.StoreUOW
import util.continuations._
-import ReporterLevel._
/**
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
@@ -55,7 +54,6 @@ object RouterFactory {
trait Provider {
def create(host:VirtualHost):Router
- def validate(config: RouterDTO, reporter:Reporter):ReporterLevel
}
val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/router-factory.index", classOf[Provider])
@@ -74,22 +72,6 @@ object RouterFactory {
throw new IllegalArgumentException("Uknonwn router type: "+config.getClass)
}
-
- def validate(config: RouterDTO, reporter:Reporter):ReporterLevel = {
- if( config == null ) {
- return INFO
- } else {
- providers.singletons.foreach { provider=>
- val rc = provider.validate(config, reporter)
- if( rc!=null ) {
- return rc
- }
- }
- }
- reporter.report(ERROR, "Uknonwn router type: "+config.getClass)
- ERROR
- }
-
}
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -24,7 +24,6 @@ import org.fusesource.hawtdispatch._
import java.util.concurrent.TimeUnit
import org.apache.activemq.apollo.util._
import path.PathFilter
-import ReporterLevel._
import org.fusesource.hawtbuf.{Buffer, AsciiBuffer}
import collection.JavaConversions
import java.util.concurrent.atomic.AtomicLong
@@ -38,33 +37,6 @@ import org.apache.activemq.apollo.dto._
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
object VirtualHost extends Log {
-
- /**
- * Creates a default a configuration object.
- */
- def default_config() = {
- val rc = new VirtualHostDTO
- rc.id = "default"
- rc.host_names.add("localhost")
- rc.store = null
- rc
- }
-
- /**
- * Validates a configuration object.
- */
- def validate(config: VirtualHostDTO, reporter:Reporter):ReporterLevel = {
- new Reporting(reporter) {
-
- if( config.host_names.isEmpty ) {
- error("Virtual host must be configured with at least one host name.")
- }
-
- result |= StoreFactory.validate(config.store, reporter)
-
- }.result
- }
-
}
/**
@@ -98,17 +70,12 @@ class VirtualHost(val broker: Broker, va
/**
* Validates and then applies the configuration.
*/
- def configure(config: VirtualHostDTO, reporter:Reporter) = ^{
- if ( validate(config, reporter) < ERROR ) {
- this.config = config
-
- if( service_state.is_started ) {
- // TODO: apply changes while he broker is running.
- reporter.report(WARN, "Updating virtual host configuration at runtime is not yet supported. You must restart the broker for the change to take effect.")
+ def update(config: VirtualHostDTO, on_completed:Runnable) = dispatch_queue{
+ this.config = config
- }
+ if( service_state.is_started ) {
}
- } |>>: dispatch_queue
+ }
override protected def _start(on_completed:Runnable):Unit = {
@@ -163,7 +130,6 @@ class VirtualHost(val broker: Broker, va
}
}
}
- console_log.info("Store started")
task.run
}
}
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -46,32 +46,14 @@ class XmlBrokerFactory extends BrokerFac
throw new IOException("Cannot create broker from non-existent URI: " + brokerURI)
}
- val xml = decode(classOf[BrokerDTO], configURL, System.getProperties)
- return createMessageBroker(xml)
+ val broker = new Broker()
+ broker.config = decode(classOf[BrokerDTO], configURL, System.getProperties)
+ return broker;
+
} catch {
case e: Exception =>
throw new RuntimeException("Cannot create broker from URI: " + value, e)
}
}
- def createMessageBroker(config: BrokerDTO): Broker = {
- import ReporterLevel._
- val broker = new Broker()
-
- var error_message = "";
- broker.configure(config, new Reporter(){
- override def report(level: ReporterLevel, message: String) = {
- level match {
- case ERROR=> error_message+=message+"\n"
- case _=>
- }
- }
- })
-
- if( !error_message.isEmpty ) {
- throw new Exception("Invalid Broker Configuration:\n"+error_message)
- }
-
- broker
- }
}
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -17,13 +17,9 @@
package org.apache.activemq.apollo.broker.jetty
import org.eclipse.jetty.server.{Connector, Handler, Server}
-import org.eclipse.jetty.security._
-import org.apache.activemq.apollo.dto.{WebAdminDTO, PrincipalDTO}
import org.apache.activemq.apollo.broker.Broker
-import authentication.BasicAuthenticator
import org.eclipse.jetty.webapp.WebAppContext
import org.eclipse.jetty.server.nio.SelectChannelConnector
-import org.eclipse.jetty.plus.jaas.JAASLoginService
import org.apache.activemq.apollo.util._
import org.fusesource.hawtdispatch._
import java.io.File
@@ -31,11 +27,9 @@ import java.lang.String
import org.apache.activemq.apollo.broker.web.{WebServer, WebServerFactory}
import java.net.URI
import org.eclipse.jetty.server.handler.HandlerList
-import collection.mutable.{HashMap, ListBuffer}
+import collection.mutable.HashMap
import org.eclipse.jetty.server.ssl.SslSelectChannelConnector
-import javax.net.ssl.KeyManager
import javax.net.ssl.SSLContext
-import javax.net.ssl.TrustManager
import org.eclipse.jetty.util.thread.ExecutorThreadPool
/**
@@ -59,20 +53,13 @@ object JettyWebServerFactory extends Web
if( !enabled ) {
return null
}
- new JettyWebServer(broker)
- }
-
- def validate(config: List[WebAdminDTO], reporter: Reporter): ReporterLevel.ReporterLevel = {
- if( !enabled ) {
- return null
- }
- import ReporterLevel._
if( JettyWebServer.webapp==null ) {
- reporter.report(ERROR, "The apollo.home or apollo.webapp system property must be set so that the webconsole can be started.")
- return ERROR
+ JettyWebServer.warn("The apollo.home or apollo.webapp system property must be set so that the webconsole can be started.")
+ return null
}
- return INFO
+ new JettyWebServer(broker)
}
+
}
/**
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/osgi/BrokerService.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/osgi/BrokerService.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/osgi/BrokerService.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/osgi/BrokerService.scala Fri Jun 10 20:51:31 2011
@@ -74,7 +74,7 @@ object BrokerService extends Log {
debug("Starting broker");
broker = new Broker()
- broker.configure(dto, LoggingReporter(this))
+ broker.update(dto, NOOP)
broker.tmp = basedir / "tmp"
broker.tmp.mkdirs
broker.start(^{
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/Store.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/Store.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/Store.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/store/Store.scala Fri Jun 10 20:51:31 2011
@@ -52,13 +52,6 @@ trait Store extends ServiceTrait {
def create_uow():StoreUOW
/**
- * Supplies configuration data to the Store. This will be called
- * before the store is started, but may also occur after the the Store
- * is started.
- */
- def configure(config: StoreDTO, reporter:Reporter):Unit
-
- /**
* Removes all previously stored data.
*/
def purge(callback: =>Unit):Unit
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -18,7 +18,6 @@ package org.apache.activemq.apollo.broke
*/
import org.apache.activemq.apollo.dto.StoreDTO
import org.apache.activemq.apollo.util._
-import ReporterLevel._
/**
* <p>
@@ -30,7 +29,6 @@ object StoreFactory {
trait Provider {
def create(config:StoreDTO):Store
- def validate(config: StoreDTO, reporter:Reporter):ReporterLevel
}
val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/store-factory.index", classOf[Provider])
@@ -48,20 +46,4 @@ object StoreFactory {
throw new IllegalArgumentException("Uknonwn store type: "+config.getClass)
}
-
- def validate(config: StoreDTO, reporter:Reporter):ReporterLevel = {
- if( config == null ) {
- return INFO
- } else {
- providers.singletons.foreach { provider=>
- val rc = provider.validate(config, reporter)
- if( rc!=null ) {
- return rc
- }
- }
- }
- reporter.report(ERROR, "Uknonwn store type: "+config.getClass)
- ERROR
- }
-
}
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/transport/VMTransport.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/transport/VMTransport.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/transport/VMTransport.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/main/scala/org/apache/activemq/apollo/broker/transport/VMTransport.scala Fri Jun 10 20:51:31 2011
@@ -30,6 +30,7 @@ import org.apache.activemq.apollo.transp
import org.apache.activemq.apollo.transport.pipe.PipeTransportServer
import org.apache.activemq.apollo.util._
import java.lang.String
+import org.apache.activemq.apollo.dto.ConnectorDTO
/**
@@ -127,7 +128,7 @@ class VMTransportFactory extends PipeTra
if (server == null && create) {
// This is the connector that the broker needs.
- val connector = Connector.defaultConfig
+ val connector = new ConnectorDTO
connector.id = "vm"
connector.bind = "vm://" + name
@@ -136,7 +137,6 @@ class VMTransportFactory extends PipeTra
if (brokerURI == null) {
// Lets create and configure it...
broker = new Broker()
- broker.config = Broker.defaultConfig
broker.config.connectors.clear
broker.config.connectors.add(connector)
} else {
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -17,8 +17,6 @@
package org.apache.activemq.apollo.broker.web
import org.apache.activemq.apollo.util._
-import ReporterLevel._
-import org.apache.activemq.apollo.dto.WebAdminDTO
import org.apache.activemq.apollo.broker.Broker
/**
@@ -39,7 +37,6 @@ object WebServerFactory {
trait Provider {
def create(broker:Broker):WebServer
- def validate(config: List[WebAdminDTO], reporter:Reporter):ReporterLevel
}
val providers = new ClassFinder[Provider]("META-INF/services/org.apache.activemq.apollo/web-server-factory.index",classOf[Provider])
@@ -57,20 +54,4 @@ object WebServerFactory {
null
}
-
- def validate(config: List[WebAdminDTO], reporter:Reporter):ReporterLevel = {
- if( config == null ) {
- return INFO
- } else {
- providers.singletons.foreach { provider=>
- val rc = provider.validate(config, reporter)
- if( rc!=null ) {
- return rc
- }
- }
- }
- reporter.report(ERROR, "Could not find a web server implementation to use.")
- ERROR
- }
-
}
Modified: activemq/activemq-apollo/trunk/apollo-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/BrokerPerfSupport.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/BrokerPerfSupport.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/BrokerPerfSupport.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/BrokerPerfSupport.scala Fri Jun 10 20:51:31 2011
@@ -198,7 +198,7 @@ abstract class BrokerPerfSupport extends
def getRemoteProtocolName(): String
def createBrokerConfig(name: String, bindURI: String, connectUri: String): BrokerDTO = {
- val config = Broker.defaultConfig
+ val config = (new Broker).config
val connector = config.connectors.get(0)
connector.bind = bindURI
connector.protocol = getBrokerProtocolName
Modified: activemq/activemq-apollo/trunk/apollo-cli/src/main/scala/org/apache/activemq/apollo/cli/commands/Run.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-cli/src/main/scala/org/apache/activemq/apollo/cli/commands/Run.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-cli/src/main/scala/org/apache/activemq/apollo/cli/commands/Run.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-cli/src/main/scala/org/apache/activemq/apollo/cli/commands/Run.scala Fri Jun 10 20:51:31 2011
@@ -19,11 +19,11 @@ package org.apache.activemq.apollo.cli.c
import org.apache.felix.gogo.commands.{Action, Option => option, Argument => argument, Command => command}
import java.io.File
import org.apache.activemq.apollo.broker.{Broker, ConfigStore, FileConfigStore}
-import org.fusesource.hawtdispatch._
import org.apache.activemq.apollo.util.FileSupport._
import org.apache.activemq.apollo.cli.Apollo
import org.apache.felix.service.command.CommandSession
-import org.apache.activemq.apollo.util.{ServiceControl, Log, LoggingReporter}
+import org.apache.activemq.apollo.util.ServiceControl
+import org.fusesource.hawtdispatch._
/**
* The apollo run command
@@ -80,12 +80,21 @@ class Run extends Action {
// Load the configs and start the brokers up.
session.getConsole.println("Loading configuration file '%s'.".format(conf))
+ val broker = new Broker()
val store = new FileConfigStore
- store.file = conf
+
ConfigStore() = store
+ store.file = conf
+ store.on_update = { config =>
+ broker.dispatch_queue {
+ broker.console_log.info("Reloading configuration file '%s'.".format(conf))
+ broker.update(config, ^{
+ broker.console_log.info("Reload completed.")
+ })
+ }
+ }
store.start
- val broker = new Broker()
broker.config = store.load(true)
broker.tmp = tmp
broker.start()
Modified: activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStore.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStore.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStore.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-hawtdb/src/main/scala/org/apache/activemq/apollo/broker/store/hawtdb/HawtDBStore.scala Fri Jun 10 20:51:31 2011
@@ -16,36 +16,21 @@
*/
package org.apache.activemq.apollo.broker.store.hawtdb
-import collection.mutable.ListBuffer
import dto.{HawtDBStoreStatusDTO, HawtDBStoreDTO}
-import java.util.HashMap
-import collection.{Seq}
+import collection.Seq
import org.fusesource.hawtdispatch._
-import java.io.File
import java.util.concurrent._
import atomic.{AtomicInteger, AtomicLong}
import org.apache.activemq.apollo.dto._
import org.apache.activemq.apollo.broker.store._
import org.apache.activemq.apollo.util._
-import ReporterLevel._
-import org.fusesource.hawtdispatch.{DispatchQueue, BaseRetained, ListEventAggregator}
+import org.fusesource.hawtdispatch.ListEventAggregator
import org.apache.activemq.apollo.util.OptionSupport._
import java.io.{InputStream, OutputStream}
import scala.util.continuations._
object HawtDBStore extends Log {
val DATABASE_LOCKED_WAIT_DELAY = 10 * 1000;
-
- /**
- * Validates a configuration object.
- */
- def validate(config: HawtDBStoreDTO, reporter:Reporter):ReporterLevel = {
- new Reporting(reporter) {
- if( config.directory==null ) {
- error("The HawtDB Store directory property must be configured.")
- }
- }.result
- }
}
/**
@@ -53,8 +38,6 @@ object HawtDBStore extends Log {
*/
class HawtDBStore(var config:HawtDBStoreDTO) extends DelayingStoreSupport {
- import HawtDBStore._
-
var next_queue_key = new AtomicLong(1)
var next_msg_key = new AtomicLong(1)
@@ -81,19 +64,6 @@ class HawtDBStore(var config:HawtDBStore
}
}
- def configure(config: StoreDTO, reporter: Reporter) = configure(config.asInstanceOf[HawtDBStoreDTO], reporter)
-
- def configure(config: HawtDBStoreDTO, reporter: Reporter) = {
- if ( HawtDBStore.validate(config, reporter) < ERROR ) {
- if( service_state.is_started ) {
- // TODO: apply changes while he broker is running.
- reporter.report(WARN, "Updating hawtdb store configuration at runtime is not yet supported. You must restart the broker for the change to take effect.")
- } else {
- this.config = config
- }
- }
- }
-
protected def _start(on_completed: Runnable) = {
executor_pool = Executors.newFixedThreadPool(1, new ThreadFactory(){
def newThread(r: Runnable) = {
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -20,7 +20,6 @@ import dto.HawtDBStoreDTO
import org.apache.activemq.apollo.broker.store.StoreFactory
import org.apache.activemq.apollo.dto.StoreDTO
import org.apache.activemq.apollo.util._
-import ReporterLevel._
/**
* <p>
@@ -36,21 +35,9 @@ import ReporterLevel._
*/
class HawtDBStoreFactory extends StoreFactory.Provider {
- def create(config: StoreDTO) = {
- config match {
- case config:HawtDBStoreDTO =>
- new HawtDBStore(config)
- case _ =>
- null
- }
+ def create(config: StoreDTO) = config match {
+ case config:HawtDBStoreDTO => new HawtDBStore(config)
+ case _ => null
}
- def validate(config: StoreDTO, reporter:Reporter):ReporterLevel = {
- config match {
- case config:HawtDBStoreDTO =>
- HawtDBStore.validate(config, reporter)
- case _ =>
- null
- }
- }
}
Modified: activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/JDBM2Store.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/JDBM2Store.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/JDBM2Store.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-jdbm2/src/main/scala/org/apache/activemq/apollo/broker/store/jdbm2/JDBM2Store.scala Fri Jun 10 20:51:31 2011
@@ -20,13 +20,11 @@ import dto.{JDBM2StoreDTO, JDBM2StoreSta
import java.util.concurrent.atomic.AtomicLong
import collection.Seq
import org.fusesource.hawtdispatch._
-import java.io.File
import java.util.concurrent._
import org.apache.activemq.apollo.broker.store._
import org.apache.activemq.apollo.util._
-import ReporterLevel._
import org.fusesource.hawtdispatch.ListEventAggregator
-import org.apache.activemq.apollo.dto.{StoreStatusDTO, IntMetricDTO, TimeMetricDTO, StoreDTO}
+import org.apache.activemq.apollo.dto.StoreStatusDTO
import org.apache.activemq.apollo.util.OptionSupport._
import java.io.{InputStream, OutputStream}
import scala.util.continuations._
@@ -36,17 +34,6 @@ import scala.util.continuations._
*/
object JDBM2Store extends Log {
val DATABASE_LOCKED_WAIT_DELAY = 10 * 1000;
-
- /**
- * Validates a configuration object.
- */
- def validate(config: JDBM2StoreDTO, reporter:Reporter):ReporterLevel = {
- new Reporting(reporter) {
- if( config.directory==null ) {
- error("The jdbm2 store directory property must be configured.")
- }
- }.result
- }
}
/**
@@ -54,8 +41,6 @@ object JDBM2Store extends Log {
*/
class JDBM2Store(var config:JDBM2StoreDTO) extends DelayingStoreSupport {
- import JDBM2Store._
-
var next_queue_key = new AtomicLong(1)
var next_msg_key = new AtomicLong(1)
@@ -80,19 +65,6 @@ class JDBM2Store(var config:JDBM2StoreDT
}
}
- def configure(config: StoreDTO, reporter: Reporter) = configure(config.asInstanceOf[JDBM2StoreDTO], reporter)
-
- def configure(config: JDBM2StoreDTO, reporter: Reporter) = {
- if ( JDBM2Store.validate(config, reporter) < ERROR ) {
- if( service_state.is_started ) {
- // TODO: apply changes while he broker is running.
- reporter.report(WARN, "Updating jdbm2 store configuration at runtime is not yet supported. You must restart the broker for the change to take effect.")
- } else {
- this.config = config
- }
- }
- }
-
protected def _start(on_completed: Runnable) = {
executor = Executors.newFixedThreadPool(1, new ThreadFactory(){
def newThread(r: Runnable) = {
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=1134439&r1=1134438&r2=1134439&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 Fri Jun 10 20:51:31 2011
@@ -20,7 +20,6 @@ import dto.JDBM2StoreDTO
import org.apache.activemq.apollo.broker.store.StoreFactory
import org.apache.activemq.apollo.dto.StoreDTO
import org.apache.activemq.apollo.util._
-import ReporterLevel._
/**
* <p>
@@ -32,21 +31,11 @@ import ReporterLevel._
*/
class JDBM2StoreFactory extends StoreFactory.Provider {
- def create(config: StoreDTO) = {
- config match {
- case config:JDBM2StoreDTO =>
- new JDBM2Store(config)
- case _ =>
- null
- }
+ def create(config: StoreDTO) = config match {
+ case config:JDBM2StoreDTO =>
+ new JDBM2Store(config)
+ case _ =>
+ null
}
- def validate(config: StoreDTO, reporter:Reporter):ReporterLevel = {
- config match {
- case config:JDBM2StoreDTO =>
- JDBM2Store.validate(config, reporter)
- case _ =>
- null
- }
- }
}
Modified: activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/OpenwireProtocolHandler.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/OpenwireProtocolHandler.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/OpenwireProtocolHandler.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-openwire/src/main/scala/org/apache/activemq/apollo/openwire/OpenwireProtocolHandler.scala Fri Jun 10 20:51:31 2011
@@ -114,7 +114,7 @@ class OpenwireProtocolHandler extends Pr
override def create_connection_status = {
var rc = new OpenwireConnectionStatusDTO
- rc.protocol_version = if (wire_format == null) null else wire_format.getVersion.toString
+ rc.protocol_version = ""+(if (wire_format == null) 0 else wire_format.getVersion)
rc.user = login.map(_.toString).getOrElse(null)
// rc.subscription_count = consumers.size
rc.waiting_on = waiting_on
Modified: activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/StompTest.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/StompTest.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/StompTest.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-stomp/src/test/scala/org/apache/activemq/apollo/stomp/StompTest.scala Fri Jun 10 20:51:31 2011
@@ -22,6 +22,7 @@ import java.lang.String
import org.apache.activemq.apollo.broker.{KeyStorage, Broker, BrokerFactory}
import org.apache.activemq.apollo.util.{FileSupport, Logging, FunSuiteSupport, ServiceControl}
import FileSupport._
+import org.apache.activemq.apollo.dto.KeyStorageDTO
class StompTestSupport extends FunSuiteSupport with ShouldMatchers with BeforeAndAfterEach with Logging {
var broker: Broker = null
@@ -977,10 +978,12 @@ class StompUnifiedQueueTest extends Stom
class StompSslDestinationTest extends StompDestinationTest {
override val broker_config_uri: String = "xml:classpath:apollo-stomp-ssl.xml"
- client.key_storeage = new KeyStorage
- client.key_storeage.config.file = basedir/"src"/"test"/"resources"/"client.ks"
- client.key_storeage.config.password = "password"
- client.key_storeage.config.key_password = "password"
+ val config = new KeyStorageDTO
+ config.file = basedir/"src"/"test"/"resources"/"client.ks"
+ config.password = "password"
+ config.key_password = "password"
+
+ client.key_storeage = new KeyStorage(config)
}
@@ -1445,10 +1448,11 @@ class StompSslSecurityTest extends Stomp
}
def use_client_cert = {
- client.key_storeage = new KeyStorage
- client.key_storeage.config.file = basedir/"src"/"test"/"resources"/"client.ks"
- client.key_storeage.config.password = "password"
- client.key_storeage.config.key_password = "password"
+ val config = new KeyStorageDTO
+ config.file = basedir/"src"/"test"/"resources"/"client.ks"
+ config.password = "password"
+ config.key_password = "password"
+ client.key_storeage = new KeyStorage(config)
}
test("Connect with cert and no id password") {
Modified: activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/BaseService.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/BaseService.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/BaseService.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/BaseService.scala Fri Jun 10 20:51:31 2011
@@ -40,6 +40,9 @@ trait BaseService extends Service with D
def is_created = false
def is_starting = false
def is_started = false
+
+ def is_starting_or_started = is_starting | is_started
+
def is_stopping = false
def is_stopped= false
def is_failed= false
Copied: activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/CollectionsSupport.scala (from r1134421, activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/LoggingTracker.scala)
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/CollectionsSupport.scala?p2=activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/CollectionsSupport.scala&p1=activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/LoggingTracker.scala&r1=1134421&r2=1134439&rev=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/LoggingTracker.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/CollectionsSupport.scala Fri Jun 10 20:51:31 2011
@@ -16,34 +16,18 @@
*/
package org.apache.activemq.apollo.util
-import org.fusesource.hawtdispatch._
-import org.fusesource.hawtdispatch.{TaskTracker, DispatchQueue}
-
/**
* <p>
- * A TaskTracker which logs an informational message if that tasks don't complete
- * within the timeout.
* </p>
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
-class LoggingTracker(name:String, val log:Log=Log(classOf[LoggingTracker]), parent:DispatchQueue=globalQueue) extends TaskTracker(name, parent) {
- assert(log!=null)
- import log._
-
- timeout = 1000;
-
- override protected def onTimeout(duration:Long, tasks: List[String]):Long = {
- info("%s is taking a long time (%d seconds). Waiting on %s", name, (duration/1000), tasks.mkString(", "))
- timeout
- }
+object CollectionsSupport {
- def start(service:Service) = {
- service.start(task(service.toString))
+ def diff[T](prev:Set[T], next:Set[T]):(Set[T],Set[T],Set[T]) = {
+ val updating = prev.intersect(next)
+ val adding = next -- updating
+ val removing = prev -- next
+ (adding, updating, removing)
}
-
- def stop(service:Service) = {
- service.stop(task(service.toString))
- }
-
-}
+}
\ No newline at end of file
Modified: activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/Logging.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/Logging.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/Logging.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/Logging.scala Fri Jun 10 20:51:31 2011
@@ -16,12 +16,10 @@
*/
package org.apache.activemq.apollo.util
-import _root_.java.util.{LinkedHashMap, HashMap}
-import _root_.java.lang.{Throwable, String}
-import org.slf4j.{MDC, Logger, LoggerFactory}
-
-
import java.util.concurrent.atomic.AtomicLong
+import org.slf4j.{Marker, MDC, Logger, LoggerFactory}
+import java.lang.{UnsupportedOperationException, Throwable, String}
+import collection.mutable.ListBuffer
/**
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
@@ -34,6 +32,10 @@ object Log {
override val log = LoggerFactory.getLogger(name)
}
+ def apply(value:Logger):Log = new Log {
+ override val log = value
+ }
+
val exception_id_generator = new AtomicLong(System.currentTimeMillis)
def next_exception_id = exception_id_generator.incrementAndGet.toHexString
}
@@ -205,3 +207,84 @@ trait Logging {
protected def trace(e: Throwable)= log.trace(e)
}
+
+case class LogEntry(level:String, message:String, ts:Long=System.currentTimeMillis())
+class MemoryLogger(val next:Logger) extends Logger {
+
+ var messages = ListBuffer[LogEntry]()
+
+ def add(level:String, message:String) = {
+ messages.append(LogEntry(message, level))
+ while ( messages.size > 1000 ) {
+ message.drop(1)
+ }
+ next
+ }
+
+ def getName = next.getName
+
+ def isWarnEnabled(marker: Marker) = true
+ def isWarnEnabled = true
+ def warn(msg: String) = add("warn", msg).warn(msg)
+ def warn(msg: String, t: Throwable) = add("warn", msg).warn(msg, t)
+ def warn(marker: Marker, msg: String, t: Throwable) = throw new UnsupportedOperationException()
+ def warn(marker: Marker, msg: String) = throw new UnsupportedOperationException()
+ def warn(marker: Marker, format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def warn(marker: Marker, format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def warn(marker: Marker, format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+ def warn(format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def warn(format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def warn(format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+
+ def isTraceEnabled(marker: Marker) = true
+ def isTraceEnabled = true
+ def trace(msg: String) = add("trace", msg).trace(msg)
+ def trace(msg: String, t: Throwable) = add("trace", msg).trace(msg, t)
+ def trace(marker: Marker, msg: String, t: Throwable) = throw new UnsupportedOperationException()
+ def trace(marker: Marker, msg: String) = throw new UnsupportedOperationException()
+ def trace(marker: Marker, format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def trace(marker: Marker, format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def trace(marker: Marker, format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+ def trace(format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def trace(format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def trace(format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+
+ def isInfoEnabled(marker: Marker) = true
+ def isInfoEnabled = true
+ def info(msg: String) = add("info", msg).info(msg)
+ def info(msg: String, t: Throwable) = add("info", msg).info(msg, t)
+ def info(marker: Marker, msg: String, t: Throwable) = throw new UnsupportedOperationException()
+ def info(marker: Marker, msg: String) = throw new UnsupportedOperationException()
+ def info(marker: Marker, format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def info(marker: Marker, format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def info(marker: Marker, format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+ def info(format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def info(format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def info(format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+
+ def isErrorEnabled(marker: Marker) = true
+ def isErrorEnabled = true
+ def error(msg: String) = add("error", msg).error(msg)
+ def error(msg: String, t: Throwable) = add("error", msg).error(msg, t)
+ def error(marker: Marker, msg: String, t: Throwable) = throw new UnsupportedOperationException()
+ def error(marker: Marker, msg: String) = throw new UnsupportedOperationException()
+ def error(marker: Marker, format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def error(marker: Marker, format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def error(marker: Marker, format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+ def error(format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def error(format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def error(format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+
+ def isDebugEnabled(marker: Marker) = true
+ def isDebugEnabled = true
+ def debug(msg: String) = add("debug", msg).debug(msg)
+ def debug(msg: String, t: Throwable) = add("debug", msg).debug(msg, t)
+ def debug(marker: Marker, msg: String, t: Throwable) = throw new UnsupportedOperationException()
+ def debug(marker: Marker, msg: String) = throw new UnsupportedOperationException()
+ def debug(marker: Marker, format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def debug(marker: Marker, format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def debug(marker: Marker, format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+ def debug(format: String, argArray: Array[AnyRef]) = throw new UnsupportedOperationException()
+ def debug(format: String, arg: AnyRef) = throw new UnsupportedOperationException()
+ def debug(format: String, arg1: AnyRef, arg2: AnyRef) = throw new UnsupportedOperationException()
+}
Modified: activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/LoggingTracker.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/LoggingTracker.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/LoggingTracker.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-util/src/main/scala/org/apache/activemq/apollo/util/LoggingTracker.scala Fri Jun 10 20:51:31 2011
@@ -39,11 +39,11 @@ class LoggingTracker(name:String, val lo
}
def start(service:Service) = {
- service.start(task(service.toString))
+ service.start(task("start "+service))
}
def stop(service:Service) = {
- service.stop(task(service.toString))
+ service.stop(task("stop "+service))
}
}
Modified: activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/ApolloListener.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/ApolloListener.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/ApolloListener.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/ApolloListener.scala Fri Jun 10 20:51:31 2011
@@ -45,7 +45,7 @@ class ApolloListener extends ServletCont
// Only start the broker up if it's enabled..
info("starting broker");
broker = new Broker()
- broker.configure(config, LoggingReporter(ApolloListener))
+ broker.config = config
broker.start()
}
} catch {
Modified: activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/osgi/OsgiWebServerFactory.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/osgi/OsgiWebServerFactory.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/osgi/OsgiWebServerFactory.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/osgi/OsgiWebServerFactory.scala Fri Jun 10 20:51:31 2011
@@ -17,8 +17,6 @@
package org.apache.activemq.apollo.web.osgi
import org.apache.activemq.apollo.broker.web.{WebServerFactory, WebServer}
-import org.apache.activemq.apollo.util.{Reporter, ReporterLevel}
-import org.apache.activemq.apollo.dto.WebAdminDTO
import org.apache.activemq.apollo.broker.Broker
import org.apache.activemq.apollo.broker.osgi.BrokerService
@@ -33,31 +31,28 @@ class OsgiWebServerFactory extends WebS
// So that the factory class does not load, if we cannot load OSGi
private val broker_service = BrokerService
- def create(broker:Broker): WebServer = new WebServer {
-
- def start: Unit = {
- // TODO: see if we can poke around and get the endpoint address
- // of our deployment to pax web
- }
-
- def stop: Unit = {
- }
-
- def start(onComplete: Runnable): Unit = {
- start
- onComplete.run
- }
- def stop(onComplete: Runnable): Unit = {
- stop
- onComplete.run
- }
+ def create(broker:Broker): WebServer = if( broker_service.context == null ) {
+ return null
+ } else {
+ new WebServer {
- }
+ def start: Unit = {
+ // TODO: see if we can poke around and get the endpoint address
+ // of our deployment to pax web
+ }
+
+ def stop: Unit = {
+ }
+
+ def start(onComplete: Runnable): Unit = {
+ start
+ onComplete.run
+ }
+ def stop(onComplete: Runnable): Unit = {
+ stop
+ onComplete.run
+ }
- def validate(config: List[WebAdminDTO], reporter: Reporter): ReporterLevel.ReporterLevel = {
- if( broker_service.context == null ) {
- return null
}
- return ReporterLevel.INFO
}
}
\ No newline at end of file
Modified: activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/BrokerResource.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/BrokerResource.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/BrokerResource.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/BrokerResource.scala Fri Jun 10 20:51:31 2011
@@ -71,7 +71,7 @@ case class BrokerResource() extends Reso
result.virtual_hosts.add( host.id )
}
- broker.connectors.foreach{ c=>
+ broker.connectors.values.foreach{ c=>
result.connectors.add( c.id )
}
@@ -477,7 +477,7 @@ case class BrokerResource() extends Reso
with_broker { broker =>
monitoring(broker) {
- val records = broker.connectors.map { value =>
+ val records = broker.connectors.values.map { value =>
Success(status(value))
}
FutureResult(narrow(classOf[ConnectorStatusDTO], records, f, q, p, ps))
Modified: activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/Support.scala
URL: http://svn.apache.org/viewvc/activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/Support.scala?rev=1134439&r1=1134438&r2=1134439&view=diff
==============================================================================
--- activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/Support.scala (original)
+++ activemq/activemq-apollo/trunk/apollo-web/src/main/scala/org/apache/activemq/apollo/web/resources/Support.scala Fri Jun 10 20:51:31 2011
@@ -291,7 +291,7 @@ abstract class Resource(parent:Resource=
protected def with_connector[T](id:String)(func: (org.apache.activemq.apollo.broker.Connector)=>FutureResult[T]):FutureResult[T] = {
with_broker { broker =>
- broker.connectors.find(_.id == id) match {
+ broker.connectors.get(id) match {
case Some(connector)=>
func(connector)
case None=> result(NOT_FOUND)