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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to