Author: midon
Date: Thu Jun 26 19:28:16 2008
New Revision: 672083

URL: http://svn.apache.org/viewvc?rev=672083&view=rev
Log:
ODE-307: does not fail even if some parts are not mapped to a template

Modified:
    
ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
    
ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
    
ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlEncodedTransformerTest.java
    
ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlReplacementTransformerTest.java

Modified: 
ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java?rev=672083&r1=672082&r2=672083&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
 Thu Jun 26 19:28:16 2008
@@ -21,6 +21,8 @@
 
 import org.apache.commons.httpclient.NameValuePair;
 import org.apache.commons.httpclient.util.EncodingUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.axis2.httpbinding.Messages;
 import org.w3c.dom.Element;
@@ -28,28 +30,37 @@
 import javax.wsdl.Part;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">Alexis Midon</a>
  */
 public class URLEncodedTransformer {
 
-    private static final Messages msgs = Messages.getMessages(Messages.class);
 
+    private static final Log log = 
LogFactory.getLog(URLEncodedTransformer.class);
+
+    /**
+     * @param values - a map<String, Element>, the key is a part name (without 
curly braces), the value the replacement value for the part name. If the value 
is not a simple type, it will be skipped.
+     * @return the encoded params
+     */
     public String transform(Map<String, Element> values) {
         if (values.isEmpty()) return null;
-        NameValuePair[] pairs = new NameValuePair[values.size()];
-        int i = 0;
+        List<NameValuePair> l = new ArrayList<NameValuePair>(values.size());
         for (Map.Entry<String, Element> e : values.entrySet()) {
+            String partName = e.getKey();
             Element node = e.getValue();
             String nodeContent = DOMUtils.isEmptyElement(node) ? "" : 
DOMUtils.getTextContent(node);
             if (nodeContent == null) {
-                throw new 
IllegalArgumentException(msgs.msgSimpleTypeExpected(e.getKey()));
+                // if it is not a simple type, skip it
+                if (log.isDebugEnabled())
+                    log.debug("Part " + partName + " skipped because 
associated element is not of a simple type.");
+                continue;
             }
-            NameValuePair p = new NameValuePair(e.getKey(), nodeContent);
-            pairs[i++] = p;
+            l.add(new NameValuePair(e.getKey(), nodeContent));
         }
-        return EncodingUtil.formUrlEncode(pairs, "UTF-8");
+        return EncodingUtil.formUrlEncode(l.toArray(new NameValuePair[0]), 
"UTF-8");
     }
 
 }

Modified: 
ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java?rev=672083&r1=672082&r2=672083&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
 Thu Jun 26 19:28:16 2008
@@ -54,7 +54,7 @@
 
     /**
      * @param baseUri - the base uri template containing part names enclosed 
within single curly braces
-     * @param values  - a map<String, Object>, the key is a part name (without 
curly braces), the value the replacement value for the part name.
+     * @param values  - a map<String, Element>, the key is a part name 
(without curly braces), the value the replacement value for the part name. If 
the value is not a simple type, it will be skipped.
      * @return the encoded uri
      * @throws java.lang.IllegalArgumentException if a replacement value is 
null in the map or if a part pattern is found more than once
      */
@@ -72,10 +72,12 @@
             String replacementValue;
             {
                 Element value = e.getValue();
-                if (value == null) {
-                    throw new 
IllegalArgumentException(httpMsgs.msgSimpleTypeExpected(partName));
-                }
                 replacementValue = DOMUtils.isEmptyElement(value) ? "" : 
DOMUtils.getTextContent(value);
+                if (replacementValue == null) {
+                    // if it is not a simple type, skip it
+                    if(log.isDebugEnabled()) log.debug("Part "+partName+" 
skipped because associated element is not of a simple type.");
+                    continue;
+                }
             }
 
             try {

Modified: 
ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlEncodedTransformerTest.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlEncodedTransformerTest.java?rev=672083&r1=672082&r2=672083&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlEncodedTransformerTest.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlEncodedTransformerTest.java
 Thu Jun 26 19:28:16 2008
@@ -31,10 +31,10 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Alexis Midon</a>
  */
 public class UrlEncodedTransformerTest extends TestCase {
-    protected URLEncodedTransformer transformer= new URLEncodedTransformer();
+    protected URLEncodedTransformer transformer = new URLEncodedTransformer();
 
 
-    public void testSimple(){
+    public void testSimple() {
         Document doc = DOMUtils.newDocument();
         Map<String, Element> m = new HashMap<String, Element>();
         Element element = doc.createElement("part1");
@@ -52,7 +52,7 @@
         assertTrue(res.contains("part1=42+3.14159"));
         assertTrue(res.contains("part2=hello+word+%40%23%24%25+%26*"));
         assertTrue(res.contains("emptyPart="));
-        assertTrue(res.split("&").length==m.size());
+        assertTrue(res.split("&").length == m.size());
     }
 
 
@@ -63,12 +63,6 @@
         Map<String, Element> m = new HashMap<String, Element>();
         m.put("part1", element);
 
-        try {
-            transformer.transform(m);
-            fail("IllegalArgumentException expected because a complex type is 
passed.");
-        } catch (IllegalArgumentException e) {
-            // expected behavior
-        }
-
+        assertEquals("Result should empty because the only part is associated 
to a complex type", "", transformer.transform(m));
     }
 }

Modified: 
ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlReplacementTransformerTest.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlReplacementTransformerTest.java?rev=672083&r1=672082&r2=672083&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlReplacementTransformerTest.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.1/axis2/src/test/java/org/apache/ode/axis2/util/UrlReplacementTransformerTest.java
 Thu Jun 26 19:28:16 2008
@@ -120,12 +120,8 @@
         m.put("part1", element);
 
         UrlReplacementTransformer encoder = new UrlReplacementTransformer();
-        try {
-            encoder.transform("(part1)", m);
-            fail("IllegalArgumentException expected because a complex type is 
passed.");
-        } catch (IllegalArgumentException e) {
-            // expected behavior
-        }
+        assertEquals("Result should be equal to template because the only part 
is associated to a complex type", "(part1)", encoder.transform("(part1)", m));
+
     }
 
 }


Reply via email to