You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2013/01/25 18:53:38 UTC

svn commit: r1438619 - in /qpid/branches/java-broker-config-qpid-4390/qpid/java: broker/src/main/java/org/apache/qpid/server/configuration/ broker/src/main/java/org/apache/qpid/server/configuration/store/ broker/src/main/resources/ broker/src/test/java...

Author: orudyy
Date: Fri Jan 25 17:53:37 2013
New Revision: 1438619

URL: http://svn.apache.org/viewvc?rev=1438619&view=rev
Log:
QPID-4390: Change json configuration store to identify configuration entry type based on relationship name

Added:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/initial-store.json
      - copied, changed from r1438479, qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/default.json
Removed:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/default.json
Modified:
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerConfigurationStoreCreator.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java
    qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/etc/config-systests.json

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerConfigurationStoreCreator.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerConfigurationStoreCreator.java?rev=1438619&r1=1438618&r2=1438619&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerConfigurationStoreCreator.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerConfigurationStoreCreator.java Fri Jan 25 17:53:37 2013
@@ -29,7 +29,7 @@ public class BrokerConfigurationStoreCre
     /**
      * Path to resource containing broker default configuration
      */
-    public static final String INITIAL_STORE_LOCATION = "default.json";
+    public static final String INITIAL_STORE_LOCATION = "initial-store.json";
 
     /**
      * Create broker configuration store for given store location, store type

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java?rev=1438619&r1=1438618&r2=1438619&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java Fri Jan 25 17:53:37 2013
@@ -24,6 +24,8 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.configuration.BrokerConfigurationStoreCreator;
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
 import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Model;
 import org.apache.qpid.server.model.UUIDGenerator;
 import org.apache.qpid.util.FileUtils;
 import org.apache.qpid.util.Strings;
@@ -38,17 +40,16 @@ import org.codehaus.jackson.node.ArrayNo
 
 public class JsonConfigurationEntryStore implements ConfigurationEntryStore
 {
-    private static final String DEFAULT_BROKER_TYPE = Broker.class.getSimpleName();
     private static final String DEFAULT_BROKER_NAME = "Broker";
     private static final String ID = "id";
-    private static final String TYPE = "type";
+    private static final String TYPE = "@type";
 
     private ObjectMapper _objectMapper;
     private Map<UUID, ConfigurationEntry> _entries;
     private File _storeFile;
     private UUID _rootId;
     private String _initialStoreLocation;
-
+    private Map<String, Class<? extends ConfiguredObject>> _relationshipClasses;
 
     public JsonConfigurationEntryStore()
     {
@@ -62,6 +63,21 @@ public class JsonConfigurationEntryStore
         _objectMapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
         _objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
         _entries = new HashMap<UUID, ConfigurationEntry>();
+        _relationshipClasses = buildRelationshipClassMap();
+    }
+
+    private Map<String, Class<? extends ConfiguredObject>> buildRelationshipClassMap()
+    {
+        Map<String, Class<? extends ConfiguredObject>> relationships = new HashMap<String, Class<? extends ConfiguredObject>>();
+
+        Collection<Class<? extends ConfiguredObject>> children = Model.getInstance().getChildTypes(Broker.class);
+        for (Class<? extends ConfiguredObject> childClass : children)
+        {
+            String name = childClass.getSimpleName().toLowerCase();
+            String relationshipName = name + (name.endsWith("s") ? "es" : "s");
+            relationships.put(relationshipName, childClass);
+        }
+       return relationships;
     }
 
     public void load(URL storeURL)
@@ -71,7 +87,7 @@ public class JsonConfigurationEntryStore
             throw new IllegalStateException("Cannot load the store from");
         }
         JsonNode node = load(storeURL, _objectMapper);
-        ConfigurationEntry brokerEntry = toEntry(node, true, _entries);
+        ConfigurationEntry brokerEntry = toEntry(node, Broker.class, _entries);
         _rootId = brokerEntry.getId();
     }
 
@@ -309,7 +325,7 @@ public class JsonConfigurationEntryStore
         return root;
     }
 
-    private ConfigurationEntry toEntry(JsonNode parent, boolean isRoot, Map<UUID, ConfigurationEntry> entries)
+    private ConfigurationEntry toEntry(JsonNode parent, Class<? extends ConfiguredObject> expectedConfiguredObjectClass, Map<UUID, ConfigurationEntry> entries)
     {
         Map<String, Object> attributes = null;
         Set<UUID> childrenIds = new TreeSet<UUID>();
@@ -338,8 +354,9 @@ public class JsonConfigurationEntryStore
                     JsonNode element = elements.next();
                     if (element.isObject())
                     {
+                        Class<? extends ConfiguredObject> expectedChildConfiguredObjectClass = _relationshipClasses.get(fieldName);
                         // assuming it is a child node
-                        ConfigurationEntry entry = toEntry(element, false, entries);
+                        ConfigurationEntry entry = toEntry(element, expectedChildConfiguredObjectClass, entries);
                         childrenIds.add(entry.getId());
                     }
                     else
@@ -375,13 +392,13 @@ public class JsonConfigurationEntryStore
 
         if (type == null)
         {
-            if (isRoot)
+            if (expectedConfiguredObjectClass == null)
             {
-                type = DEFAULT_BROKER_TYPE;
+                throw new IllegalConfigurationException("Type attribute is not provided for configuration entry " + parent);
             }
             else
             {
-                throw new IllegalConfigurationException("Type attribute is not provided for configuration entry " + parent);
+                type = expectedConfiguredObjectClass.getSimpleName();
             }
         }
         String name = null;
@@ -391,7 +408,7 @@ public class JsonConfigurationEntryStore
         }
         if ((name == null || "".equals(name)))
         {
-            if (isRoot)
+            if (expectedConfiguredObjectClass == Broker.class)
             {
                 name = DEFAULT_BROKER_NAME;
             }
@@ -403,7 +420,7 @@ public class JsonConfigurationEntryStore
         UUID id = null;
         if (idAsString == null)
         {
-            if (isRoot)
+            if (expectedConfiguredObjectClass == Broker.class)
             {
                 id = UUIDGenerator.generateRandomUUID();
             }

Copied: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/initial-store.json (from r1438479, qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/default.json)
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/initial-store.json?p2=qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/initial-store.json&p1=qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/default.json&r1=1438479&r2=1438619&rev=1438619&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/default.json (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/resources/initial-store.json Fri Jan 25 17:53:37 2013
@@ -19,48 +19,39 @@
  *
  */
 {
-  "type" : "Broker",
   "name": "QpidBroker",
   "defaultAuthenticationProvider" : "defaultAuthenticationProvider",
   "defaultVirtualHost" : "default",
   "authenticationproviders" : [ {
-    "type" : "AuthenticationProvider",
     "name" : "defaultAuthenticationProvider",
     "authenticationProviderType" : "PlainPasswordFileAuthenticationProvider",
     "path" : "${QPID_HOME}/etc/passwd"
   } ],
   "ports" : [  {
-    "type" : "Port",
     "name" : "5672-AMQP",
     "port" : 5672
   }, {
-    "type" : "Port",
     "name" : "8080-HTTP",
     "port" : 8080,
     "protocols" : [ "HTTP" ]
   }, {
-    "type" : "Port",
     "name" : "8999-RMI",
     "port" : 8999,
     "protocols" : [ "RMI" ]
   }, {
-    "type" : "Port",
     "name" : "9099-JMX_RMI",
     "port" : 9099,
     "protocols" : [ "JMX_RMI" ]
   }],
   "virtualhosts" : [ {
-    "type" : "VirtualHost",
     "name" : "default",
     "storeType" : "DERBY",
     "storePath" : "${QPID_WORK}/store"
   } ],
   "plugins" : [ {
-    "type" : "Plugin",
     "pluginType" : "MANAGEMENT-HTTP",
     "name" : "httpManagement"
   }, {
-    "type" : "Plugin",
     "pluginType" : "MANAGEMENT-JMX",
     "name" : "jmxManagement"
   } ]

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java?rev=1438619&r1=1438618&r2=1438619&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java Fri Jan 25 17:53:37 2013
@@ -33,7 +33,7 @@ public class JsonConfigurationEntryStore
 
         Map<String, Object> brokerObjectMap = new HashMap<String, Object>();
         brokerObjectMap.put(Broker.ID, brokerId);
-        brokerObjectMap.put("type", Broker.class.getSimpleName());
+        brokerObjectMap.put("@type", Broker.class.getSimpleName());
         brokerObjectMap.putAll(brokerAttributes);
 
         StringWriter sw = new StringWriter();

Modified: qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/etc/config-systests.json
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/etc/config-systests.json?rev=1438619&r1=1438618&r2=1438619&view=diff
==============================================================================
--- qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/etc/config-systests.json (original)
+++ qpid/branches/java-broker-config-qpid-4390/qpid/java/systests/etc/config-systests.json Fri Jan 25 17:53:37 2013
@@ -19,7 +19,6 @@
  *
  */
 {
-  "type" : "Broker",
   "name": "QpidBroker",
   "defaultAuthenticationProvider" : "plain",
   "defaultVirtualHost" : "test",
@@ -28,44 +27,36 @@
   "trustStorePath": "${QPID_HOME}/../test-profiles/test_resources/ssl/java_client_truststore.jks",
   "trustStorePassword": "password",
   "authenticationproviders" : [ {
-    "type" : "AuthenticationProvider",
     "name" : "plain",
     "authenticationProviderType" : "PlainPasswordFileAuthenticationProvider",
     "path" : "${QPID_HOME}/etc/passwd"
   } ],
   "ports" : [  {
-    "type" : "Port",
     "name" : "amqp",
     "port" : "${test.port}"
   }, {
-    "type" : "Port",
     "name" : "http",
     "port" : "${test.hport}",
     "protocols" : [ "HTTP" ]
   }, {
-    "type" : "Port",
     "name" : "rmi",
     "port" : "${test.mport}",
     "protocols" : [ "RMI" ]
   }, {
-    "type" : "Port",
     "name" : "jmx",
     "port" : "${test.cport}",
     "protocols" : [ "JMX_RMI" ]
   }],
   "virtualhosts" : [ {
-    "type" : "VirtualHost",
     "name" : "test",
     "configPath" : "${broker.virtualhosts-config}"
   } ]
   /*
 ,
   "plugins" : [ {
-    "type" : "Plugin",
     "pluginType" : "MANAGEMENT-HTTP",
     "name" : "httpManagement"
   }, {
-    "type" : "Plugin",
     "pluginType" : "MANAGEMENT-JMX",
     "name" : "jmxManagement"
   } ]



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org