You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by in...@apache.org on 2007/11/16 16:41:20 UTC
svn commit: r595707 -
/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
Author: indika
Date: Fri Nov 16 07:41:19 2007
New Revision: 595707
URL: http://svn.apache.org/viewvc?rev=595707&view=rev
Log:
extend get-property function for three args
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java?rev=595707&r1=595706&r2=595707&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java Fri Nov 16 07:41:19 2007
@@ -35,6 +35,8 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.text.Format;
+import java.text.SimpleDateFormat;
/**
* Implements the XPath extension function synapse:get-property(scope,prop-name)
@@ -75,17 +77,28 @@
if (traceOrDebugOn) {
traceOrDebug(traceOn, "Property key value for lookup is not specified");
}
- return null;
+ return NULL_STRING;
} else {
int size = args.size();
if (size == 1) {
return evaluate(
- XMLConfigConstants.SCOPE_DEFAULT, args.get(0), context.getNavigator());
+ XMLConfigConstants.SCOPE_DEFAULT, args.get(0), null, context.getNavigator());
} else if (size == 2) {
- return evaluate(args.get(0), args.get(1), context.getNavigator());
-
+ String argOne = StringFunction.evaluate(args.get(0), context.getNavigator());
+ if (argOne != null) {
+ if (!XMLConfigConstants.SCOPE_AXIS2.equals(argOne) &&
+ !XMLConfigConstants.SCOPE_DEFAULT.equals(argOne) &&
+ !XMLConfigConstants.SCOPE_TRANSPORT.equals(argOne)) {
+ return evaluate(XMLConfigConstants.SCOPE_DEFAULT, args.get(0),
+ args.get(1), context.getNavigator());
+ } else {
+ return evaluate(args.get(0), args.get(1), null, context.getNavigator());
+ }
+ }
+ } else if (size == 3) {
+ return evaluate(args.get(0), args.get(1), args.get(2), context.getNavigator());
} else {
String msg = "Invalid arguments for synapse:get-property(prop-name) 0r " +
@@ -97,6 +110,7 @@
throw new FunctionCallException(msg);
}
}
+ return NULL_STRING;
}
/**
@@ -106,9 +120,10 @@
* i.e. axis2, transport, default/synapse
* @param keyObject the key of the property
* @param navigator object model which can be used for navigation around
+ * @param dateformat The dateformat that need to convert
* @return The String value of property using arg one as key and arg two as scope
*/
- public Object evaluate(Object scopeObject, Object keyObject, Navigator navigator) {
+ public Object evaluate(Object scopeObject, Object keyObject, Object dateformat,Navigator navigator) {
boolean traceOn = synCtx.getTracingState() == SynapseConstants.TRACING_ON;
boolean traceOrDebugOn = traceOn || log.isDebugEnabled();
@@ -130,9 +145,28 @@
"property-name should be provided when executing synapse:get-property" +
"(scope,prop-name) or synapse:get-property(prop-name) Xpath function");
}
- return null;
+ return NULL_STRING;
+ }
+
+ //Irrespective of the scope ,if the dateformat has provided ,
+ // should return the Date according to the provided format
+
+ if (SynapseConstants.SYSTEM_DATE.equals(key)) {
+ if (dateformat != null) {
+ Format formatter = new SimpleDateFormat(dateformat.toString());
+ return formatter.format(new java.util.Date());
+ } else {
+ Format formatter = new SimpleDateFormat();
+ return formatter.format(new java.util.Date());
+ }
}
-
+
+ //return the current system time as a string , don't care scope
+ if (SynapseConstants.SYSTEM_TIME.equals(key)) {
+
+ return Long.toString(System.currentTimeMillis());
+ }
+
if (XMLConfigConstants.SCOPE_DEFAULT.equals(scope)) {
if (SynapseConstants.HEADER_TO.equals(key)) {
@@ -178,16 +212,12 @@
return NULL_STRING;
}
} else if (SynapseConstants.PROPERTY_MESSAGE_FORMAT.equals(key)) {
- if(synCtx.isDoingPOX())
+ if (synCtx.isDoingPOX())
return SynapseConstants.FORMAT_POX;
- else if (synCtx.isSOAP11())
+ else if (synCtx.isSOAP11())
return SynapseConstants.FORMAT_SOAP11;
else
return SynapseConstants.FORMAT_SOAP12;
- } else if (SynapseConstants.SYSTEM_DATE.equals(key)) {
- return new java.util.Date().toString();
- } else if (SynapseConstants.SYSTEM_TIME.equals(key)) {
- return Long.toString(System.currentTimeMillis());
} else {
Object result = synCtx.getProperty(key);
if (result != null) {
@@ -196,7 +226,6 @@
return synCtx.getEntry(key);
}
}
-
} else if (XMLConfigConstants.SCOPE_AXIS2.equals(scope)
&& synCtx instanceof Axis2MessageContext) {
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org