summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-07-18 14:01:19 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-07-18 14:01:19 +0000
commitd1edef4b29bbdda8e1027b893367ab00d58bb2cd (patch)
tree5232f586d07bfb1ac9b918f02a18219fe0ab205b /qpid/java/broker-core
parentc860c96b46d0d9dbab87dddeff00ca8a26259d89 (diff)
downloadqpid-python-d1edef4b29bbdda8e1027b893367ab00d58bb2cd.tar.gz
QPID-5903 : [Java Broker] allow character escaping for JSON in configured object attribute interpolation
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1611657 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-core')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
index baf20da486..41578272f7 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
@@ -1361,6 +1361,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
Map<String,String> inheritedContext = new HashMap<String, String>();
generateInheritedContext(object.getModel(), object, inheritedContext);
return Strings.expand(value, false,
+ JSON_SUBSTITUTION_RESOLVER,
getOwnAttributeResolver(object),
new Strings.MapResolver(inheritedContext),
Strings.JAVA_SYS_PROPS_RESOLVER,
@@ -1395,6 +1396,16 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
}
+ private static final Strings.Resolver JSON_SUBSTITUTION_RESOLVER =
+ Strings.createSubstitutionResolver("json:",
+ new LinkedHashMap<String, String>()
+ {
+ {
+ put("\\","\\\\");
+ put("\"","\\\"");
+ }
+ });
+
private static class OwnAttributeResolver implements Strings.Resolver
{
private static final Module _module;
@@ -1432,7 +1443,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
}
@Override
- public String resolve(final String variable)
+ public String resolve(final String variable, final Strings.Resolver resolver)
{
boolean clearStack = false;
Set<String> currentStack = _stack.get();