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 di...@apache.org on 2003/10/27 20:56:19 UTC
cvs commit: ws-axis/java/test/wsdd TestJAXRPCHandlerInfoChain.java PackageTests.java
dims 2003/10/27 11:56:19
Modified: java/src/org/apache/axis/handlers HandlerChainImpl.java
HandlerInfoChainFactory.java
java/src/org/apache/axis MessageContext.java
java/test/wsdd PackageTests.java
Added: java/test/wsdd TestJAXRPCHandlerInfoChain.java
Log:
Fix and test case for Bug 24142 - Roles declared in a HandlerInfoChain are not passed to handler
from bayer@oio.de (Thomas Bayer)
Revision Changes Path
1.12 +7 -2 ws-axis/java/src/org/apache/axis/handlers/HandlerChainImpl.java
Index: HandlerChainImpl.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/handlers/HandlerChainImpl.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- HandlerChainImpl.java 27 Jun 2003 18:35:05 -0000 1.11
+++ HandlerChainImpl.java 27 Oct 2003 19:56:19 -0000 1.12
@@ -82,7 +82,10 @@
}
public void setRoles(String[] roles) {
- _roles = roles;
+ if(roles != null) {
+ // use clone for cheap array copy
+ _roles = (String[])roles.clone();
+ }
}
public void init(Map map) {
@@ -90,7 +93,6 @@
}
protected List handlerInfos = new ArrayList();
- String[] roles = null;
public HandlerChainImpl() {
}
@@ -127,6 +129,9 @@
}
public boolean handleRequest(MessageContext _context) {
+
+ ((org.apache.axis.MessageContext)_context).setRoles(getRoles());
+
SOAPMessageContext context = (SOAPMessageContext) _context;
falseIndex = -1;
1.6 +1 -0 ws-axis/java/src/org/apache/axis/handlers/HandlerInfoChainFactory.java
Index: HandlerInfoChainFactory.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/handlers/HandlerInfoChainFactory.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- HandlerInfoChainFactory.java 22 Apr 2003 19:34:39 -0000 1.5
+++ HandlerInfoChainFactory.java 27 Oct 2003 19:56:19 -0000 1.6
@@ -78,6 +78,7 @@
public HandlerChain createHandlerChain() {
HandlerChain hc = new HandlerChainImpl(handlerInfos);
+ hc.setRoles(getRoles());
return hc;
}
1.137 +10 -1 ws-axis/java/src/org/apache/axis/MessageContext.java
Index: MessageContext.java
===================================================================
RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/MessageContext.java,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -r1.136 -r1.137
--- MessageContext.java 5 Oct 2003 07:09:50 -0000 1.136
+++ MessageContext.java 27 Oct 2003 19:56:19 -0000 1.137
@@ -190,6 +190,11 @@
private String encodingStyle = Use.ENCODED.getEncoding();
private boolean useSOAPAction = false;
private String SOAPActionURI = null;
+
+ /**
+ * SOAP Actor roles
+ */
+ private String[] roles;
/** Our SOAP namespaces and such */
private SOAPConstants soapConstants = Constants.DEFAULT_SOAP_VERSION;
@@ -1145,7 +1150,11 @@
*/
public String[] getRoles() {
//TODO: Flesh this out.
- return null;
+ return roles;
+ }
+
+ public void setRoles( String[] roles) {
+ this.roles = roles;
}
/**
1.12 +1 -0 ws-axis/java/test/wsdd/PackageTests.java
Index: PackageTests.java
===================================================================
RCS file: /home/cvs/ws-axis/java/test/wsdd/PackageTests.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- PackageTests.java 11 Dec 2002 22:40:19 -0000 1.11
+++ PackageTests.java 27 Oct 2003 19:56:19 -0000 1.12
@@ -24,6 +24,7 @@
suite.addTestSuite(TestStructure.class);
suite.addTestSuite(TestBadWSDD.class);
suite.addTestSuite(TestAdminService.class);
+ suite.addTestSuite(TestJAXRPCHandlerInfoChain.class);
//suite.addTestSuite(TestXSD.class);
return suite;
1.1 ws-axis/java/test/wsdd/TestJAXRPCHandlerInfoChain.java
Index: TestJAXRPCHandlerInfoChain.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Axis" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package test.wsdd;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.Handler;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.xml.rpc.holders.StringHolder;
import junit.framework.TestCase;
import org.apache.axis.MessageContext;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.configuration.XMLStringProvider;
import org.apache.axis.deployment.wsdd.WSDDConstants;
import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.server.AxisServer;
import org.apache.axis.transport.local.LocalTransport;
import org.w3c.dom.NodeList;
/**
* Tests
* - if roles declared in handlerInfoChains are passed to the service method via
* the MessageContext
* - if parameters are passed to the handler
* - if the callback methods of an JAXRPC handler are called
*
* @author Thomas Bayer (bayer@oio.de)
*/
public class TestJAXRPCHandlerInfoChain extends TestCase implements Handler {
static final String SERVICE_NAME = "JAXRPCHandlerService";
static final String tns = "http://axis.apache.org/test";
static final String ROLE_ONE = "http://test.role.one";
static final String ROLE_TWO = "http://test.role.two";
AxisServer server;
LocalTransport transport;
static boolean roleOneFound = false;
static boolean roleTwoFound = false;
static boolean initCalled = false;
static boolean handleRequestCalled = false;
static boolean handleResponseCalled = false;
static boolean methodCalled = false;
static final String wsdd =
"<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\" "
+ "xmlns:java=\""
+ WSDDConstants.URI_WSDD_JAVA
+ "\">\n"
+ " <service name=\""
+ SERVICE_NAME
+ "\" "
+ "provider=\"java:RPC\">\n"
+ " <parameter name=\"className\" value=\"test.wsdd.TestJAXRPCHandlerInfoChain\"/>"
+ " <handlerInfoChain>"
+ " <handlerInfo classname=\"test.wsdd.TestJAXRPCHandlerInfoChain\">"
+ " <parameter name=\"param1\" value=\"hossa\"/>"
+ " </handlerInfo>"
+ " <role soapActorName=\"" + ROLE_ONE + "\"/>"
+ " <role soapActorName=\"" + ROLE_TWO + "\"/>"
+ " </handlerInfoChain>"
+ " </service>\n"
+ "</deployment>";
public TestJAXRPCHandlerInfoChain() {
super("test");
}
public TestJAXRPCHandlerInfoChain(String s) {
super(s);
}
protected void setUp() throws Exception {
transport = new LocalTransport(new AxisServer(new XMLStringProvider(wsdd)));
transport.setRemoteService(SERVICE_NAME);
}
public void init(HandlerInfo handlerInfo) {
assertEquals("hossa", (String) handlerInfo.getHandlerConfig().get("param1"));
initCalled = true;
}
public void destroy() {
}
public boolean handleRequest(javax.xml.rpc.handler.MessageContext mc) {
String[] roles = ((SOAPMessageContext) mc).getRoles();
for (int i = 0; i < roles.length; i++) {
if (ROLE_ONE.equals(roles[i]))
roleOneFound = true;
if (ROLE_TWO.equals(roles[i]))
roleTwoFound = true;
}
handleRequestCalled = true;
return true;
}
public QName[] getHeaders() {
return null;
}
public boolean handleResponse(javax.xml.rpc.handler.MessageContext mc) {
handleResponseCalled = true;
return true;
}
public boolean handleFault(javax.xml.rpc.handler.MessageContext mc) {
return true;
}
public void doSomething() {
methodCalled = true;
}
public void testJAXRPCHandlerRoles() throws Exception {
Call call = new Call(new Service());
call.setTransport(transport);
call.invoke("doSomething", null);
assertTrue( roleOneFound);
assertTrue( roleTwoFound);
assertTrue( initCalled);
assertTrue( handleRequestCalled);
assertTrue( handleResponseCalled);
assertTrue( methodCalled);
}
}