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 05:56:10 UTC

svn commit: r961101 - in /activemq/sandbox/activemq-apollo-actor: ./ activemq-broker/ activemq-broker/src/main/resources/ activemq-broker/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/ activemq-broker/src/main/scala/org/apache/...

Author: chirino
Date: Wed Jul  7 03:56:09 2010
New Revision: 961101

URL: http://svn.apache.org/viewvc?rev=961101&view=rev
Log:
refactored the jaxb beans to be pure DTOs.  This way they can reused by clients, broker config stuff, web app bits etc. also added in json serialization support.

Added:
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/xml
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/jaxb
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/non-persistent-activemq.xml
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/non-persistent-activemq.xml
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/persistent-activemq.xml
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/persistent-activemq.xml
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/PropertiesReader.java
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/PropertiesReader.java
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/XmlBrokerFactory.scala
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/FunSuiteSupport.scala
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/FunSuiteSupport.scala
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/XMLBrokerFactoryTest.scala
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/testSimpleConfig.xml
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/org/apache/activemq/apollo/jaxb/testSimpleConfig.xml
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/testUris.xml
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/org/apache/activemq/apollo/jaxb/testUris.xml
    activemq/sandbox/activemq-apollo-actor/activemq-dto/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/pom.xml
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/pom.xml
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/apache/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/apache/activemq/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/apache/activemq/apollo/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/apache/activemq/apollo/dto/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/apache/activemq/apollo/dto/jaxb.index
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/org/apache/activemq/apollo/jaxb/jaxb.index
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/BrokerDTO.java
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/BrokerConfig.java
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/ConnectorDTO.java
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/VirtualHostConfig.java
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/HawtDBStoreDTO.java
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/KahaDBStoreConfig.java
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/MemoryStoreDTO.java
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/MemoryStoreConfig.java
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/StoreDTO.java
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/StoreXml.java
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/VirtualHostDTO.java
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/VirtualHostConfig.java
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/package-info.java
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/package-info.java
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/ide-resources/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/ide-resources/log4j.properties
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/ide-resources/log4j.properties
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/resources/
    activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/resources/log4j.properties
      - copied, changed from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/log4j.properties
Removed:
    activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/FunSuiteSupport.scala
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/pom.xml
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/jaxb
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/non-persistent-activemq.xml
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/org/apache/activemq/apollo/jaxb/jaxb.index
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/persistent-activemq.xml
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/AsciiBufferAdapter.java
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/BrokerConfig.java
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/KahaDBStoreConfig.java
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/MemoryStoreConfig.java
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/PropertiesReader.java
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/StoreXml.java
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/VirtualHostConfig.java
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/XmlBrokerFactory.scala
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/package-info.java
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/ide-resources/log4j.properties
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/log4j.properties
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/org/apache/activemq/apollo/jaxb/testSimpleConfig.xml
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/org/apache/activemq/apollo/jaxb/testUris.xml
    activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/scala/org/apache/activemq/apollo/jaxb/JAXBConfigTest.java
Modified:
    activemq/sandbox/activemq-apollo-actor/activemq-broker/pom.xml
    activemq/sandbox/activemq-apollo-actor/activemq-stomp/pom.xml
    activemq/sandbox/activemq-apollo-actor/activemq-web/pom.xml
    activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/ConfigStore.scala
    activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/web/resources/Root.scala
    activemq/sandbox/activemq-apollo-actor/activemq-web/src/test/scala/org/apache/activemq/apollo/FileConfigStoreTest.scala
    activemq/sandbox/activemq-apollo-actor/pom.xml

Modified: activemq/sandbox/activemq-apollo-actor/activemq-broker/pom.xml
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/pom.xml?rev=961101&r1=961100&r2=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-broker/pom.xml (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/pom.xml Wed Jul  7 03:56:09 2010
@@ -53,6 +53,11 @@
       <artifactId>activemq-hawtdb</artifactId>
       <version>6.0-SNAPSHOT</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.activemq</groupId>
+      <artifactId>activemq-dto</artifactId>
+      <version>6.0-SNAPSHOT</version>
+    </dependency>
 
 
     <dependency>

Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/xml (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/jaxb)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/xml?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/xml&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/jaxb&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/jaxb (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/META-INF/services/org/apache/activemq/apollo/broker/xml Wed Jul  7 03:56:09 2010
@@ -14,4 +14,4 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
-class=org.apache.activemq.apollo.jaxb.JAXBBrokerFactory
\ No newline at end of file
+class=org.apache.activemq.apollo.jaxb.XmlBrokerFactory
\ No newline at end of file

Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/non-persistent-activemq.xml (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/non-persistent-activemq.xml)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/non-persistent-activemq.xml?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/non-persistent-activemq.xml&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/non-persistent-activemq.xml&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
    (empty)

Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/persistent-activemq.xml (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/persistent-activemq.xml)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/persistent-activemq.xml?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/resources/persistent-activemq.xml&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/persistent-activemq.xml&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
    (empty)

Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/PropertiesReader.java (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/PropertiesReader.java)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/PropertiesReader.java?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/PropertiesReader.java&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/PropertiesReader.java&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/PropertiesReader.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/PropertiesReader.java Wed Jul  7 03:56:09 2010
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.activemq.apollo.jaxb;
+package org.apache.activemq.apollo.broker.jaxb;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;

Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/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?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/main/scala/org/apache/activemq/apollo/broker/jaxb/XmlBrokerFactory.scala&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/XmlBrokerFactory.scala&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/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 03:56:09 2010
@@ -19,21 +19,20 @@ package org.apache.activemq.apollo.jaxb
 import java.io.IOException
 import javax.xml.bind.JAXBContext
 import javax.xml.stream.XMLInputFactory
-import org.apache.activemq.apollo.broker.Broker
-import org.apache.activemq.apollo.broker.BrokerDatabase
-import org.apache.activemq.apollo.broker.BrokerFactory
-import org.apache.activemq.apollo.broker.VirtualHost
-import org.apache.activemq.transport.TransportFactory
 import org.apache.activemq.util.URISupport
 import java.net.{URL, URI}
 import collection.JavaConversions._
+import org.apache.activemq.apollo.broker._
+import jaxb.PropertiesReader
+import org.apache.activemq.apollo.dto._
+import org.apache.activemq.transport.TransportFactory
 
 class XmlBrokerFactory extends BrokerFactory.Handler {
   
   def createBroker(value: String): Broker = {
     try {
       var brokerURI = new URI(value)
-      val context = JAXBContext.newInstance("org.apache.activemq.apollo.jaxb")
+      val context = JAXBContext.newInstance("org.apache.activemq.apollo.dto")
       val unmarshaller = context.createUnmarshaller()
 
       var configURL: URL = null
@@ -53,7 +52,7 @@ class XmlBrokerFactory extends BrokerFac
       val factory = XMLInputFactory.newInstance()
       val reader = factory.createXMLStreamReader(configURL.openStream())
       val properties = new PropertiesReader(reader)
-      val xml = unmarshaller.unmarshal(properties).asInstanceOf[BrokerConfig]
+      val xml = unmarshaller.unmarshal(properties).asInstanceOf[BrokerDTO]
       return createMessageBroker(xml)
     } catch {
       case e: Exception =>
@@ -61,31 +60,31 @@ class XmlBrokerFactory extends BrokerFac
     }
   }
 
-  def createMessageBroker(brokerConfig: BrokerConfig): Broker = {
+  def createMessageBroker(brokerModel: BrokerDTO): Broker = {
     val rc = new Broker()
-    for (virtualHostConfig <- brokerConfig.virtualHosts) {
-      rc.addVirtualHost(createVirtualHost(virtualHostConfig))
+    for (virtualHostModel <- brokerModel.virtualHosts) {
+      rc.addVirtualHost(createVirtualHost(virtualHostModel))
     }
-    for (element <- brokerConfig.transportServers) {
+    for (connector <- brokerModel.connectors) {
       try {
-        val server = TransportFactory.bind(element)
+        val server = TransportFactory.bind(connector.transport)
         rc.transportServers.add(server)
       } catch {
         case e:Exception=>
-          throw new Exception("Unable to bind transport server '" + element + " due to: " + e.getMessage(), e)
+          throw new Exception("Unable to bind transport server '" + connector + " due to: " + e.getMessage(), e)
       }
     }
-    for (element <- brokerConfig.connectUris) {
-      rc.connectUris.add(element)
+    for (connector <- brokerModel.connectors) {
+      rc.connectUris.add(connector.advertise)
     }
     return rc
   }
 
 
-  def createVirtualHost(virtualHostConfig: VirtualHostConfig): VirtualHost = {
+  def createVirtualHost(virtualHostModel: VirtualHostDTO): VirtualHost = {
     val rc = new VirtualHost()
-    rc.setNamesArray(virtualHostConfig.hostNames)
-    if (virtualHostConfig.store != null) {
+    rc.setNamesArray(virtualHostModel.hostNames)
+    if (virtualHostModel.store != null) {
       val database = new BrokerDatabase()
       database.setVirtualHost(rc)
 //      TODO:

Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/FunSuiteSupport.scala (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/FunSuiteSupport.scala)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/FunSuiteSupport.scala?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/FunSuiteSupport.scala&p1=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/FunSuiteSupport.scala&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/perf/FunSuiteSupport.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/FunSuiteSupport.scala Wed Jul  7 03:56:09 2010
@@ -1,11 +1,11 @@
-package org.apache.activemq.apollo.broker.perf
+package org.apache.activemq.apollo.broker
+
 
 import _root_.org.junit.runner.RunWith
 import org.scalatest.junit.JUnitRunner
 import java.io.File
 import java.lang.String
 import collection.immutable.Map
-import org.apache.activemq.apollo.broker.Logging
 import org.scalatest._
 
 /**

Added: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/XMLBrokerFactoryTest.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/XMLBrokerFactoryTest.scala?rev=961101&view=auto
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/XMLBrokerFactoryTest.scala (added)
+++ activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/XMLBrokerFactoryTest.scala Wed Jul  7 03:56:09 2010
@@ -0,0 +1,93 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.apollo.broker.jaxb
+
+import java.util.ArrayList
+import org.apache.activemq.apollo.broker.{FunSuiteSupport, BrokerFactory}
+
+/**
+ * <p>
+ * </p>
+ *
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
+class XMLBrokerFactoryTest extends FunSuiteSupport {
+  test("Simple Config") {
+    val uri = "xml:classpath:org/apache/activemq/apollo/jaxb/testSimpleConfig.xml"
+    info("Loading broker configuration from the classpath with URI: " + uri)
+    val broker = BrokerFactory.createBroker(uri, false)
+
+    //		assertEquals(4, p.getSize())
+    //		assertEquals("test dispatcher", p.getName())
+
+    expect(1) {
+      broker.transportServers.size()
+    }
+    val expected = new ArrayList[String]()
+    expected.add("pipe://test1")
+    expected.add("tcp://127.0.0.1:61616")
+
+    expect(expected) {
+      broker.connectUris
+    }
+
+    expect(2) {
+      broker.virtualHosts.size()
+    }
+
+    //		Assert.assertNotNull(broker.defaultVirtualHost().getDatabase())
+    //		Assert.assertNotNull(broker.defaultVirtualHost().getDatabase().getStore())
+    //		Assert.assertTrue((broker.defaultVirtualHost().getDatabase().getStore() instanceof MemoryStore))
+
+  }
+
+  def expectException(msg: String = "Expected exeception.")(func: => Unit) = {
+    try {
+      func
+      fail(msg)
+    } catch {
+      case e: Exception =>
+    }
+  }
+
+  test("Uris") {
+
+    // non-existent classpath
+
+    expectException("Creating broker from non-existing url does not throw an exception!") {
+      val uri = "xml:classpath:org/apache/activemq/apollo/jaxb/testUris-fail.xml"
+      BrokerFactory.createBroker(uri, false)
+    }
+
+    //non-existent file
+    expectException("Creating broker from non-existing url does not throw an exception!") {
+      val uri = "xml:file:/org/apache/activemq/apollo/jaxb/testUris-fail.xml"
+      BrokerFactory.createBroker(uri, false)
+    }
+
+    //non-existent url
+    expectException("Creating broker from non-existing url does not throw an exception!") {
+      val uri = "xml:http://localhost/testUris.xml"
+      BrokerFactory.createBroker(uri, false)
+    }
+
+    // regular file
+    val uri = "xml:" + Thread.currentThread().getContextClassLoader().getResource("org/apache/activemq/apollo/broker/jaxb/testUris.xml")
+    BrokerFactory.createBroker(uri, false)
+  }
+
+}

Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/testSimpleConfig.xml (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/org/apache/activemq/apollo/jaxb/testSimpleConfig.xml)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/testSimpleConfig.xml?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/testSimpleConfig.xml&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/org/apache/activemq/apollo/jaxb/testSimpleConfig.xml&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
    (empty)

Copied: activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/testUris.xml (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/org/apache/activemq/apollo/jaxb/testUris.xml)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/testUris.xml?p2=activemq/sandbox/activemq-apollo-actor/activemq-broker/src/test/scala/org/apache/activemq/apollo/broker/jaxb/testUris.xml&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/org/apache/activemq/apollo/jaxb/testUris.xml&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
    (empty)

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/pom.xml (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/pom.xml)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/pom.xml?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/pom.xml&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/pom.xml&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/pom.xml (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dto/pom.xml Wed Jul  7 03:56:09 2010
@@ -25,11 +25,11 @@
   </parent>
 
   <groupId>org.apache.activemq</groupId>
-  <artifactId>activemq-jaxb</artifactId>
+  <artifactId>activemq-dto</artifactId>
   <packaging>jar</packaging>
   <version>6.0-SNAPSHOT</version>
 
-  <name>ActiveMQ :: JAXB</name>
+  <name>ActiveMQ :: Data Transfer Objects</name>
   
   <pluginRepositories>
   	<!-- For the schemagen plugin -->
@@ -51,21 +51,9 @@
   <dependencies>
   
     <dependency>
-      <groupId>org.apache.activemq</groupId>
-      <artifactId>activemq-broker</artifactId>
-      <version>6.0-SNAPSHOT</version>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-context</artifactId>
-      <version>${spring-version}</version>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.codehaus.woodstox</groupId>
-      <artifactId>wstx-asl</artifactId>
-      <version>4.0.0</version>
+      <groupId>org.codehaus.jackson</groupId>
+      <artifactId>jackson-core-asl</artifactId>
+      <version>${jackson-version}</version>
     </dependency>
 
     <!-- Scala Support -->

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/apache/activemq/apollo/dto/jaxb.index (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/org/apache/activemq/apollo/jaxb/jaxb.index)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/apache/activemq/apollo/dto/jaxb.index?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/apache/activemq/apollo/dto/jaxb.index&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/org/apache/activemq/apollo/jaxb/jaxb.index&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/resources/org/apache/activemq/apollo/jaxb/jaxb.index (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/resources/org/apache/activemq/apollo/dto/jaxb.index Wed Jul  7 03:56:09 2010
@@ -14,6 +14,6 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## ------------------------------------------------------------------------
-BrokerConfig
-KahaDBStoreConfig
-MemoryStoreConfig
+BrokerDTO
+HawtDBStoreDTO
+MemoryStoreDTO

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/BrokerDTO.java (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/BrokerConfig.java)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/BrokerDTO.java?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/BrokerDTO.java&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/BrokerConfig.java&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/BrokerConfig.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/BrokerDTO.java Wed Jul  7 03:56:09 2010
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.activemq.apollo.jaxb;
+package org.apache.activemq.apollo.dto;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -25,10 +25,16 @@ import javax.xml.bind.annotation.XmlAttr
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 
+/**
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
 @XmlRootElement(name="broker")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class BrokerConfig {
-	
+public class BrokerDTO {
+
+    /**
+     * A unique id of the broker.
+     */
 	@XmlAttribute(name="id")
 	public String id;
 
@@ -38,41 +44,29 @@ public class BrokerConfig {
     @XmlAttribute(name="rev")
     public int rev;
 
+    /**
+     * Used to track who last modified the configuration.
+     */
+    @XmlAttribute(name="modified-by")
+    public String modifiedBy;
+
+    /**
+     * Used to store any configuration notes.
+     */
+    @XmlElement
+    public String notes;
+
+    /**
+     * A broker can service many virtual hosts.
+     */
     @XmlElement(name="virtual-host")
-    public List<VirtualHostConfig> virtualHosts = new ArrayList<VirtualHostConfig>();
-    @XmlElement(name="transport-server")
-    public List<String> transportServers = new ArrayList<String>();
-    @XmlElement(name="connect-uri")
-    public List<String> connectUris = new ArrayList<String>();
-
-
-	public List<VirtualHostConfig> getVirtualHosts() {
-		return virtualHosts;
-	}
-	public void setVirtualHosts(List<VirtualHostConfig> virtualHosts) {
-		this.virtualHosts = virtualHosts;
-	}
-
-	public List<String> getTransportServers() {
-		return transportServers;
-	}
-	public void setTransportServers(List<String> transportServers) {
-		this.transportServers = transportServers;
-	}
-
-
-	public List<String> getConnectUris() {
-		return connectUris;
-	}
-	public void setConnectUris(List<String> connectUris) {
-		this.connectUris = connectUris;
-	}
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
+    public List<VirtualHostDTO> virtualHosts = new ArrayList<VirtualHostDTO>();
+
+    /**
+     * A broker accepts connections via it's configured connectors.
+     */
+    @XmlElement(name="connectors")
+    public List<ConnectorDTO> connectors = new ArrayList<ConnectorDTO>();
+
+
 }

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/ConnectorDTO.java (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/VirtualHostConfig.java)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/ConnectorDTO.java?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/ConnectorDTO.java&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/VirtualHostConfig.java&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/VirtualHostConfig.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/ConnectorDTO.java Wed Jul  7 03:56:09 2010
@@ -14,29 +14,42 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.activemq.apollo.jaxb;
+package org.apache.activemq.apollo.dto;
 
-import java.util.ArrayList;
+import javax.xml.bind.annotation.*;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementRef;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.activemq.apollo.broker.BrokerDatabase;
-import org.apache.activemq.apollo.broker.VirtualHost;
-
-@XmlRootElement(name = "virtual-host")
+/**
+ *
+ * 
+ *
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
+@XmlRootElement(name = "connector")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class VirtualHostConfig {
-	
-    @XmlElement(name="host-name", required=true)
-    public ArrayList<String> hostNames = new ArrayList<String>();
+public class ConnectorDTO {
 
-    @XmlElementRef   
-    public StoreXml store;
+    /**
+     * A unique id.
+     */
+	@XmlAttribute(name="id")
+	public String id;
+
+    /**
+     * The transport uri which it will accept connections on.
+     */
+    @XmlAttribute
+    public String transport;
+
+    /**
+     * The protocol that the transport will use.
+     */
+    @XmlAttribute
+    public String protocol;
+
+    /**
+     * The uri which will be advertised for remote endpoints to connect to.
+     */
+    @XmlAttribute
+    public String advertise;
     
-
-
-}
+}
\ No newline at end of file

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/HawtDBStoreDTO.java (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/KahaDBStoreConfig.java)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/HawtDBStoreDTO.java?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/HawtDBStoreDTO.java&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/KahaDBStoreConfig.java&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/KahaDBStoreConfig.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/HawtDBStoreDTO.java Wed Jul  7 03:56:09 2010
@@ -14,62 +14,39 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.activemq.apollo.jaxb;
-
-import java.io.File;
+package org.apache.activemq.apollo.dto;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
+import java.io.File;
 
-import org.apache.activemq.broker.store.Store;
-import org.apache.activemq.broker.store.hawtdb.HawtDBStore;
-
-@XmlRootElement(name="kahadb-store")
+/**
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
+@XmlRootElement(name="hawtdb-store")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class KahaDBStoreConfig extends StoreXml {
+public class HawtDBStoreDTO extends StoreDTO {
 
 	@XmlAttribute(name="checkpoint-interval", required=false)
-	private Long checkpointInterval;
+	public Long checkpointInterval;
 	@XmlAttribute(name="cleanup-interval", required=false)
-	private Long cleanupInterval;
+	public Long cleanupInterval;
 	@XmlAttribute(name="purge-on-startup", required=false)
-	private Boolean purgeOnStartup;
+	public Boolean purgeOnStartup;
 	@XmlAttribute(name="index-write-async", required=false)
-	private Boolean indexWriteAsync;
+	public Boolean indexWriteAsync;
 	@XmlAttribute(name="journal-disk-syncs", required=false)
-	private Boolean journalDiskSyncs;
+	public Boolean journalDiskSyncs;
 	@XmlAttribute(name="fail-if-database-is-locked", required=false)
-	private Boolean failIfDatabaseIsLocked;
+	public Boolean failIfDatabaseIsLocked;
 	@XmlAttribute(name="index-write-batch-size", required=false)
-	private Integer indexWriteBatchSize;
+	public Integer indexWriteBatchSize;
 	@XmlAttribute(name="journal-max-file-length", required=false)
-	private Integer journalMaxFileLength;
+	public Integer journalMaxFileLength;
 	@XmlAttribute(name="directory", required=false)
-	private File directory;
+	public File directory;
 
-	public Store createStore() {
-		HawtDBStore rc = new HawtDBStore();
-		if( checkpointInterval!=null )
-			rc.setCheckpointInterval(checkpointInterval);
-		if( cleanupInterval!=null )
-			rc.setCleanupInterval(cleanupInterval);
-		if( purgeOnStartup!=null )
-			rc.setDeleteAllMessages(purgeOnStartup);
-//		if( indexWriteAsync!=null )
-//			rc.setEnableIndexWriteAsync(indexWriteAsync);
-//		if( journalDiskSyncs!=null )
-//			rc.setEnableJournalDiskSyncs(journalDiskSyncs);
-		if( failIfDatabaseIsLocked!=null )
-			rc.setFailIfDatabaseIsLocked(failIfDatabaseIsLocked);
-//		if( indexWriteBatchSize!=null )
-//			rc.setIndexWriteBatchSize(indexWriteBatchSize);
-		if( journalMaxFileLength!=null )
-			rc.setJournalMaxFileLength(journalMaxFileLength);
-		if( directory!=null )
-			rc.setStoreDirectory(directory);
-		return rc;
-	}
 
 }

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/MemoryStoreDTO.java (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/MemoryStoreConfig.java)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/MemoryStoreDTO.java?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/MemoryStoreDTO.java&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/MemoryStoreConfig.java&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/MemoryStoreConfig.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/MemoryStoreDTO.java Wed Jul  7 03:56:09 2010
@@ -14,21 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.activemq.apollo.jaxb;
+package org.apache.activemq.apollo.dto;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.activemq.broker.store.Store;
-import org.apache.activemq.broker.store.memory.MemoryStore;
-
+/**
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
 @XmlRootElement(name="memory-store")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class MemoryStoreConfig extends StoreXml {
+public class MemoryStoreDTO extends StoreDTO {
 
-	public Store createStore() {
-		return new MemoryStore();
-	}
 
 }

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/StoreDTO.java (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/StoreXml.java)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/StoreDTO.java?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/StoreDTO.java&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/StoreXml.java&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/StoreXml.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/StoreDTO.java Wed Jul  7 03:56:09 2010
@@ -14,15 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.activemq.apollo.jaxb;
+package org.apache.activemq.apollo.dto;
 
-import javax.xml.bind.annotation.XmlType;
+import org.codehaus.jackson.annotate.JsonTypeInfo;
 
-import org.apache.activemq.broker.store.Store;
+import javax.xml.bind.annotation.XmlType;
 
-@XmlType(name = "storeType")
-public abstract class StoreXml {
+/**
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
+@XmlType(name = "store-type")
+@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")
+public abstract class StoreDTO {
 
-	abstract Store createStore();
 
 }

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/VirtualHostDTO.java (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/VirtualHostConfig.java)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/VirtualHostDTO.java?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/VirtualHostDTO.java&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/VirtualHostConfig.java&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/VirtualHostConfig.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/VirtualHostDTO.java Wed Jul  7 03:56:09 2010
@@ -14,28 +14,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.activemq.apollo.jaxb;
+package org.apache.activemq.apollo.dto;
 
 import java.util.ArrayList;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementRef;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.activemq.apollo.broker.BrokerDatabase;
-import org.apache.activemq.apollo.broker.VirtualHost;
+import javax.xml.bind.annotation.*;
 
+/**
+ * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
+ */
 @XmlRootElement(name = "virtual-host")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class VirtualHostConfig {
+public class VirtualHostDTO {
 	
-    @XmlElement(name="host-name", required=true)
+    /**
+     * A unique id of the virtual host.
+     */
+	@XmlAttribute(name="id")
+	public String id;
+
+    @XmlElement(name="host-names", required=true)
     public ArrayList<String> hostNames = new ArrayList<String>();
 
     @XmlElementRef   
-    public StoreXml store;
+    public StoreDTO store;
     
 
 

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/package-info.java (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/package-info.java)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/package-info.java?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/package-info.java&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/package-info.java&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/main/scala/org/apache/activemq/apollo/jaxb/package-info.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dto/src/main/scala/org/apache/activemq/apollo/dto/package-info.java Wed Jul  7 03:56:09 2010
@@ -20,6 +20,8 @@
  * <a href="http://activemq.apache.org/schema/activemq/apollo/xml-configuration.html">XML Configuration</a>
  * of the ActiveMQ Broker.
  */
-@javax.xml.bind.annotation.XmlSchema(namespace = "http://activemq.apache.org/schema/activemq/apollo", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
-package org.apache.activemq.apollo.jaxb;
+@javax.xml.bind.annotation.XmlSchema(
+        namespace = "http://activemq.apache.org/schema/activemq/apollo",
+        elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package org.apache.activemq.apollo.dto;
 

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/ide-resources/log4j.properties (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/ide-resources/log4j.properties)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/ide-resources/log4j.properties?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/ide-resources/log4j.properties&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/ide-resources/log4j.properties&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
    (empty)

Copied: activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/resources/log4j.properties (from r961100, activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/log4j.properties)
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/resources/log4j.properties?p2=activemq/sandbox/activemq-apollo-actor/activemq-dto/src/test/resources/log4j.properties&p1=activemq/sandbox/activemq-apollo-actor/activemq-jaxb/src/test/resources/log4j.properties&r1=961100&r2=961101&rev=961101&view=diff
==============================================================================
    (empty)

Modified: activemq/sandbox/activemq-apollo-actor/activemq-stomp/pom.xml
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-stomp/pom.xml?rev=961101&r1=961100&r2=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-stomp/pom.xml (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-stomp/pom.xml Wed Jul  7 03:56:09 2010
@@ -80,12 +80,6 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.activemq</groupId>
-      <artifactId>activemq-jaxb</artifactId>
-      <version>6.0-SNAPSHOT</version>
-      <scope>test</scope>
-    </dependency>
 
     <dependency>
       <groupId>junit</groupId>

Modified: activemq/sandbox/activemq-apollo-actor/activemq-web/pom.xml
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-web/pom.xml?rev=961101&r1=961100&r2=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-web/pom.xml (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-web/pom.xml Wed Jul  7 03:56:09 2010
@@ -32,11 +32,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.activemq</groupId>
-      <artifactId>activemq-jaxb</artifactId>
-      <version>6.0-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-stomp</artifactId>
       <version>6.0-SNAPSHOT</version>
     </dependency>
@@ -61,7 +56,12 @@
     <dependency>
       <groupId>org.codehaus.jackson</groupId>
       <artifactId>jackson-jaxrs</artifactId>
-      <version>1.3.2</version>
+      <version>${jackson-version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.jackson</groupId>
+      <artifactId>jackson-xc</artifactId>
+      <version>${jackson-version}</version>
     </dependency>
 
     <!-- Scala Support -->

Modified: activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/ConfigStore.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/ConfigStore.scala?rev=961101&r1=961100&r2=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/ConfigStore.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/ConfigStore.scala Wed Jul  7 03:56:09 2010
@@ -17,10 +17,11 @@
 package org.apache.activemq.apollo
 
 import broker._
-import jaxb.{VirtualHostConfig, PropertiesReader, BrokerConfig}
+import broker.jaxb.PropertiesReader
 import java.util.regex.Pattern
 import javax.xml.stream.{XMLOutputFactory, XMLInputFactory}
 import _root_.org.fusesource.hawtdispatch.ScalaDispatch._
+import dto.{ConnectorDTO, VirtualHostDTO, BrokerDTO}
 import org.apache.activemq.util.{Hasher, IOHelper}
 import java.util.concurrent.{TimeUnit, ExecutorService, Executors}
 import org.fusesource.hawtbuf.{ByteArrayInputStream, ByteArrayOutputStream}
@@ -37,13 +38,13 @@ import java.io.{OutputStreamWriter, File
  */
 trait ConfigStore extends Service {
 
-  def listBrokerConfigs(cb: (List[String]) => Unit):Unit
+  def listBrokerModels(cb: (List[String]) => Unit):Unit
 
-  def getBrokerConfig(id:String, cb: (Option[BrokerConfig]) => Unit):Unit
+  def getBrokerModel(id:String, cb: (Option[BrokerDTO]) => Unit):Unit
 
-  def putBrokerConfig(config:BrokerConfig, cb: (Boolean) => Unit):Unit
+  def putBrokerModel(config:BrokerDTO, cb: (Boolean) => Unit):Unit
 
-  def removeBrokerConfig(id:String, rev:Int, cb: (Boolean) => Unit):Unit
+  def removeBrokerModel(id:String, rev:Int, cb: (Boolean) => Unit):Unit
 
 }
 
@@ -58,22 +59,23 @@ trait ConfigStore extends Service {
 class FileConfigStore extends ConfigStore with BaseService with Logging {
   override protected def log: Log = FileConfigStore
 
-  object StoredBrokerConfig {
-    def apply(rev:Int, config:BrokerConfig) = {
+  object StoredBrokerModel {
+    def apply(config:BrokerDTO) = {
       val data = marshall(config)
-      new StoredBrokerConfig(config.id, rev, data, Hasher.JENKINS.hash(data, data.length))
+      new StoredBrokerModel(config.id, config.rev, data, Hasher.JENKINS.hash(data, data.length))
     }
   }
-  case class StoredBrokerConfig(id:String, rev:Int, data:Array[Byte], hash:Int)
+  case class StoredBrokerModel(id:String, rev:Int, data:Array[Byte], hash:Int)
 
-  val context = JAXBContext.newInstance("org.apache.activemq.apollo.jaxb")
+  val context = JAXBContext.newInstance("org.apache.activemq.apollo.dto")
   val unmarshaller = context.createUnmarshaller
   val marshaller = context.createMarshaller
   marshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, java.lang.Boolean.TRUE )
   val inputfactory = XMLInputFactory.newInstance
 
   var file:File = new File("activemq.xml")
-  var latest:StoredBrokerConfig = null
+  @volatile
+  var latest:StoredBrokerModel = null
   var readOnly = false
 
   val dispatchQueue = createQueue("config store")
@@ -117,7 +119,7 @@ class FileConfigStore extends ConfigStor
             if( readOnly ) {
               throw new Exception("file does not exsit: "+file)
             } else {
-              write(StoredBrokerConfig(1, defaultConfig))
+              write(StoredBrokerModel(defaultConfig(1)))
             }
           } else {
             if( readOnly ) {
@@ -142,11 +144,11 @@ class FileConfigStore extends ConfigStor
     ioWorker.shutdown
   }
 
-  def listBrokerConfigs(cb: (List[String]) => Unit) = callback(cb) {
+  def listBrokerModels(cb: (List[String]) => Unit) = callback(cb) {
     List(latest.id)
   } >>: dispatchQueue
 
-  def getBrokerConfig(id:String, cb: (Option[BrokerConfig]) => Unit) = callback(cb) {
+  def getBrokerModel(id:String, cb: (Option[BrokerDTO]) => Unit) = callback(cb) {
     if( latest.id == id ) {
       Some(unmarshall(latest.data))
     } else {
@@ -154,17 +156,21 @@ class FileConfigStore extends ConfigStor
     }
   } >>: dispatchQueue
 
-  def putBrokerConfig(config:BrokerConfig, cb: (Boolean) => Unit) = callback(cb) {
-    if( latest.id == config.id && latest.rev==config.rev) {
-      config.rev += 1
-      latest = write(StoredBrokerConfig(config.rev, config))
-      true
-    } else {
+  def putBrokerModel(config:BrokerDTO, cb: (Boolean) => Unit) = callback(cb) {
+    debug("storing broker model: %s ver %d", config.id, config.rev)
+    if( latest.id != config.id ) {
+      debug("this store can only update broker: "+latest.id)
       false
+    } else if( latest.rev+1 != config.rev ) {
+      debug("update request does not match next revision: %d", latest.rev+1)
+      false
+    } else {
+      latest = write(StoredBrokerModel(config))
+      true
     }
   } >>: dispatchQueue
 
-  def removeBrokerConfig(id:String, rev:Int, cb: (Boolean) => Unit) = callback(cb) {
+  def removeBrokerModel(id:String, rev:Int, cb: (Boolean) => Unit) = callback(cb) {
     // not supported.
     false
   } >>: dispatchQueue
@@ -175,22 +181,20 @@ class FileConfigStore extends ConfigStor
     if( serviceState.isStarted ) {
       ioWorker {
         try {
-          val config = read(0, file)
-          dispatchQueue {
-            if (latest.hash != config.hash) {
-              // looks like user has manually edited the file
-              // on the file system.. treat that like an update.. so we
-              // store the change as a revision.
-
-            }
-            schedualNextUpdateCheck
+          val config = read(latest.rev+1, file)
+          if (latest.hash != config.hash) {
+            // TODO: do this in the controller so that it
+            // has a chance to update the runtime too.
+            val c = unmarshall(config.data)
+            c.rev = config.rev
+            putBrokerModel(c, null)
           }
+          schedualNextUpdateCheck
         }
         catch {
           case e:Exception =>
-            // error reading the file..
-            // TODO: updated it to the latest valid version.
-          schedualNextUpdateCheck
+          // error reading the file..  could be that someone is
+          // in the middle of updating the file.
         }
       }
     }
@@ -198,26 +202,33 @@ class FileConfigStore extends ConfigStor
 
 
 
-  private def defaultConfig() = {
-    val host = new VirtualHostConfig
-    host.hostNames.add("default")
-
-    val config = new BrokerConfig
+  private def defaultConfig(rev:Int) = {
+    val config = new BrokerDTO
     config.id = "default"
-    config.transportServers.add("tcp://0.0.0.0:61613?wireFormat=multi")
-    config.connectUris.add("tcp://localhost:61613")
+    config.rev = rev
+    config.notes = "default configuration"
+
+    var host = new VirtualHostDTO
+    host.hostNames.add("default")
     config.virtualHosts.add(host)
+
+    var connector = new ConnectorDTO
+    connector.transport = "tcp://0.0.0.0:61613"
+    connector.advertise = "tcp://0.0.0.0:61613"
+    connector.protocol = "multi"
+    config.connectors.add( connector )
+    
     config
   }
 
-  private def read(rev:Int, file: File): StoredBrokerConfig = {
+  private def read(rev:Int, file: File): StoredBrokerModel = {
     val data = IOHelper.readBytes(file)
     val config = unmarshall(data) // validates the xml
     val hash = Hasher.JENKINS.hash(data, data.length)
-    StoredBrokerConfig(config.id, rev, data, hash)
+    StoredBrokerModel(config.id, rev, data, hash)
   }
 
-  private  def write(config:StoredBrokerConfig) = {
+  private  def write(config:StoredBrokerModel) = {
     // write to the files..
     IOHelper.writeBinaryFile(file, config.data)
     IOHelper.writeBinaryFile(fileRev(config.rev), config.data)
@@ -228,10 +239,10 @@ class FileConfigStore extends ConfigStor
     val bais = new ByteArrayInputStream(in);
     val reader = inputfactory.createXMLStreamReader(bais)
     val properties = new PropertiesReader(reader)
-    unmarshaller.unmarshal(properties).asInstanceOf[BrokerConfig]
+    unmarshaller.unmarshal(properties).asInstanceOf[BrokerDTO]
   }
 
-  def marshall(in:BrokerConfig) = {
+  def marshall(in:BrokerDTO) = {
     val baos = new ByteArrayOutputStream
     marshaller.marshal(in, new OutputStreamWriter(baos));
     baos.toByteArray

Modified: activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/web/resources/Root.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/web/resources/Root.scala?rev=961101&r1=961100&r2=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/web/resources/Root.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-web/src/main/scala/org/apache/activemq/apollo/web/resources/Root.scala Wed Jul  7 03:56:09 2010
@@ -23,12 +23,11 @@ import core.{Response, Context}
 import org.fusesource.scalate.util.Logging
 import reflect.{BeanProperty}
 import com.sun.jersey.api.view.ImplicitProduces
-import org.apache.activemq.apollo.jaxb.BrokerConfig
-import com.google.inject.servlet.RequestScoped
 import org.apache.activemq.apollo.{BrokerRegistry, ConfigStore}
 import org.fusesource.hawtdispatch.Future
 import Response._
 import Response.Status._
+import org.apache.activemq.apollo.dto.BrokerDTO
 
 /**
  * Defines the default representations to be used on resources
@@ -63,7 +62,7 @@ class Root() extends Resource {
 
   def getBrokers: Array[BrokerRef] = {
     Future[List[String]] { cb=>
-      configStore.listBrokerConfigs(cb)
+      configStore.listBrokerModels(cb)
     }.map(x=> new BrokerRef(x, x)).toArray[BrokerRef]
   }
 
@@ -88,18 +87,18 @@ case class Broker(parent:Root, @BeanProp
   }
 
   @GET @Path("config")
-  def getConfig():BrokerConfig = {
+  def getConfig():BrokerDTO = {
     config()
   }
 
   private def config() = {
-    Future[Option[BrokerConfig]] { cb=>
-      configStore.getBrokerConfig(id, cb)
+    Future[Option[BrokerDTO]] { cb=>
+      configStore.getBrokerModel(id, cb)
     }.getOrElse(result(NOT_FOUND))
   }
 
   @GET @Path("config/{rev}")
-  def getConfig(@PathParam("rev") rev:Int):BrokerConfig = {
+  def getConfig(@PathParam("rev") rev:Int):BrokerDTO = {
     // that rev may have gone away..
     var c = config()
     c.rev==rev || result(NOT_FOUND)
@@ -107,18 +106,18 @@ case class Broker(parent:Root, @BeanProp
   }
 
   @PUT @Path("config/{rev}")
-  def put(@PathParam("rev") rev:Int, config:BrokerConfig) = {
+  def put(@PathParam("rev") rev:Int, config:BrokerDTO) = {
     config.id = id;
     config.rev = rev
     Future[Boolean] { cb=>
-      configStore.putBrokerConfig(config, cb)
+      configStore.putBrokerModel(config, cb)
     } || result(NOT_FOUND)
   }
 
   @DELETE @Path("config/{rev}")
   def delete(@PathParam("rev") rev:Int) = {
     Future[Boolean] { cb=>
-      configStore.removeBrokerConfig(id, rev, cb)
+      configStore.removeBrokerModel(id, rev, cb)
     } || result(NOT_FOUND)
   }
 

Modified: activemq/sandbox/activemq-apollo-actor/activemq-web/src/test/scala/org/apache/activemq/apollo/FileConfigStoreTest.scala
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-web/src/test/scala/org/apache/activemq/apollo/FileConfigStoreTest.scala?rev=961101&r1=961100&r2=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-web/src/test/scala/org/apache/activemq/apollo/FileConfigStoreTest.scala (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-web/src/test/scala/org/apache/activemq/apollo/FileConfigStoreTest.scala Wed Jul  7 03:56:09 2010
@@ -41,7 +41,7 @@ class FileConfigStoreTest extends FunSui
 
     expect(List("default")) {
       Future[List[String]]{ x=>
-        store.listBrokerConfigs(x)
+        store.listBrokerModels(x)
       }
     }
 

Modified: activemq/sandbox/activemq-apollo-actor/pom.xml
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/pom.xml?rev=961101&r1=961100&r2=961101&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/pom.xml (original)
+++ activemq/sandbox/activemq-apollo-actor/pom.xml Wed Jul  7 03:56:09 2010
@@ -141,7 +141,7 @@
     <module>activemq-selector</module>
     <module>activemq-tcp</module>
     <module>activemq-hawtdb</module>
-    <module>activemq-jaxb</module>
+    <module>activemq-dto</module>
     <module>activemq-stomp</module>
     <module>activemq-web</module>
   </modules>
@@ -480,6 +480,23 @@
 
   <profiles>
 
+    <!--
+      To generate a graph of the project dependencies, run: mvn -P graph graph:project
+    -->
+    <profile>
+      <id>graph</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.fusesource.mvnplugins</groupId>
+            <artifactId>maven-graph-plugin</artifactId>
+            <version>1.5</version>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+
+
     <profile>
       <id>eclipse</id>
       <properties>
@@ -496,28 +513,6 @@
     </profile>
 
     <profile>
-      <id>graph</id>
-      <pluginRepositories>
-        <pluginRepository>
-          <id>mvnplugins.fusesource.org</id>
-          <url>http://mvnplugins.fusesource.org/repo/release</url>
-          <releases>
-            <enabled>true</enabled>
-          </releases>
-        </pluginRepository>
-      </pluginRepositories>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.fusesource.mvnplugins</groupId>
-            <artifactId>maven-graph-plugin</artifactId>
-            <version>1.0</version>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
-    <profile>
       <id>apache-release</id>
       <activation>
         <property>