You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by gd...@apache.org on 2007/04/30 07:21:26 UTC
svn commit: r533586 - in /webservices/axis2/trunk/java/modules/kernel:
src/org/apache/axis2/deployment/ src/org/apache/axis2/engine/
src/org/apache/axis2/phaseresolver/ src/org/apache/axis2/util/
test/org/apache/axis2/phaserule/
Author: gdaniels
Date: Sun Apr 29 22:21:24 2007
New Revision: 533586
URL: http://svn.apache.org/viewvc?view=rev&rev=533586
Log:
A little more cleanup of Phase, make sure HandlerDescriptions have names, condense phaserule tests into PhaseRuleTests class, clean up test code.
Added:
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandler.java (contents, props changed)
- copied, changed from r533453, webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandlers.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTests.java
Removed:
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/BeforeAfterTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/BeforeTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/BeforeWithNoFirstHandlerTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseFirstRulesTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseFirstTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseLastRuleTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaseRuleTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/InvalidPhaselastTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseFirstTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseLastTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandlers.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/SingleHandlerPhaseTest.java
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/Phase.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseHolder.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java?view=diff&rev=533586&r1=533585&r2=533586
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DescriptionBuilder.java Sun Apr 29 22:21:24 2007
@@ -388,18 +388,17 @@
ParameterInclude parent,
String containingPhase)
throws DeploymentException {
- HandlerDescription handler = new HandlerDescription();
// Setting handler name
OMAttribute name_attribute = handler_element.getAttribute(new QName(
ATTRIBUTE_NAME));
- if (name_attribute == null) {
+ if (name_attribute == null || name_attribute.getAttributeValue().equals("")) {
throw new DeploymentException(Messages.getMessage(
DeploymentErrorMsgs.INVALID_HANDLER, "Unknown", "Name missing"));
- } else {
- handler.setName(name_attribute.getAttributeValue());
}
+
+ HandlerDescription handler = new HandlerDescription(name_attribute.getAttributeValue());
// Setting handler class name
OMAttribute class_attribute = handler_element.getAttribute(new QName(
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java?view=diff&rev=533586&r1=533585&r2=533586
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java Sun Apr 29 22:21:24 2007
@@ -2,29 +2,27 @@
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
-import org.apache.axis2.util.JavaUtils;
import org.apache.axis2.addressing.AddressingHelper;
import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.SessionContext;
-import org.apache.axis2.context.ServiceGroupContext;
import org.apache.axis2.context.ContextFactory;
-import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
-import org.apache.axis2.description.AxisService;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.context.SessionContext;
import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.AxisServiceGroup;
import org.apache.axis2.i18n.Messages;
import org.apache.axis2.transport.RequestResponseTransport;
import org.apache.axis2.transport.TransportListener;
import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.util.JavaUtils;
import org.apache.axis2.wsdl.WSDLConstants.WSDL20_2004_Constants;
-import org.apache.axiom.soap.SOAPHeader;
-import org.apache.axiom.om.OMElement;
import java.util.ArrayList;
-import java.util.List;
import java.util.Iterator;
+import java.util.List;
/*
* Copyright 2004,2005 The Apache Software Foundation.
@@ -141,7 +139,7 @@
if ((msgContext.getOperationContext() != null)
&& (serviceContext != null)) {
msgContext.setServiceGroupContextId(
- ((ServiceGroupContext) serviceContext.getParent()).getId());
+ ((ServiceGroupContext)serviceContext.getParent()).getId());
return;
}
if (Constants.SCOPE_TRANSPORT_SESSION.equals(scope)) {
@@ -149,9 +147,9 @@
}
AxisOperation axisOperation = msgContext.getAxisOperation();
- if (axisOperation == null) {
- return;
- }
+// if (axisOperation == null) {
+// return;
+// }
OperationContext operationContext =
axisOperation.findForExistingOperationContext(msgContext);
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/Phase.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/Phase.java?view=diff&rev=533586&r1=533585&r2=533586
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/Phase.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/Phase.java Sun Apr 29 22:21:24 2007
@@ -122,8 +122,8 @@
}
if (isOneHandler) {
- throw new PhaseException(this.getPhaseName()
- + "can only have one handler, since there is a "
+ throw new PhaseException("Phase '" + this.getPhaseName()
+ + "' can only have one handler, since there is a "
+ "handler with both phaseFirst and phaseLast true ");
}
@@ -222,12 +222,17 @@
if ((afterName != null) && (afterIndex == -1)) {
if (tempHandler.getName().equals(afterName)) {
- // Found the "before" handler
+ // Found the "after" handler
afterIndex = i;
}
}
}
+ if ((beforeIndex > -1) && (afterIndex >= beforeIndex)) {
+ throw new PhaseException("Can't insert handler because " + beforeName + " is before " +
+ afterName + " in Phase '" + phaseName + "'");
+ }
+
if (phaseFirstSet && beforeIndex == 0) {
throw new PhaseException("Can't insert handler before handler '"
+ beforeName
@@ -380,10 +385,9 @@
if (phaseFirstSet) {
throw new PhaseException("PhaseFirst has been set already, cannot have two"
+ " phaseFirst Handlers for Phase '" + this.getPhaseName() + "'");
- } else {
- handlers.add(0, handler);
- phaseFirstSet = true;
}
+ handlers.add(0, handler);
+ phaseFirstSet = true;
}
/**
@@ -400,12 +404,7 @@
+ this.getPhaseName());
}
- if (handlers.size() == 0) {
- handlers.add(handler);
- } else {
- handlers.add(handlers.size() - 1, handler);
- }
-
+ handlers.add(handler);
phaseLastSet = true;
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseHolder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseHolder.java?view=diff&rev=533586&r1=533585&r2=533586
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseHolder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/phaseresolver/PhaseHolder.java Sun Apr 29 22:21:24 2007
@@ -66,7 +66,7 @@
phase.addHandler(handlerDesc);
}
} else {
- if (isPhaseExist(phaseName)) {
+ if (phaseExists(phaseName)) {
getPhase(phaseName).addHandler(handlerDesc);
} else {
throw new PhaseException(Messages.getMessage(DeploymentErrorMsgs.INVALID_PHASE,
@@ -93,11 +93,12 @@
}
/**
- * Method isPhaseExist
+ * Check if a named Phase exists in this holder.
*
- * @param phaseName
+ * @param phaseName name to check
+ * @return true if a Phase matching the name was found, false otherwise
*/
- private boolean isPhaseExist(String phaseName) {
+ private boolean phaseExists(String phaseName) {
for (int i = 0; i < phaseList.size(); i++) {
Phase phase = (Phase) phaseList.get(i);
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java?view=diff&rev=533586&r1=533585&r2=533586
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java Sun Apr 29 22:21:24 2007
@@ -60,7 +60,7 @@
private static final Log log = LogFactory.getLog(Utils.class);
public static void addHandler(Flow flow, Handler handler, String phaseName) {
- HandlerDescription handlerDesc = new HandlerDescription();
+ HandlerDescription handlerDesc = new HandlerDescription(handler.getName());
PhaseRule rule = new PhaseRule(phaseName);
handlerDesc.setRules(rule);
Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java?view=diff&rev=533586&r1=533585&r2=533586
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java Sun Apr 29 22:21:24 2007
@@ -49,7 +49,7 @@
HandlerDescription hm = new HandlerDescription();
hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
- Handler h1 = new PhaseRuleHandlers();
+ Handler h1 = new PhaseRuleHandler();
hm.setHandler(h1);
hm.getRules().setPhaseName("*");
@@ -89,7 +89,7 @@
HandlerDescription hm = new HandlerDescription();
hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
- Handler h1 = new PhaseRuleHandlers();
+ Handler h1 = new PhaseRuleHandler();
hm.setHandler(h1);
hm.getRules().setPhaseName("*");
hm.getRules().setPhaseFirst(true);
@@ -123,7 +123,7 @@
HandlerDescription hm = new HandlerDescription();
hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
- Handler h1 = new PhaseRuleHandlers();
+ Handler h1 = new PhaseRuleHandler();
hm.setHandler(h1);
hm.getRules().setPhaseName("*");
hm.getRules().setPhaseFirst(true);
Copied: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandler.java (from r533453, webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandlers.java)
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandler.java?view=diff&rev=533586&p1=webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandlers.java&r1=533453&p2=webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandler.java&r2=533586
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandlers.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandler.java Sun Apr 29 22:21:24 2007
@@ -24,14 +24,16 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.xml.namespace.QName;
+public class PhaseRuleHandler extends AbstractHandler {
+ private static final Log log = LogFactory.getLog(PhaseRuleHandler.class);
+ private String name;
-public class PhaseRuleHandlers extends AbstractHandler implements Handler {
-
- private static final long serialVersionUID = 2941436920684525811L;
+ public PhaseRuleHandler() {
+ }
- private static final Log log = LogFactory.getLog(PhaseRuleHandlers.class);
- private QName name;
+ public PhaseRuleHandler(String name) {
+ this.name = name;
+ }
public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
log.info("I am " + name + " Handler Running :)");
@@ -42,7 +44,7 @@
log.info("I am " + name + " Handler Running :)");
}
- public void setName(QName name) {
+ public void setName(String name) {
this.name = name;
}
Propchange: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTests.java?view=auto&rev=533586
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTests.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTests.java Sun Apr 29 22:21:24 2007
@@ -0,0 +1,627 @@
+package org.apache.axis2.phaserule;
+/*
+ * Copyright 2007 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.DispatchPhase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+import org.apache.axis2.phaseresolver.PhaseException;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.PhaseRule;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ContextFactory;
+import org.apache.axis2.context.ConfigurationContext;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import junit.framework.TestCase;
+
+/**
+ * Test various PhaseRule configurations
+ */
+public class PhaseRuleTests extends TestCase {
+
+ AxisConfiguration axisConfig;
+
+ // Some shared Handlers and HandlerDescriptions
+ // TODO : Factor out shared data for these tests
+
+ public void testBefore() throws AxisFault {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+
+ MessageContext msg = ContextFactory.createMessageContext(
+ new ConfigurationContext(new AxisConfiguration()));
+
+ PhaseHolder ph = new PhaseHolder(phases);
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ ((PhaseRuleHandler) h1).setName("First");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h2 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h2).setName("Second");
+ h2.init(hm1);
+ hm1.setHandler(h2);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("PhaseA");
+ rule1.setBefore("H1");
+ hm1.setRules(rule1);
+ ph.addHandler(hm1);
+
+ ArrayList handlers = p1.getHandlers();
+ Handler handler = (Handler) handlers.get(0);
+ if (handler != h2) {
+ fail("Computed Hnadler order is wrong ");
+ }
+ handler = (Handler) handlers.get(1);
+ if (handler != h1) {
+ fail("Computed Hnadler order is wrong ");
+ }
+ p1.invoke(msg);
+ }
+
+ public void testBeforewithNoFirst() throws AxisFault {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+
+ MessageContext msg = ContextFactory.createMessageContext(
+ new ConfigurationContext(new AxisConfiguration()));
+ PhaseHolder ph = new PhaseHolder(phases);
+
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h2 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h2).setName("Second");
+ h2.init(hm1);
+ hm1.setHandler(h2);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("PhaseA");
+ rule1.setBefore("H1");
+ hm1.setRules(rule1);
+ ph.addHandler(hm1);
+
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ ((PhaseRuleHandler) h1).setName("First");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ ArrayList handlers = p1.getHandlers();
+ Handler handler = (Handler) handlers.get(0);
+ if (handler != h2) {
+ fail("Computed Handler order is wrong ");
+ }
+ handler = (Handler) handlers.get(1);
+ if (handler != h1) {
+ fail("Computed Handler order is wrong ");
+ }
+ p1.invoke(msg);
+ }
+
+ public void testBeforeAfter() throws Exception {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+
+ PhaseHolder ph = new PhaseHolder(phases);
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ PhaseRuleHandler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ h1.setName("First");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h2 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h2).setName("Forth");
+ h2.init(hm1);
+ hm1.setHandler(h2);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("PhaseA");
+ hm1.setRules(rule1);
+ ph.addHandler(hm1);
+
+
+ HandlerDescription hm3 = new HandlerDescription();
+ hm3.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h3 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h3).setName("Second");
+ h3.init(hm3);
+ hm3.setHandler(h3);
+ hm3.setName("H3");
+ PhaseRule rule3 = new PhaseRule();
+ rule3.setPhaseName("PhaseA");
+ rule3.setAfter("H1");
+ hm3.setRules(rule3);
+ ph.addHandler(hm3);
+
+ HandlerDescription hm4 = new HandlerDescription();
+ hm4.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h4 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h4).setName("Third");
+ h4.init(hm4);
+ hm4.setHandler(h4);
+ hm4.setName("H4");
+ PhaseRule rule4 = new PhaseRule();
+ rule4.setPhaseName("PhaseA");
+ rule4.setAfter("H1");
+ rule4.setBefore("H2");
+ hm4.setRules(rule4);
+ ph.addHandler(hm4);
+
+ ArrayList handlers = p1.getHandlers();
+ boolean foundH1 = false;
+ boolean foundH4 = false;
+
+ for (Iterator iterator = handlers.iterator(); iterator.hasNext();) {
+ Handler handler = (Handler) iterator.next();
+ if (h3 == handler) {
+ if (!foundH1)
+ fail("H3 found before H1");
+ }
+ if (h1 == handler)
+ foundH1 = true;
+ if (h2 == handler) {
+ if (!foundH4) {
+ fail("H2 found before H4");
+ }
+ }
+ if (h4 == handler) {
+ if (!foundH1) {
+ fail("H4 found before H1");
+ }
+ foundH4 = true;
+ }
+ }
+ }
+
+ public void testPhaseFirst() throws AxisFault {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+ PhaseHolder ph = new PhaseHolder(phases);
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ ((PhaseRuleHandler) h1).setName("PhaseFirstHandler");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ rule.setPhaseFirst(true);
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h2 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h2).setName("Second Handler");
+ h2.init(hm1);
+ hm1.setHandler(h2);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("PhaseA");
+ rule1.setBefore("H1");
+ hm1.setRules(rule1);
+ try {
+ ph.addHandler(hm1);
+ } catch (PhaseException e) {
+ return;
+ }
+ fail("Succeeded in deploying after PhaseFirst handler!");
+ }
+
+ public void testPhaseLast() throws AxisFault {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+
+ PhaseHolder ph = new PhaseHolder(phases);
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ ((PhaseRuleHandler) h1).setName("PhaseLast");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ rule.setPhaseLast(true);
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h2 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h2).setName("Second Handler");
+ h2.init(hm1);
+ hm1.setHandler(h2);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("PhaseA");
+ rule1.setAfter("H1");
+ hm1.setRules(rule1);
+ try {
+ ph.addHandler(hm1);
+ } catch (PhaseException e) {
+ return;
+ }
+ fail("Succeeded in deploying after PhaseLast handler!");
+ }
+
+ public void testPhaseRules() throws Exception {
+ // TODO : What is this testing exactly?
+ ArrayList inPhase = new AxisConfiguration().getGlobalInFlow();
+ Phase transportIN = new Phase("TransportIn");
+ Phase preDispatch = new Phase("PreDispatch");
+ DispatchPhase dispatchPhase = new DispatchPhase();
+ dispatchPhase.setName("Dispatch");
+
+ inPhase.add(transportIN);
+ inPhase.add(preDispatch);
+ inPhase.add(dispatchPhase);
+
+ PhaseHolder ph = new PhaseHolder(inPhase);
+
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PreDispatch");
+ rule.setPhaseFirst(true);
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h2 = new PhaseRuleHandler();
+ h2.init(hm1);
+ hm1.setHandler(h2);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("PreDispatch");
+ rule1.setAfter("H1");
+ hm1.setRules(rule1);
+ ph.addHandler(hm1);
+
+ HandlerDescription hm2 = new HandlerDescription();
+ hm2.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h3 = new PhaseRuleHandler();
+ h3.init(hm2);
+ hm2.setHandler(h3);
+ hm2.setName("H3");
+ PhaseRule rule2 = new PhaseRule();
+ rule2.setPhaseName("PreDispatch");
+ rule2.setAfter("H1");
+ rule2.setBefore("H2");
+ hm2.setRules(rule2);
+ ph.addHandler(hm2);
+
+ HandlerDescription hm3 = new HandlerDescription();
+ hm3.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h4 = new PhaseRuleHandler();
+ h4.init(hm3);
+ hm3.setHandler(h4);
+ hm3.setName("H4");
+ PhaseRule rule3 = new PhaseRule();
+ rule3.setPhaseName("Dispatch");
+ hm3.setRules(rule3);
+ ph.addHandler(hm3);
+ }
+
+ public void testSingleHandler() throws Exception {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+
+ PhaseHolder ph = new PhaseHolder(phases);
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ ((PhaseRuleHandler) h1).setName("PhaseFirstHandler");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ rule.setPhaseFirst(true);
+ rule.setPhaseLast(true);
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h2 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h2).setName("Second Handler");
+ h2.init(hm1);
+ hm1.setHandler(h2);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("PhaseA");
+ rule1.setAfter("H1");
+ hm1.setRules(rule1);
+ try {
+ ph.addHandler(hm1);
+ } catch (PhaseException e) {
+ // Caught expected Exception
+ return;
+ }
+ fail("This should fail with : can only have one handler, since there is a " +
+ "handler with both phaseFirst and PhaseLast true ");
+ }
+
+ public void testInvalidPhaseFirst() {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+
+ PhaseHolder ph = new PhaseHolder(phases);
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ ((PhaseRuleHandler) h1).setName("PhaseFirstHandler");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ rule.setPhaseFirst(true);
+ rule.setBefore("H2");
+ hm.setRules(rule);
+ try {
+ // This should fail
+ ph.addHandler(hm);
+ fail("Incorrectly added Handler with both PhaseFirst and before name");
+ } catch (PhaseException e) {
+ // Perfect, caught the expected Exception
+ }
+ }
+
+ public void testInvalidPhaseFirst1() {
+ try {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+
+ PhaseHolder ph = new PhaseHolder(phases);
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ ((PhaseRuleHandler) h1).setName("PhaseFirstHandler");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ rule.setPhaseFirst(true);
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h2 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h2).setName("Second Handler");
+ h2.init(hm1);
+ hm1.setHandler(h2);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("PhaseA");
+ rule1.setPhaseFirst(true);
+ hm1.setRules(rule1);
+ ph.addHandler(hm1);
+ fail("This should be faild with PhaseFirst already has been set, cannot have two " +
+ "phaseFirst Handler for same phase ");
+ } catch (AxisFault axisFault) {
+ }
+ }
+
+ public void testPhaseLastErrors() throws Exception {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+
+ PhaseHolder ph = new PhaseHolder(phases);
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ ((PhaseRuleHandler) h1).setName("PhaseFirstHandler");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ rule.setPhaseLast(true);
+ rule.setBefore("H2");
+ hm.setRules(rule);
+ try {
+ ph.addHandler(hm);
+ } catch (PhaseException e) {
+ return;
+ }
+
+ fail("Handler with PhaseLast cannot also have before/after set");
+ }
+
+ public void testInvalidPhaseLast() {
+ try {
+ ArrayList phases = new ArrayList();
+ Phase p1 = new Phase("PhaseA");
+ phases.add(p1);
+ Phase p2 = new Phase("PhaseB");
+ phases.add(p2);
+
+ PhaseHolder ph = new PhaseHolder(phases);
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h1 = new PhaseRuleHandler();
+ h1.init(hm);
+ ((PhaseRuleHandler) h1).setName("PhaseLast");
+ hm.setHandler(h1);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("PhaseA");
+ rule.setPhaseLast(true);
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ Handler h2 = new PhaseRuleHandler();
+ ((PhaseRuleHandler) h2).setName("Second Handler");
+ h2.init(hm1);
+ hm1.setHandler(h2);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("PhaseA");
+ rule1.setPhaseLast(true);
+ hm1.setRules(rule1);
+ ph.addHandler(hm1);
+ fail("This should be faild with Phaselast already has been set, cannot have two " +
+ "phaseLast Handler for same phase ");
+ } catch (AxisFault axisFault) {
+ }
+ }
+
+ public void testInvalidPhaseRule() {
+ try {
+ axisConfig = new AxisConfiguration();
+ ArrayList inPhase = axisConfig.getGlobalInFlow();
+
+ inPhase.add("global");
+ axisConfig.setInFaultPhases(inPhase);
+ axisConfig.setOutFaultPhases(inPhase);
+ axisConfig.setGlobalOutPhase(inPhase);
+
+ Handler han = null;
+ PhaseHolder ph = new PhaseHolder(inPhase);
+
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ hm.setHandler(han);
+ hm.setName("H1");
+ PhaseRule rule = new PhaseRule();
+ rule.setPhaseName("global");
+ rule.setPhaseFirst(true);
+ rule.setPhaseLast(true);
+ hm.setRules(rule);
+ ph.addHandler(hm);
+
+ HandlerDescription hm1 = new HandlerDescription();
+ hm1.setClassName("org.apache.axis2.phaserule.PhaseRuleHandler");
+ hm1.setHandler(han);
+ hm1.setName("H2");
+ PhaseRule rule1 = new PhaseRule();
+ rule1.setPhaseName("global");
+ rule1.setAfter("H1");
+ hm1.setRules(rule1);
+ ph.addHandler(hm1);
+
+ fail("this must failed gracefully with PhaseException ");
+ } catch (Exception e) {
+ }
+ }
+
+ /**
+ * This test makes sure we can't add a Handler to a Phase when the
+ * before and after constraints don't make sense.
+ *
+ * @throws Exception if there's an error
+ */
+ public void testBadBeforeAndAfters() throws Exception {
+ PhaseRuleHandler h1 = new PhaseRuleHandler("a");
+ HandlerDescription hd = new HandlerDescription("a");
+ h1.init(hd);
+
+ PhaseRuleHandler h2 = new PhaseRuleHandler("c");
+ hd = new HandlerDescription("c");
+ h2.init(hd);
+
+ Phase phase = new Phase();
+ phase.addHandler(h1);
+ phase.addHandler(h2);
+
+ PhaseRule badRule = new PhaseRule();
+ badRule.setBefore("a");
+ badRule.setAfter("c");
+
+ hd = new HandlerDescription("b");
+ PhaseRuleHandler h3 = new PhaseRuleHandler("b");
+ h3.init(hd);
+
+ hd.setHandler(h3);
+ hd.setRules(badRule);
+ try {
+ phase.addHandler(hd);
+ fail("Bad PhaseRule was accepted!");
+ } catch (PhaseException e) {
+ // Correct - exception caught
+ }
+ }
+}
Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java?view=diff&rev=533586&r1=533585&r2=533586
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PreDispatchPhaseRuleTest.java Sun Apr 29 22:21:24 2007
@@ -54,7 +54,7 @@
HandlerDescription pre = new HandlerDescription();
pre.setClassName("org.apache.axis2.handlers.AbstractHandler");
- Handler h1 = new PhaseRuleHandlers();
+ Handler h1 = new PhaseRuleHandler();
h1.init(pre);
pre.setHandler(h1);
pre.setName("pre-H1");
@@ -65,7 +65,7 @@
HandlerDescription pre2 = new HandlerDescription();
pre2.setClassName("org.apache.axis2.handlers.AbstractHandler");
- Handler h2 = new PhaseRuleHandlers();
+ Handler h2 = new PhaseRuleHandler();
h2.init(pre2);
pre2.setHandler(h2);
pre2.setName("dispatch");
@@ -77,7 +77,7 @@
HandlerDescription hm = new HandlerDescription();
hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
- Handler h3 = new PhaseRuleHandlers();
+ Handler h3 = new PhaseRuleHandler();
h3.init(hm);
hm.setHandler(h3);
hm.setName("pre-H2");
@@ -89,7 +89,7 @@
HandlerDescription hm1 = new HandlerDescription();
hm1.setClassName("org.apache.axis2.handlers.AbstractHandler");
- Handler h4 = new PhaseRuleHandlers();
+ Handler h4 = new PhaseRuleHandler();
h4.init(hm1);
hm1.setHandler(h4);
hm1.setName("pre-H3");
@@ -101,7 +101,7 @@
HandlerDescription hm2 = new HandlerDescription();
hm2.setClassName("org.apache.axis2.handlers.AbstractHandler");
- Handler h5 = new PhaseRuleHandlers();
+ Handler h5 = new PhaseRuleHandler();
h5.init(hm2);
hm2.setHandler(h5);
hm2.setName("H3");
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org