Avoid get-property() function in default scope look for entries from remote registry
git-svn-id: https://svn.apache.org/repos/asf/synapse/trunk@1776017 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java b/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java
index c8694b4..81d7971 100644
--- a/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java
+++ b/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java
@@ -156,6 +156,14 @@
public Object getEntry(String key);
/**
+ * Get the value of a property set on the message instance or from the local registry
+ *
+ * @param key key to look up property
+ * @return value for the given key
+ */
+ public Object getLocalEntry(String key);
+
+ /**
* Set a custom (local) property with the given name on the message instance
* @param key key to be used
* @param value value to be saved
diff --git a/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java b/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
index 4e770c1..0c7dee6 100644
--- a/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
+++ b/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
@@ -676,6 +676,23 @@
}
/**
+ * Get the resource from local registry
+ *
+ * @param key the key of the resource required
+ * @return value for the key
+ */
+ public Object getLocalRegistryEntry(String key) {
+ Object o = localRegistry.get(key);
+ if (o != null && o instanceof Entry) {
+ Entry entry = (Entry) o;
+ if (!entry.isDynamic()) { // Skip dynamic entries
+ return entry.getValue();
+ }
+ }
+ return null;
+ }
+
+ /**
* Get the resource with the given key
*
* @param key
diff --git a/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java b/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
index 0512002..d69b248 100644
--- a/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
+++ b/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
@@ -199,6 +199,20 @@
}
}
+ public Object getLocalEntry(String key) {
+ Object o = localEntries.get(key);
+ if (o != null && o instanceof Entry) {
+ return ((Entry) o).getValue();
+ } else {
+ Object e = getConfiguration().getLocalRegistryEntry(key);
+ if (e != null) {
+ localEntries.put(key, e);
+ return e;
+ }
+ }
+ return null;
+ }
+
/**
* Get a read-only view of all the properties currently set on this
* message context
diff --git a/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java b/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
index d4cd4a6..65fbd34 100644
--- a/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
+++ b/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
@@ -267,7 +267,7 @@
if (result != null) {
return result;
} else {
- return synCtx.getEntry(key);
+ return synCtx.getLocalEntry(key);
}
}
} else if (XMLConfigConstants.SCOPE_AXIS2.equals(scope)
diff --git a/java/modules/core/src/test/java/org/apache/synapse/TestMessageContext.java b/java/modules/core/src/test/java/org/apache/synapse/TestMessageContext.java
index 86de6ee..2e2edcb 100644
--- a/java/modules/core/src/test/java/org/apache/synapse/TestMessageContext.java
+++ b/java/modules/core/src/test/java/org/apache/synapse/TestMessageContext.java
@@ -95,6 +95,17 @@
}
}
+ public Object getLocalEntry(String key) {
+ Object ret = properties.get(key);
+ if (ret != null) {
+ return ret;
+ } else if (getConfiguration() != null) {
+ return getConfiguration().getLocalRegistryEntry(key);
+ } else {
+ return null;
+ }
+ }
+
public void setProperty(String key, Object value) {
properties.put(key, value);
}
diff --git a/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java b/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
index c81892c..1497a51 100644
--- a/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
+++ b/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
@@ -187,6 +187,10 @@
return mc.getEntry(key);
}
+ public Object getLocalEntry(String key) {
+ return mc.getLocalEntry(key);
+ }
+
public void setProperty(String key, Object value) {
if (value instanceof XMLObject) {
OMElement omElement = null;