You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by mm...@apache.org on 2004/09/10 23:18:13 UTC
svn commit: rev 43689 - in incubator/beehive/trunk/wsm: . src/runtime/org/apache/beehive/wsm/axis src/runtime/org/apache/beehive/wsm/axis/badtiger
Author: mmerz
Date: Fri Sep 10 14:18:11 2004
New Revision: 43689
Added:
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/badtiger/
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/badtiger/EnumWrapper.java
Modified:
incubator/beehive/trunk/wsm/build.xml
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/AnnotatedJWSHandler.java
incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/AxisHook.java
Log:
Added SOAPBinding annotation support to the AnnotatedJWSHandler and AxisHook.
Since AXIS 1.2 uses a package name containing the "enum" keyword, the EnumWrapper
class was added in the axis/badtiger package and is built using the "source=1.4"
compiler flag.
Contributor: Jonathan Colwell
Modified: incubator/beehive/trunk/wsm/build.xml
==============================================================================
--- incubator/beehive/trunk/wsm/build.xml (original)
+++ incubator/beehive/trunk/wsm/build.xml Fri Sep 10 14:18:11 2004
@@ -165,10 +165,19 @@
</target>
<target name="axis" depends="runtime" if="isJDK15">
+ <!-- Build the badtiger classes using source=1.4 compile flag -->
+ <echo message="BadTiger build"/>
+ <javac destdir="${runtime.classes}" classpathref="axis.classpath" source="1.4" debug="on">
+ <src path="${runtime.dir}"/>
+ <include name="**/axis/badtiger/**"/>
+ </javac>
+
<!-- Build the axis classes -->
+ <echo message="AXIS build"/>
<javac destdir="${runtime.classes}" classpathref="axis.classpath" source="1.5" debug="on">
<src path="${runtime.dir}"/>
<include name="**/axis/**"/>
+ <exclude name="**/axis/badtiger/**"/>
</javac>
</target>
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/AnnotatedJWSHandler.java
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/AnnotatedJWSHandler.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/AnnotatedJWSHandler.java Fri Sep 10 14:18:11 2004
@@ -69,7 +69,7 @@
*
* @author Jonathan Colwell (jcolwell@bea.com)
*
- * but most of the code was written by:
+ * but most of the original code was written by:
* @author Glen Daniels (gdaniels@allaire.com)
* @author Doug Davis (dug@us.ibm.com)
* @author Sam Ruby (rubys@us.ibm.com)
@@ -95,7 +95,7 @@
/* Grab the *.jws filename from the context - should have been */
/* placed there by another handler (ie. HTTPActionHandler) */
/***************************************************************/
- String jwsFile = realpath;
+ String jwsFile = realpath;
String rel = msgContext.getStrProp(Constants.MC_RELATIVE_PATH);
// Check for file existance, report error with
@@ -274,7 +274,9 @@
// Take the setting for the scope option from the handler
// parameter named "scope"
String scope = (String)getOption(RPCProvider.OPTION_SCOPE);
- if (scope == null) scope = "Request";
+ if (scope == null) {
+ scope = "Request";
+ }
rpc.setOption(RPCProvider.OPTION_SCOPE, scope);
ServiceDesc sd = AxisHook.createServiceDesc(wsm, cl);
@@ -293,6 +295,7 @@
}
rpc.setOption(RPCProvider.OPTION_ALLOWEDMETHODS, sb.toString());
rpc.setOption(RPCProvider.OPTION_WSDL_PORTTYPE, wsm.getWsName());
+ rpc.setOption(RPCProvider.OPTION_WSDL_SERVICEPORT, wsm.getWsName());
rpc.setOption(RPCProvider.OPTION_WSDL_SERVICEELEMENT,
wsm.getWsServiceName());
rpc.setOption(RPCProvider.OPTION_WSDL_TARGETNAMESPACE,
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/AxisHook.java
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/AxisHook.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/AxisHook.java Fri Sep 10 14:18:11 2004
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.beehive.wsm.axis;
import java.lang.reflect.Method;
@@ -29,9 +28,11 @@
import org.apache.axis.description.JavaServiceDesc;
import org.apache.axis.description.ParameterDesc;
import org.apache.axis.description.OperationDesc;
+import org.apache.beehive.wsm.axis.badtiger.EnumWrapper;
import org.apache.beehive.wsm.jsr181.model.WebServiceTYPEMetadata;
import org.apache.beehive.wsm.jsr181.model.WebServiceMETHODMetadata;
import org.apache.beehive.wsm.jsr181.model.WebServicePARAMETERMetadata;
+import org.apache.beehive.wsm.jsr181.model.SOAPBindingInfo;
import javax.jws.WebParam;
@@ -65,6 +66,10 @@
String targetNamespace = wsm.getWsTargetNamespace();
sd.setDefaultNamespace(targetNamespace);
+
+
+ SOAPBindingInfo sbi = wsm.getSoapBinding();
+ configureSoapBinding(sd, sbi);
Collection<WebServiceMETHODMetadata> methods = wsm.getMethods();
List<String> allowedMethods = new ArrayList<String>();
@@ -82,11 +87,15 @@
allowedMethods.add(javaMethodName);
od.setSoapAction(meth.getWmAction());
-
- od.setReturnQName(new QName(meth.getWrName()));
-
- od.setReturnClass(meth.getJavaReturnType());
- // od.setReturnHeader(
+
+ if (meth.isOneWay()) {
+ od.setReturnClass(java.lang.Void.TYPE);
+ }
+ else {
+ od.setReturnQName(new QName(meth.getWrName()));
+ od.setReturnClass(meth.getJavaReturnType());
+ //od.setReturnHeader(
+ }
List<WebServicePARAMETERMetadata> parameters = meth.getParams();
List<Class> paramClasses = new ArrayList<Class>();
@@ -135,6 +144,50 @@
sd.setAllowedMethods(allowedMethods);
return sd;
+ }
+
+ protected static void configureSoapBinding(ServiceDesc sd,
+ SOAPBindingInfo sbi)
+ {
+
+ javax.jws.soap.SOAPBinding.Style style
+ = javax.jws.soap.SOAPBinding.Style.DOCUMENT;
+ javax.jws.soap.SOAPBinding.Use use
+ = javax.jws.soap.SOAPBinding.Use.LITERAL;
+ javax.jws.soap.SOAPBinding.ParameterStyle paramStyle
+ = javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED;
+
+ if (sbi != null) {
+ style = sbi.getStyle();
+ use = sbi.getUse();
+ paramStyle = sbi.getParameterStyle();
+ }
+
+ if (style == style.RPC) {
+ sd.setStyle(EnumWrapper.RPC);
+ if (use == use.ENCODED) {
+ sd.setUse(EnumWrapper.ENCODED);
+ }
+ else {
+ sd.setUse(EnumWrapper.LITERAL);
+ }
+ }
+ else {
+ /*
+ * since DOCUMENT ENCODED is not valid so
+ * force to use LITERAL
+ */
+ sd.setUse(EnumWrapper.LITERAL);
+
+ // check if this is a wrapped document literal
+ if (paramStyle == paramStyle.WRAPPED) {
+ sd.setStyle(EnumWrapper.WRAPPED);
+ }
+ else {
+ // just regular document style
+ sd.setStyle(EnumWrapper.DOCUMENT);
+ }
+ }
}
}
Added: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/badtiger/EnumWrapper.java
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/badtiger/EnumWrapper.java Fri Sep 10 14:18:11 2004
@@ -0,0 +1,42 @@
+/*
+ * EnumWrapper.java
+ *
+ * Copyright 2001-2004 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.
+ *
+ */
+package org.apache.beehive.wsm.axis.badtiger;
+
+import org.apache.axis.enum.Style;
+import org.apache.axis.enum.Use;
+
+
+/*******************************************************************************
+ * This class provides a way to work with some of the Classes from AXIS with
+ * enum in the package. Building this package using source=1.4 provides a
+ * cheesy solution to this annoying problem.
+ *
+ * @author Jonathan Colwell
+ */
+public class EnumWrapper {
+
+ public static final Style DOCUMENT = Style.DOCUMENT;
+ public static final Style RPC = Style.RPC;
+ public static final Style WRAPPED = Style.WRAPPED;
+ public static final Style MESSAGE = Style.MESSAGE;
+
+ public static final Use ENCODED = Use.ENCODED;
+ public static final Use LITERAL = Use.LITERAL;
+}