summaryrefslogtreecommitdiff
path: root/java/broker-core/src
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
commit94cb657202acbbe5e45f1377ad40f29a1c6858ae (patch)
tree31a4170adfa846e3135ad1bbe357d54e97472261 /java/broker-core/src
parentd2cd7a13bbf24069dc2177af0001d44b68f4e33f (diff)
downloadqpid-python-94cb657202acbbe5e45f1377ad40f29a1c6858ae.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/qpid@1611657 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker-core/src')
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java b/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
index baf20da486..41578272f7 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
+++ b/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();