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 2017/03/02 16:27:16 UTC
svn commit: r1785158 - in /qpid/java/trunk/broker-core/src:
main/java/org/apache/qpid/server/store/
test/java/org/apache/qpid/server/store/
Author: orudyy
Date: Thu Mar 2 16:27:16 2017
New Revision: 1785158
URL: http://svn.apache.org/viewvc?rev=1785158&view=rev
Log:
QPID-7647: [Java Broker] Fix handling of broker type in configuration
* Use default container type for loading of JSON configuration
when a root type specified in configuration is unknown to the broker
* Change broker store upgrader to upgrade model 3.0 broker type
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/ConfiguredObjectRecordConverter.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java?rev=1785158&r1=1785157&r2=1785158&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecoverer.java Thu Mar 2 16:27:16 2017
@@ -314,17 +314,22 @@ public class BrokerStoreUpgraderAndRecov
@Override
public void configuredObject(ConfiguredObjectRecord record)
{
- if (record.getType().equals("Broker"))
+ if (record.getType().equalsIgnoreCase("Broker"))
{
record = upgradeRootRecord(record);
Map<String, Object> brokerAttributes = new HashMap<>(record.getAttributes());
_defaultVirtualHost = (String)brokerAttributes.remove("defaultVirtualHost");
+ boolean lowerCaseType = "broker".equals(brokerAttributes.get("type"));
+ if (lowerCaseType)
+ {
+ brokerAttributes.put("type", "Broker");
+ }
- if (_defaultVirtualHost != null)
+ if (_defaultVirtualHost != null || lowerCaseType)
{
record = new ConfiguredObjectRecordImpl(record.getId(),
- record.getType(),
+ "Broker",
brokerAttributes,
record.getParents());
getUpdateMap().put(record.getId(), record);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/ConfiguredObjectRecordConverter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/ConfiguredObjectRecordConverter.java?rev=1785158&r1=1785157&r2=1785158&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/ConfiguredObjectRecordConverter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/ConfiguredObjectRecordConverter.java Thu Mar 2 16:27:16 2017
@@ -33,6 +33,7 @@ import java.util.UUID;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.ContainerType;
import org.apache.qpid.server.model.DynamicModel;
@@ -77,21 +78,37 @@ public class ConfiguredObjectRecordConve
{
if(rootClass == null && parent instanceof DynamicModel)
{
- String containerTypeName = ((DynamicModel) parent).getDefaultContainerType();
+ String defaultContainerType = ((DynamicModel) parent).getDefaultContainerType();
+ String containerTypeName = defaultContainerType;
if (data.get(ConfiguredObject.TYPE) instanceof String)
{
containerTypeName = data.get(ConfiguredObject.TYPE).toString();
}
QpidServiceLoader loader = new QpidServiceLoader();
- final ContainerType<?> containerType =
- loader.getInstancesByType(ContainerType.class).get(containerTypeName);
+ Map<String, ContainerType> instancesByType = loader.getInstancesByType(ContainerType.class);
+ final ContainerType<?> containerType = instancesByType.get(containerTypeName);
if (containerType != null)
{
_model = containerType.getModel();
rootClass = containerType.getCategoryClass();
}
+ else
+ {
+ // fall back to default container type
+ final ContainerType<?> defaultContainerTypeInstance = instancesByType.get(defaultContainerType);
+ if (defaultContainerTypeInstance != null)
+ {
+ _model = defaultContainerTypeInstance.getModel();
+ rootClass = defaultContainerTypeInstance.getCategoryClass();
+ }
+ else
+ {
+ throw new IllegalConfigurationException(String.format("Cannot identify container type for '%s'",
+ containerType));
+ }
+ }
}
Collection<NameToIdResolver> unresolved =
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java?rev=1785158&r1=1785157&r2=1785158&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java Thu Mar 2 16:27:16 2017
@@ -466,6 +466,21 @@ public class BrokerStoreUpgraderAndRecov
}
+ public void testUpgradeBrokerType()
+ {
+ _brokerRecord.getAttributes().put("modelVersion", "3.0");
+ _brokerRecord.getAttributes().put("type", "broker");
+
+ DurableConfigurationStore dcs = new DurableConfigurationStoreStub(_brokerRecord);
+
+ BrokerStoreUpgraderAndRecoverer recoverer = new BrokerStoreUpgraderAndRecoverer(_systemConfig);
+ List<ConfiguredObjectRecord> records = upgrade(dcs, recoverer);
+
+ List<ConfiguredObjectRecord> brokerRecords = findRecordByType("Broker", records);
+ assertEquals("Unexpected number of broker records", 1, brokerRecords.size());
+ assertEquals("Unexpected type", "Broker", brokerRecords.get(0).getAttributes().get("type"));
+ }
+
public void testUpgradeAMQPPortWithNetworkBuffers()
{
Map<String, Object> portAttributes = new HashMap<>();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org