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));
+
}
}