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-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org