You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2008/04/21 19:47:47 UTC

svn commit: r650212 - in /webservices/axis2/branches/java/1_4/modules/kernel: src/org/apache/axis2/builder/XFormURLEncodedBuilder.java src/org/apache/axis2/engine/Phase.java test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java

Author: dims
Date: Mon Apr 21 10:47:29 2008
New Revision: 650212

URL: http://svn.apache.org/viewvc?rev=650212&view=rev
Log:
Fix from Keith for AXIS2-3759 and from Deepal/Ruwan for AXIS2-3757

Modified:
    webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java
    webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/engine/Phase.java
    webservices/axis2/branches/java/1_4/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java

Modified: webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java?rev=650212&r1=650211&r2=650212&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java (original)
+++ webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java Mon Apr 21 10:47:29 2008
@@ -105,7 +105,7 @@
 
         String query = requestURL;
         int index;
-        if ((index = requestURL.indexOf("?")) > 0) {
+        if ((index = requestURL.indexOf("?")) > -1) {
             query = requestURL.substring(index + 1);
         }
 
@@ -254,9 +254,18 @@
                     if (templateStartIndex == -1) {
                         if (templateEndIndex == pathTemplate.length() - 1) {
 
+                            // We may have occations where we have templates of the form foo/{name}.
+                            // In this case the next connstant will be ? and not the
+                            // queryParameterSeparator
                             indexOfNextConstant =
                                     requestURIBuffer
-                                            .indexOf(queryParameterSeparator, endIndexOfConstant);
+                                            .indexOf("?", endIndexOfConstant);
+                            if (indexOfNextConstant == -1) {
+                                indexOfNextConstant =
+                                        requestURIBuffer
+                                                .indexOf(queryParameterSeparator,
+                                                         endIndexOfConstant);
+                            }
                             if (indexOfNextConstant > 0) {
                                 addParameterToMap(parameterMap, parameterName,
                                                   requestURIBuffer.substring(endIndexOfConstant,

Modified: webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/engine/Phase.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/engine/Phase.java?rev=650212&r1=650211&r2=650212&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/engine/Phase.java (original)
+++ webservices/axis2/branches/java/1_4/modules/kernel/src/org/apache/axis2/engine/Phase.java Mon Apr 21 10:47:29 2008
@@ -251,8 +251,30 @@
 
         if (beforeIndex > -1) {
             handlers.add(beforeIndex, handler);
+        } else if (afterIndex > -1){
+            if (phaseLastSet){
+                if (handlers.size() ==1){
+                    handlers.add(0,handler);
+                }  else {
+                    handlers.add(handlers.size() -2,handler);
+                }
+            }  else {
+                if (afterIndex == (handlers.size() -1)) {
+                    handlers.add(handler);
+                } else {
+                    handlers.add(afterIndex +1,handler);
+                }
+            }
+        }  else {
+            if (phaseLastSet) {
+                if (handlers.size() ==1){
+                    handlers.add(0,handler);
+                }  else {
+                    handlers.add(handlers.size() -2,handler);
+                }
         } else {
             handlers.add(handler);
+            }
         }
     }
 

Modified: webservices/axis2/branches/java/1_4/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_4/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java?rev=650212&r1=650211&r2=650212&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_4/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java (original)
+++ webservices/axis2/branches/java/1_4/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java Mon Apr 21 10:47:29 2008
@@ -121,4 +121,60 @@
             System.out.println("Name:" + metadata.getName().getLocalPart());
         }*/
     }
+
+    public void testPhaseLastAndAfter() throws Exception {
+
+        Phase phase = new Phase();
+
+        //////////////// handler 1 //////////////////////////
+        PhaseRuleHandler h1 = new PhaseRuleHandler("a");
+        HandlerDescription hd1 = new HandlerDescription("a");
+        h1.init(hd1);
+        hd1.setHandler(h1);
+        phase.addHandler(hd1);
+        /////////////////////////////////////////////////////
+
+        //////////////// handler 4 //////////////////////////
+        PhaseRule rule4 = new PhaseRule();
+        rule4.setPhaseLast(true);
+
+        PhaseRuleHandler h4 = new PhaseRuleHandler("d");
+        HandlerDescription hd4 = new HandlerDescription("d");
+        h4.init(hd4);
+
+        hd4.setHandler(h4);
+        hd4.setRules(rule4);
+        phase.addHandler(hd4);
+        ////////////////////////////////////////////////////
+
+        //////////////// handler 2 //////////////////////////
+        PhaseRule rule2 = new PhaseRule();
+        rule2.setAfter("a");
+
+        HandlerDescription hd2 = new HandlerDescription("b");
+        PhaseRuleHandler h2 = new PhaseRuleHandler("b");
+        h2.init(hd2);
+
+        hd2.setHandler(h2);
+        hd2.setRules(rule2);
+        phase.addHandler(hd2);
+        //////////////////////////////////////////////////////
+
+        //////////////// handler 3 //////////////////////////
+        PhaseRule rule3 = new PhaseRule();
+        rule3.setAfter("b");
+
+        HandlerDescription hd3 = new HandlerDescription("c");
+        PhaseRuleHandler h3 = new PhaseRuleHandler("c");
+        h3.init(hd3);
+
+        hd3.setHandler(h3);
+        hd3.setRules(rule3);
+        try {
+            phase.addHandler(hd3);
+        } catch (Exception e) {
+            fail("Adding handlers with after attribute to the phase behaviour failed");
+        }
+        //////////////////////////////////////////////////////
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org