summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-03-25 21:18:47 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-03-25 21:18:47 +0000
commit7fe29acc67aeb84cddd1197244c68b0f90a60440 (patch)
treea7ec1f4bd1ec9bf4b65df8a5c61a6eb392580627
parented3a1a5d65a9e9c18540adabcaa955bae6b675fb (diff)
downloadqpid-python-7fe29acc67aeb84cddd1197244c68b0f90a60440.tar.gz
merged bugfix r1580560 from trunk
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.28@1581526 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java41
1 files changed, 40 insertions, 1 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
index 3de601d741..e99c2019cd 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
@@ -38,10 +38,17 @@ import java.util.UUID;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Model;
import org.apache.qpid.server.model.VirtualHost;
+import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.Version;
import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.Module;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
+import org.codehaus.jackson.map.SerializerProvider;
+import org.codehaus.jackson.map.module.SimpleModule;
public class JsonFileConfigStore implements DurableConfigurationStore
{
@@ -61,8 +68,30 @@ public class JsonFileConfigStore implements DurableConfigurationStore
private String _backupFileName;
private int _configVersion;
+ private static final Module _module;
+ static
+ {
+ SimpleModule module= new SimpleModule("ConfiguredObjectSerializer", new Version(1,0,0,null));
+
+ final JsonSerializer<ConfiguredObject> serializer = new JsonSerializer<ConfiguredObject>()
+ {
+ @Override
+ public void serialize(final ConfiguredObject value,
+ final JsonGenerator jgen,
+ final SerializerProvider provider)
+ throws IOException, JsonProcessingException
+ {
+ jgen.writeString(value.getId().toString());
+ }
+ };
+ module.addSerializer(ConfiguredObject.class, serializer);
+
+ _module = module;
+ }
+
public JsonFileConfigStore()
{
+ _objectMapper.registerModule(_module);
_objectMapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
}
@@ -414,7 +443,17 @@ public class JsonFileConfigStore implements DurableConfigurationStore
{
ConfiguredObjectRecord childRecord = _objectsById.get(childId);
final String parentArg = type.getSimpleName().toLowerCase();
- if(id.toString().equals(String.valueOf(childRecord.getAttributes().get(parentArg))))
+ final Object parent = childRecord.getAttributes().get(parentArg);
+ String parentId;
+ if(parent instanceof ConfiguredObject)
+ {
+ parentId = ((ConfiguredObject)parent).getId().toString();
+ }
+ else
+ {
+ parentId = String.valueOf(parent);
+ }
+ if(id.toString().equals(parentId))
{
entities.add(build(childClass,childId));
}