You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by cs...@apache.org on 2006/01/23 17:26:17 UTC
svn commit: r371574 - in /beehive/trunk/system-controls:
src/webservice/control/org/apache/beehive/controls/system/webservice/generator/
src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/
src/webservice/control/org/apache/beeh...
Author: cschoett
Date: Mon Jan 23 08:25:59 2006
New Revision: 371574
URL: http://svn.apache.org/viewcvs?rev=371574&view=rev
Log:
Added serialization test to wsc drt, also some cleanup done on typemapping from this weekend.
Added:
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/GenericHolder.java (with props)
beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/WscSerializationTest.java (with props)
Modified:
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ParameterInfo.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/HolderUtils.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/TypeRegistrar.java
beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java
beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisCall.java
beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java
beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/holders/HolderUtilsTest.java
beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitBareWsdlTest.java
beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitWrapWsdlTest.java
beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromRpcLitWsdlTest.java
beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/doclitwrapped/pojo/HeaderObjectDocLitEndpointTest.java
beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpcenc/axisgen/HeaderObjectRpcEncEndpointTest.java
beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpclit/pojo/HeaderObjectRpcLitEndpointTest.java
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ParameterInfo.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ParameterInfo.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ParameterInfo.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ParameterInfo.java Mon Jan 23 08:25:59 2006
@@ -18,6 +18,8 @@
package org.apache.beehive.controls.system.webservice.generator;
+import org.apache.beehive.controls.system.webservice.utils.HolderUtils;
+
import javax.xml.namespace.QName;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -85,47 +87,11 @@
*/
private String resolveParameterType(String typeName, ParamMode paramMode) {
if (paramMode == ParamMode.INOUT || paramMode == ParamMode.OUT)
- return getHolderForType(typeName);
+ return HolderUtils.getHolderForClass(typeName);
else {
if (typeName.startsWith("java.lang."))
typeName = typeName.substring(typeName.lastIndexOf('.')+1);
return typeName;
}
- }
-
- /**
- * Find the holder type for a parameter with a mode of OUT or INOUT.
- * @param typeName the class name of the parameter
- * @return A String containing the fully qualified holder class name.
- */
- private String getHolderForType(String typeName) {
- /* todo: arbitrary array support */
- if (typeName.equals(int.class.getName()))
- return "javax.xml.rpc.holders.IntHolder";
- else if (typeName.equals(boolean.class.getName()))
- return "javax.xml.rpc.holders.BooleanHolder";
- else if (typeName.equals("[B"))
- return "javax.xml.rpc.holders.ByteArrayHolder";
- else if (typeName.equals(byte.class.getName()))
- return "javax.xml.rpc.holders.ByteHolder";
- else if (typeName.equals(double.class.getName()))
- return "javax.xml.rpc.holders.DoubleHolder";
- else if (typeName.equals(float.class.getName()))
- return "javax.xml.rpc.holders.FloatHolder";
- else if (typeName.equals(long.class.getName()))
- return "javax.xml.rpc.holders.LongHolder";
- else if (typeName.equals(short.class.getName()))
- return "javax.xml.rpc.holders.ShortHolder";
- else if (typeName.equals(String.class.getName()))
- return "javax.xml.rpc.holders.StringHolder";
- else if (typeName.equals(BigDecimal.class.getName()))
- return "javax.xml.rpc.holders.BigDecimalHolder";
- else if (typeName.equals(BigInteger.class.getName()))
- return "javax.xml.rpc.holders.BigIntegerHolder";
- else if (typeName.equals(Calendar.class.getName()))
- return "javax.xml.rpc.holders.CalendarHolder";
- else if (typeName.equals(QName.class.getName()))
- return "javax.xml.rpc.holders.QNameHolder";
- else return "org.apache.beehive.wsm.util.GenericHolder<" + typeName + ">";
}
}
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/jaxrpc/GenericCall.java Mon Jan 23 08:25:59 2006
@@ -21,6 +21,7 @@
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.holders.Holder;
+import javax.jws.soap.SOAPBinding;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
@@ -67,6 +68,11 @@
protected Call _call;
/**
+ * Type registrar, set by concrete implementation of this class.
+ */
+ protected TypeRegistrar _typeRegistrar;
+
+ /**
* Wsdl operation object model this call was configured with.
*/
private WsdlOperation _op;
@@ -169,18 +175,6 @@
WsdlOperation.SOAPBindingStyle style, WsdlOperation.SOAPBindingUse use);
/**
- * Register a type.
- *
- * @param typeClass Class of type to register.
- * @param xmlName XML type of class to register.
- * @param style SOAPBinding style.
- * @param use SOAPBinding use.
- * @return QName of the registered type.
- */
- abstract protected QName registerType(Class typeClass, QName xmlName,
- WsdlOperation.SOAPBindingStyle style, WsdlOperation.SOAPBindingUse use);
-
- /**
* Set the service port name for the call (abstract). May be necessary to support JAX-RPC handlers.
*
* @param portQName QName of the service port.
@@ -190,6 +184,31 @@
/* ----------------------------- Protected Methods ------------------------- */
/**
+ * Register a type.
+ *
+ * @param typeClass
+ * @param xmlName
+ * @param style
+ * @param use
+ * @return QName
+ */
+ protected QName registerType(Class typeClass,
+ QName xmlName,
+ WsdlOperation.SOAPBindingStyle style,
+ WsdlOperation.SOAPBindingUse use) {
+ if (_typeRegistrar == null) {
+ throw new RuntimeException("TypeRegistrar was not initialized correctly.");
+ }
+
+ SOAPBinding.Style jaxrpcStyle =
+ (style == WsdlOperation.SOAPBindingStyle.DOCUMENT) ? SOAPBinding.Style.DOCUMENT : SOAPBinding.Style.RPC;
+ SOAPBinding.Use jaxrpcUse =
+ (use == WsdlOperation.SOAPBindingUse.LITERAL) ? SOAPBinding.Use.LITERAL : SOAPBinding.Use.ENCODED;
+
+ return _typeRegistrar.registerType(typeClass, xmlName, jaxrpcStyle, jaxrpcUse);
+ }
+
+ /**
* Mark this call as a oneway call (no return value). See JSR181 specification for details.
*
* @param isOneWay true if one way.
@@ -283,13 +302,15 @@
return pList.toArray();
}
+ /* ----------------------------- Private Methods ------------------------- */
+
/**
* After a Call has been invoked it is necessary to map values for OUT and INOUT mode parameters back
* into their Holders from the arg list to the Call.
*
* @param args The argument list which the Call was invoked with.
*/
- protected void setHolderValues(Object[] args) {
+ private void setHolderValues(Object[] args) {
Map outParams = _call.getOutputParams();
if (outParams.isEmpty()) {
return;
@@ -320,8 +341,6 @@
}
}
- /* ----------------------------- Protected Methods ------------------------- */
-
/**
* Set the parameter list for this call.
*
@@ -354,7 +373,7 @@
WsdlOpParameter.ParameterMode mode = opParam.getMode();
if (mode != WsdlOpParameter.ParameterMode.IN && Holder.class.isAssignableFrom(javaType)) {
- javaType = TypeRegistrar.getHoldersValueClass(genericType);
+ javaType = HolderUtils.getHoldersValueClass(genericType);
}
QName registeredTypeQName = registerType(javaType, opParam.getXmlType(),
Added: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/GenericHolder.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/GenericHolder.java?rev=371574&view=auto
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/GenericHolder.java (added)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/GenericHolder.java Mon Jan 23 08:25:59 2006
@@ -0,0 +1,42 @@
+/*
+ *
+ * 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.controls.system.webservice.utils;
+
+import javax.xml.rpc.holders.Holder;
+
+/**
+ * Class that supports holding a value of some generic type.
+ */
+public class GenericHolder<T>
+ implements Holder {
+
+ public T value;
+
+ // The blank constructore is made private so that the value is always set in the holder. The type of the value
+ // is used by the service control to determine the type of class conversion it would need to stuff value to the
+ // holder from the soap message result. The only way I have been able to get the type of the Value is by
+ // looking at its class, which requires that for the value class to have been instantiated.
+ private GenericHolder() {
+ }
+
+ public GenericHolder(T value) {
+ this.value = value;
+ }
+}
Propchange: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/GenericHolder.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/HolderUtils.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/HolderUtils.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/HolderUtils.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/HolderUtils.java Mon Jan 23 08:25:59 2006
@@ -18,21 +18,65 @@
package org.apache.beehive.controls.system.webservice.utils;
import javax.xml.rpc.holders.Holder;
+import javax.xml.namespace.QName;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
+import java.lang.reflect.Type;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.GenericArrayType;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
-import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Map;
+import java.math.BigDecimal;
+import java.math.BigInteger;
/**
* Utilities for moving values into and out of jaxrpc Holders.
*/
public class HolderUtils {
+ private static Map<String, String> _holderMappings;
+ static {
+ _holderMappings = new HashMap<String, String>();
+ _holderMappings.put(BigDecimal.class.getName(), "javax.xml.rpc.holders.BigDecimalHolder");
+ _holderMappings.put(BigInteger.class.getName(), "javax.xml.rpc.holders.BigIntegerHolder");
+ _holderMappings.put(boolean.class.getName(), "javax.xml.rpc.holders.BooleanHolder");
+ _holderMappings.put(Boolean.class.getName(), "javax.xml.rpc.holders.BooleanWrapperHolder");
+ _holderMappings.put(byte.class.getName(), "javax.xml.rpc.holders.ByteHolder");
+ _holderMappings.put(Byte.class.getName(), "javax.xml.rpc.holders.ByteWrapperHolder");
+ _holderMappings.put(Calendar.class.getName(), "javax.xml.rpc.holders.CalendarHolder");
+ _holderMappings.put(double.class.getName(), "javax.xml.rpc.holders.DoubleHolder");
+ _holderMappings.put(Double.class.getName(), "javax.xml.rpc.holders.DoubleWrapperHolder");
+ _holderMappings.put(float.class.getName(), "javax.xml.rpc.holders.FloatHolder");
+ _holderMappings.put(Float.class.getName(), "javax.xml.rpc.holders.FloatWrapperHolder");
+ _holderMappings.put(Integer.class.getName(), "javax.xml.rpc.holders.IntegerWrapperHolder");
+ _holderMappings.put(int.class.getName(), "javax.xml.rpc.holders.IntHolder");
+ _holderMappings.put(long.class.getName(), "javax.xml.rpc.holders.LongHolder");
+ _holderMappings.put(Long.class.getName(), "javax.xml.rpc.holders.LongWrapperHolder");
+ _holderMappings.put(QName.class.getName(), "javax.xml.rpc.holders.QNameHolder");
+ _holderMappings.put(short.class.getName(), "javax.xml.rpc.holders.ShortHolder");
+ _holderMappings.put(Short.class.getName(), "javax.xml.rpc.holders.ShortWrapperHolder");
+ _holderMappings.put(String.class.getName(), "javax.xml.rpc.holders.StringHolder");
+ }
+
+ /**
+ * Attempt to map a class name to a jax-rpc holder type. If a match cannot be found map
+ * to the GenericHolder class.
+ * @param className Name of class.
+ * @return String
+ */
+ public static String getHolderForClass(String className) {
+ if (_holderMappings.containsKey(className)) {
+ return _holderMappings.get(className);
+ }
+ else {
+ return "org.apache.beehive.controls.system.webservice.utils.GenericHolder<" + className + ">";
+ }
+ }
+
/**
* Stuff a value into a holder class.
*
@@ -62,6 +106,49 @@
Object convertedValue = convertToHolderType(value, classOfValueFieldInHolder);
setFieldInObject(valueField, holder, convertedValue);
+ }
+
+ /**
+ * Type the class of the Holder's value field.
+ *
+ * @param t Holder type.
+ * @return Class of the holder's value field.
+ */
+ public static Class getHoldersValueClass(Type t) {
+ Class res = null;
+
+ if (t instanceof ParameterizedType) {
+ ParameterizedType pt = (ParameterizedType) t;
+ Type raw = pt.getRawType();
+
+ if (GenericHolder.class.isAssignableFrom((Class) raw)) {
+ Type[] typeArgs = pt.getActualTypeArguments();
+ if (typeArgs[0] instanceof GenericArrayType) {
+ Class arrayElementType = (Class) ((GenericArrayType) typeArgs[0]).getGenericComponentType();
+ res = Array.newInstance(arrayElementType, 0).getClass();
+ }
+ else {
+ res = (Class) typeArgs[0];
+ }
+ }
+ else {
+ throw new RuntimeException("Invalid parameterized type for holder: " + t);
+ }
+ }
+ else if (t instanceof Class) {
+ if (Holder.class.isAssignableFrom((Class) t)) {
+ Field[] publicFields = ((Class) t).getFields();
+ for (int i = 0; i < publicFields.length; i++) {
+ if (publicFields[i].getName().equals("value")) {
+ return publicFields[i].getType();
+ }
+ }
+ }
+ else {
+ throw new RuntimeException("Invalid class. Type: " + t + " is not a holder.");
+ }
+ }
+ return res;
}
/**
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/TypeRegistrar.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/TypeRegistrar.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/TypeRegistrar.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/utils/TypeRegistrar.java Mon Jan 23 08:25:59 2006
@@ -19,219 +19,146 @@
*/
package org.apache.beehive.controls.system.webservice.utils;
-import java.io.File;
-import java.lang.reflect.Array;
-import java.lang.reflect.Field;
-import java.lang.reflect.GenericArrayType;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.rmi.Remote;
+import org.apache.beehive.wsm.databinding.BindingLookupStrategy;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import javax.jws.soap.SOAPBinding;
import javax.xml.namespace.QName;
import javax.xml.rpc.encoding.TypeMapping;
import javax.xml.rpc.encoding.XMLType;
-import javax.xml.rpc.holders.Holder;
-
-import org.apache.beehive.wsm.databinding.BindingLookupStrategy;
-import org.apache.beehive.wsm.util.GenericHolder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.io.File;
+import java.rmi.Remote;
+/**
+ * Abstract base class for registering types with underlying JAX-RPC client implementation.
+ */
public abstract class TypeRegistrar {
- private static Log LOGGER = LogFactory.getLog(TypeRegistrar.class);
+ private static final Log LOGGER = LogFactory.getLog(TypeRegistrar.class);
+ private static Class XMLOBJECT_CLASS;
+
+ // check to see if xmlbeans is present
+ static {
+ try {
+ XMLOBJECT_CLASS = Class.forName("org.apache.xmlbeans.XmlObject");
+ }
+ catch (ClassNotFoundException e) {
+ // just means xmlbeans is not present at runtime.
+ XMLOBJECT_CLASS = null;
+ }
+ }
- /* todo: need to figure out how to protect these since they're used by subclasses */
- protected TypeMapping mTypeMapping;
- protected BindingLookupStrategy _lookupStrategy;
+ protected final TypeMapping _typeMapping;
+ private final BindingLookupStrategy _lookupStrategy;
/**
+ * Create a new TypeRegistrar.
+ *
+ * @param typeMapping
+ * @param lookupStrategy
*/
- public TypeRegistrar(TypeMapping typeMapping, BindingLookupStrategy lookupStrategy) {
- super();
- mTypeMapping = typeMapping;
- this._lookupStrategy = lookupStrategy;
+ protected TypeRegistrar(TypeMapping typeMapping, BindingLookupStrategy lookupStrategy) {
+ _typeMapping = typeMapping;
+ _lookupStrategy = lookupStrategy;
}
/**
+ * Register a type.
+ *
+ * @param cls Class to register.
+ * @param xmlType XmlType of the class.
+ * @param style Style of the web service.
+ * @param use Use of the web service.
+ * @return QName of the registered type.
*/
- public abstract QName getVoidType();
+ public QName registerType(Class cls, QName xmlType, SOAPBinding.Style style, SOAPBinding.Use use) {
- public QName registerType(Class cls, SOAPBinding.Style style, SOAPBinding.Use use) {
- QName q;
- if(SOAPBinding.Use.ENCODED == use && cls.isArray()) {
- q = _lookupStrategy.class2qname(cls.getComponentType());
- }
- else {
- q = _lookupStrategy.class2qname(cls);
+ LOGGER.debug("Register class: " + cls.getCanonicalName() + " qName: " + xmlType);
+ if (xmlType == null) {
+ throw new RuntimeException("Invalid registeration request: xmlType is null!");
}
- return registerType(cls, q, style, use);
- }
-
- public QName registerType(Class cls, QName q, SOAPBinding.Style style, SOAPBinding.Use use) {
- try {
- LOGGER.debug("Register class: " + cls.getCanonicalName() + " qName: " + q);
- if(Void.TYPE.equals(cls))
- return null;
+ if (_typeMapping.isRegistered(cls, xmlType)) {
+ return xmlType;
+ }
- QName builtInQName = getBuiltInTypeQname(cls);
- if(builtInQName != null)
- return builtInQName;
-
- if(q == null)
- throw new RuntimeException("Invalid registeration requestion qname is null");
-
- if(cls.isArray()) {
- if (SOAPBinding.Use.ENCODED == use) {
- if(!classIsRegistered(cls, q)) {
- registerClassAsSoapEncodedArray(cls, q);
- }
- } else {
- q = registerType(cls.getComponentType(), q, style, use);
- if (SOAPBinding.Style.RPC == style) {
- q = XMLType.SOAP_ARRAY;
- }
- }
+ if (cls.isArray()) {
+ if (SOAPBinding.Use.ENCODED == use) {
+ registerAsSoapEncodedArray(cls, xmlType, _lookupStrategy.class2qname(cls.getComponentType()));
+ return xmlType;
}
- else if(!classIsRegistered(cls, q)) {
-
- if(org.apache.xmlbeans.XmlObject.class.isAssignableFrom(cls)) {
- registerClassAsXMLBeans(cls, q);
- }
- /*
- * NOTE jcolwell@bea.com 2004-Oct-11 -- these datahandler using
- * classes are generally already registered but just in case...
- */
- else if(isActivationEnabled()
- && (java.awt.Image.class.isAssignableFrom(cls)
- || getMultipartClass().isAssignableFrom(cls)
- || getDataHandlerClass().isAssignableFrom(cls))) {
- try {
- registerClassAsDataHandler(cls, q);
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
- /*
- * NOTE jcolwell@bea.com 2004-Oct-11 -- java.rmi.Remote is
- * prohibited by the jax-rpc spec.
- */
- /*
- * NOTE jcolwell@bea.com 2004-Oct-11 -- restricting against File
- * since, it doesn't make sense to serialize as a bean. That and
- * it causes an infinite loop as it keeps returning itself from
- * the getAbsoluteFile and getCanonicalFile calls
- */
- else if(!Remote.class.isAssignableFrom(cls) && !File.class.isAssignableFrom(cls)) {
- registerClassAsWithDefaultSearialization(cls, q, style, use);
- }
- else {
- throw new RuntimeException("failed to register "
- + cls.getName()
- + " as a valid web service datatype,"
- + " consider using a custom type mapping");
+ else {
+ xmlType = registerType(cls.getComponentType(), style, use);
+ if (SOAPBinding.Style.RPC == style) {
+ xmlType = XMLType.SOAP_ARRAY;
}
+ return xmlType;
}
- LOGGER.info("Registered class: " + cls.getCanonicalName() + " qName: " + q);
- return q;
}
- catch(RuntimeException e) {
- LOGGER.error("Failed to register class: " + cls.getCanonicalName() + " type: " +
- q.getNamespaceURI() + ":" + q.getLocalPart());
- e.printStackTrace();
- throw e;
+
+ if (XMLOBJECT_CLASS != null && XMLOBJECT_CLASS.isAssignableFrom(cls)) {
+ registerAsXMLBean(cls, xmlType);
+ return xmlType;
+ }
+ else if (!Remote.class.isAssignableFrom(cls) && !File.class.isAssignableFrom(cls)) {
+ registerWithDefaultSerialization(cls, xmlType, style, use);
+ return xmlType;
+ }
+ else {
+ throw new RuntimeException("failed to register "
+ + cls.getName()
+ + " as a valid web service datatype,"
+ + " consider using a custom type mapping.");
}
}
/**
+ * Register a type without knowing the QName of the xmltype.
+ *
+ * @param cls Class to register.
+ * @param style Service style.
+ * @param use Service use.
+ * @return QName registered for the class.
*/
- public static Class getHoldersValueClass(Type t) {
- Class res = null;
+ protected QName registerType(Class cls, SOAPBinding.Style style, SOAPBinding.Use use) {
- if(t instanceof ParameterizedType) {
- ParameterizedType pt = (ParameterizedType)t;
- Type raw = pt.getRawType();
-
- if(GenericHolder.class.isAssignableFrom((Class)raw)) {
- Type[] typeArgs = pt.getActualTypeArguments();
- if(typeArgs[0] instanceof GenericArrayType) {
- Class arrayElementType = (Class)((GenericArrayType)typeArgs[0]).getGenericComponentType();
- res = Array.newInstance(arrayElementType, 0).getClass();
- }
- else res = (Class)typeArgs[0];
- }
- else throw new RuntimeException("Invalid parameterized type for holder: " + t);
+ QName q;
+ if (SOAPBinding.Use.ENCODED == use && cls.isArray()) {
+ q = _lookupStrategy.class2qname(cls.getComponentType());
}
- else if(t instanceof Class) {
- if(Holder.class.isAssignableFrom((Class)t)) {
- Field[] publicFields = ((Class)t).getFields();
- for(int i = 0; i < publicFields.length; i++) {
- if(publicFields[i].getName().equals("value"))
- return publicFields[i].getType();
- }
- }
- else throw new RuntimeException("Invalid class. Type: " + t + " is not a holder.");
+ else {
+ q = _lookupStrategy.class2qname(cls);
}
-
- return res;
+ return registerType(cls, q, style, use);
}
/**
+ * Register a class using the default serialization mechanism of the JAX-RPC client.
+ *
+ * @param cls Class to register.
+ * @param xmlType Xml type of the class.
+ * @param style Service style.
+ * @param use Service use.
*/
- protected abstract QName getRegisteredQName(Class cls);
-
- /**
- */
- protected abstract void registerClassAsWithDefaultSearialization(Class cls,
- QName q,
- SOAPBinding.Style style,
- SOAPBinding.Use use);
-
- /**
- */
- protected abstract void registerClassAsXMLBeans(Class cls, QName q);
-
- /**
- */
- protected abstract void registerClassAsDataHandler(Class cls, QName q)
- throws ClassNotFoundException,
- NoSuchMethodException,
- InstantiationException,
- IllegalAccessException,
- InvocationTargetException;
+ protected abstract void registerWithDefaultSerialization(Class cls, QName xmlType,
+ SOAPBinding.Style style,
+ SOAPBinding.Use use);
/**
+ * Register a class for XmlBean serialization.
+ *
+ * @param cls Class to register.
+ * @param xmlType Xml type of the class.
*/
- protected abstract void registerClassAsSoapEncodedArray(Class cls, QName q);
+ protected abstract void registerAsXMLBean(Class cls, QName xmlType);
/**
+ * Register a class as a soap encoded array.
+ *
+ * @param cls Class to register.
+ * @param xmlType Xml type of the class.
+ * @param componentType Component type of the array.
*/
- protected abstract boolean classIsRegistered(Class cls, QName q);
-
- protected abstract QName getBuiltInTypeQname(Class cls);
-
- private boolean isActivationEnabled() {
- return null != getDataHandlerClass() && null != getMultipartClass();
- }
-
- private Class getDataHandlerClass() {
- try {
- return getClass().getClassLoader().loadClass("javax.activation.DataHandler");
- }
- /* ignore: datahandler support will be disabled */
- catch(ClassNotFoundException e) {}
- return null;
- }
-
- private Class getMultipartClass() {
- try {
- return getClass().getClassLoader().loadClass("javax.mail.internet.MimeMultipart");
- }
- /* ignore: datahandler support will be disabled */
- catch(ClassNotFoundException e) {}
- return null;
- }
+ protected abstract void registerAsSoapEncodedArray(Class cls, QName xmlType, QName componentType);
}
Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/wsdl/WsdlNamespaceResolver.java Mon Jan 23 08:25:59 2006
@@ -27,15 +27,16 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.io.Serializable;
/**
*/
-public final class WsdlNamespaceResolver
+public final class WsdlNamespaceResolver implements Serializable
{
- final private HashSet<String> _elementFormQualifiedNamespaces;
- final private Map/*<String, String>*/ _prefixMappings;
- final private String _targetNamespace;
+ private HashSet<String> _elementFormQualifiedNamespaces;
+ private Map/*<String, String>*/ _prefixMappings;
+ private String _targetNamespace;
WsdlNamespaceResolver(Definition wsdlDefinition) {
Modified: beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisCall.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisCall.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisCall.java (original)
+++ beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisCall.java Mon Jan 23 08:25:59 2006
@@ -17,7 +17,6 @@
*/
package org.apache.beehive.controls.system.jaxrpc;
-import javax.jws.soap.SOAPBinding;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.Service;
@@ -38,7 +37,7 @@
public final class AxisCall
extends GenericCall {
- private AxisTypeRegistrar _typeRegistrar;
+ private final BindingLookupStrategy _bindingLookupStrategy;
/**
* Create a new ScAxisCall instance.
@@ -49,10 +48,10 @@
public AxisCall(Service service)
throws ServiceException {
TypeMapping typeMapping = service.getTypeMappingRegistry().getDefaultTypeMapping();
- BindingLookupStrategy bindingLookupStrategy = createAxisBindingLookupStrategy();
+ _bindingLookupStrategy = (new AxisBindingLookupFactory()).getInstance();
_call = service.createCall();
- _typeRegistrar = new AxisTypeRegistrar(typeMapping, bindingLookupStrategy);
+ _typeRegistrar = new AxisTypeRegistrar(typeMapping, _bindingLookupStrategy);
}
/* ----------------------------- Protected Methods ------------------------- */
@@ -72,9 +71,7 @@
WsdlOperation.SOAPBindingStyle style,
WsdlOperation.SOAPBindingUse use) {
- BindingLookupStrategy bindingLookupStrategy = createAxisBindingLookupStrategy();
- Class javaType = bindingLookupStrategy.qname2class(xmlType);
-
+ Class javaType = _bindingLookupStrategy.qname2class(xmlType);
QName registeredTypeQName = registerType(javaType, xmlType, style, use);
((org.apache.axis.client.Call) _call).addFault(faultName, javaType, registeredTypeQName, isComplexType);
}
@@ -88,41 +85,27 @@
* @param mode Mode of the parameter.
* @param isHeader True if this parameter should be placed in the header of the SOAP message.
*/
- protected void addParameter(QName paramName, Class paramClass, QName xmlType, WsdlOpParameter.ParameterMode mode, boolean isHeader) {
+ protected void addParameter(QName paramName, Class paramClass, QName xmlType,
+ WsdlOpParameter.ParameterMode mode, boolean isHeader) {
ParameterMode jaxrpcMode;
- if (mode == WsdlOpParameter.ParameterMode.IN)
+ if (mode == WsdlOpParameter.ParameterMode.IN) {
jaxrpcMode = ParameterMode.IN;
- else if (mode == WsdlOpParameter.ParameterMode.INOUT)
+ }
+ else if (mode == WsdlOpParameter.ParameterMode.INOUT) {
jaxrpcMode = ParameterMode.INOUT;
- else
+ }
+ else {
jaxrpcMode = ParameterMode.OUT;
+ }
org.apache.axis.client.Call axisCall = (org.apache.axis.client.Call)_call;
- if (isHeader)
+ if (isHeader) {
axisCall.addParameterAsHeader(paramName, xmlType, paramClass, jaxrpcMode, jaxrpcMode);
- else axisCall.addParameter(paramName, xmlType, paramClass, jaxrpcMode);
- }
-
- /**
- * Register a type.
- *
- * @param typeClass
- * @param xmlName
- * @param style
- * @param use
- * @return QName
- */
- protected QName registerType(Class typeClass,
- QName xmlName,
- WsdlOperation.SOAPBindingStyle style,
- WsdlOperation.SOAPBindingUse use) {
- SOAPBinding.Style jaxrpcStyle =
- (style == WsdlOperation.SOAPBindingStyle.DOCUMENT) ? SOAPBinding.Style.DOCUMENT : SOAPBinding.Style.RPC;
- SOAPBinding.Use jaxrpcUse =
- (use == WsdlOperation.SOAPBindingUse.LITERAL) ? SOAPBinding.Use.LITERAL : SOAPBinding.Use.ENCODED;
-
- return _typeRegistrar.registerType(typeClass, xmlName, jaxrpcStyle, jaxrpcUse);
+ }
+ else {
+ axisCall.addParameter(paramName, xmlType, paramClass, jaxrpcMode);
+ }
}
/**
@@ -149,9 +132,12 @@
* @param xmlReturnType Xml return type.
*/
protected void setReturnType(Class returnType, QName xmlReturnType) {
- if (!_isOneWay && returnType != void.class)
+ if (!_isOneWay && returnType != void.class) {
super.setReturnType(returnType, xmlReturnType);
- else _call.setReturnType(XMLType.AXIS_VOID);
+ }
+ else {
+ _call.setReturnType(XMLType.AXIS_VOID);
+ }
}
/**
@@ -161,9 +147,5 @@
*/
protected void setServicePortName(QName portQName) {
_call.setProperty(org.apache.axis.client.Call.WSDL_PORT_NAME, portQName);
- }
-
- private BindingLookupStrategy createAxisBindingLookupStrategy() {
- return (new AxisBindingLookupFactory()).getInstance();
}
}
Modified: beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java (original)
+++ beehive/trunk/system-controls/src/webservice/jaxrpc-clients/axis/org/apache/beehive/controls/system/jaxrpc/AxisTypeRegistrar.java Mon Jan 23 08:25:59 2006
@@ -15,20 +15,7 @@
*/
package org.apache.beehive.controls.system.jaxrpc;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Collection;
-import java.util.Map;
-import javax.jws.soap.SOAPBinding;
-import javax.xml.namespace.QName;
-import javax.xml.rpc.encoding.TypeMapping;
-
-import org.apache.axis.description.ElementDesc;
-import org.apache.axis.description.FieldDesc;
import org.apache.axis.description.TypeDesc;
-import org.apache.axis.encoding.DeserializerFactory;
-import org.apache.axis.encoding.SerializerFactory;
-import org.apache.axis.encoding.XMLType;
import org.apache.axis.encoding.ser.ArrayDeserializerFactory;
import org.apache.axis.encoding.ser.ArraySerializerFactory;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
@@ -37,149 +24,85 @@
import org.apache.beehive.controls.system.webservice.utils.TypeRegistrar;
import org.apache.beehive.wsm.axis.util.encoding.XmlBeanDeserializerFactory;
import org.apache.beehive.wsm.axis.util.encoding.XmlBeanSerializerFactory;
-import org.apache.beehive.wsm.axis.registration.AxisTypeMappingMetaData;
import org.apache.beehive.wsm.databinding.BindingLookupStrategy;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.namespace.QName;
+import javax.xml.rpc.encoding.TypeMapping;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * Axis client implementation of type registrar.
+ */
public class AxisTypeRegistrar
- extends TypeRegistrar {
+ extends TypeRegistrar {
private static Log LOGGER = LogFactory.getLog(AxisTypeRegistrar.class);
+ /**
+ * Create a new AxisTypeRegistrar.
+ *
+ * @param tm A JAX-RPC type mapping instance.
+ * @param lookupStrategy Lookup strategy for mapping java -> xml types.
+ */
public AxisTypeRegistrar(TypeMapping tm, BindingLookupStrategy lookupStrategy) {
super(tm, lookupStrategy);
}
- public QName getVoidType() {
- return XMLType.AXIS_VOID;
- }
-
- protected void registerClassAsWithDefaultSearialization(Class cls, QName q, SOAPBinding.Style style, SOAPBinding.Use use) {
- try {
- LOGGER.debug("Assigned Default Serialization to class: " + cls.getCanonicalName() + " qname:" + q);
- TypeDesc td = TypeDesc.getTypeDescForClass(cls);
- // a class can provide its own descriptors
- TypeDesc superTd = null;
- BeanPropertyDescriptor[] superPd = null;
- boolean shoudRegisterFields = false;
- if(null == td) {
- shoudRegisterFields = true;
- td = new TypeDesc(cls);
- Class supa = cls.getSuperclass();
- if((supa != null)
- && (supa != java.lang.Object.class)
- && (supa != java.lang.Exception.class)
- && (supa != java.lang.Throwable.class)
- && (supa != java.rmi.RemoteException.class)
- && (supa != org.apache.axis.AxisFault.class)) {
-
- registerType(supa, style, use);
- superTd = TypeDesc.getTypeDescForClass(supa);
- if(superTd != null) {
- superPd = superTd.getPropertyDescriptors();
- }
- }
- td.setXmlType(q);
- TypeDesc.registerTypeDescForClass(cls, td);
- }
- mTypeMapping.register(cls, q, new BeanSerializerFactory(cls, q),
- /*
- * NOTE jcolwell@bea.com 2004-Oct-11 -- should check that the type
- * to deserialize has a default contructor but with this setup there
- * is no way to know if it is used only in serialization.
- */
- new BeanDeserializerFactory(cls, q));
-
- Map serProps = BeanDeserializerFactory.getProperties(cls, null);
- for(BeanPropertyDescriptor beanProps : (Collection<BeanPropertyDescriptor>)serProps.values()) {
- Class subType = beanProps.getType();
- if(!(subType.isPrimitive()
- || subType.getName().startsWith("java.")
- || subType.getName().startsWith("javax."))) {
- registerType(subType, style, use);
- }
- if(shoudRegisterFields) {
- String ns = q.getNamespaceURI();
- if(superTd != null && superPd != null) {
- for(int j = 0; j < superPd.length; j++) {
- if(beanProps.getName()
- .equals(superPd[j].getName())) {
- ns = superTd.getXmlType().getNamespaceURI();
- break;
- }
- }
- }
- FieldDesc fd = new ElementDesc();
- fd.setJavaType(subType);
- fd.setFieldName(beanProps.getName());
- fd.setXmlName(new QName(ns, beanProps.getName()));
- // NOTE jcolwell@bea.com 2004-Oct-28 -- might
- // need
- // to do more to ensure a useful type QName.
- fd.setXmlType(getRegisteredQName(subType));
- ((ElementDesc)fd).setNillable(true);
- // mmerz@apache.com 2005-Mar-09: required since Axis 1.2RC3
- // to allow for null values in complex objects; note that
- // there is no (JSR-181) annotation that allows configuring
- // this value.
-
- td.addFieldDesc(fd);
- }
- }
- }
- catch(RuntimeException e) {
- LOGGER.error("Error in registering class: " + cls.getCanonicalName() + " qname:" + q);
- e.printStackTrace();
- throw e;
+ /**
+ * Register a type with default serialization, in the case of AXIS this would be the BeanSerializer.
+ *
+ * @param cls Class to register.
+ * @param xmlType Xml name of the class.
+ * @param style Style of the service.
+ * @param use Use of the service.
+ */
+ protected void registerWithDefaultSerialization(Class cls, QName xmlType,
+ SOAPBinding.Style style, SOAPBinding.Use use) {
+
+ LOGGER.debug("Assigned Default Serialization to class: " + cls.getCanonicalName() + " qname:" + xmlType);
+
+ _typeMapping.register(cls, xmlType,
+ new BeanSerializerFactory(cls, xmlType),
+ new BeanDeserializerFactory(cls, xmlType));
+
+ Map classProperties = BeanDeserializerFactory.getProperties(cls, TypeDesc.getTypeDescForClass(cls));
+ Collection beanPropertyDescriptors = classProperties.values();
+ for (Object o : beanPropertyDescriptors) {
+ registerType(((BeanPropertyDescriptor) o).getType(), style, use);
}
}
- protected void registerClassAsXMLBeans(Class cls, QName q) {
- LOGGER.debug("Assigned XMLBeans Serialization to class: " + cls.getCanonicalName() + " qname:" + q);
- // todo: the XmlBeanSerializerFactory is available in Axis 1.2.1:1
- mTypeMapping.register(cls, q, new XmlBeanSerializerFactory(cls, q), new XmlBeanDeserializerFactory(cls, q));
- }
-
- protected void registerClassAsDataHandler(Class cls, QName q)
- throws ClassNotFoundException, NoSuchMethodException,
- InstantiationException, IllegalAccessException,
- InvocationTargetException {
- LOGGER.debug("Assigned DataHandler to class: " + cls.getCanonicalName() + " qname:" + q);
- /*
- * NOTE jcolwell@bea.com 2004-Oct-08 -- doing reflection here in case
- * AXIS was built without attachment support.
- */
- ClassLoader cl = getClass().getClassLoader();
- Class<SerializerFactory> sfClass =
- (Class<SerializerFactory>)cl.loadClass("org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory");
- Class<DeserializerFactory> dsfClass =
- (Class<DeserializerFactory>)cl.loadClass("org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory");
- Constructor<SerializerFactory> sfCon = sfClass.getConstructor(Class.class, QName.class);
- Constructor<DeserializerFactory> dsfCon = dsfClass.getConstructor(Class.class, QName.class);
- SerializerFactory sf = sfCon.newInstance(cls, q);
- DeserializerFactory dsf = dsfCon.newInstance(cls, q);
- mTypeMapping.register(cls, q, sf, dsf);
- }
-
- protected void registerClassAsSoapEncodedArray(Class cls, QName q) {
- LOGGER.debug("Assigned Array Serialization to class: " + cls.getCanonicalName()
- + " qname:" + q + " Array element qname: " + _lookupStrategy.class2qname(cls.getComponentType()));
+ /**
+ * Register a type as an XmlBean.
+ * @param cls Class to register.
+ * @param xmlType Xml name of the class.
+ */
+ protected void registerAsXMLBean(Class cls, QName xmlType) {
+
+ // todo: the XmlBeanSerializerFactory is available in Axis 1.2.1
+ LOGGER.debug("Assigned XMLBeans Serialization to class: " + cls.getCanonicalName() + " qname:" + xmlType);
+ _typeMapping.register(cls, xmlType,
+ new XmlBeanSerializerFactory(cls, xmlType),
+ new XmlBeanDeserializerFactory(cls, xmlType));
+ }
+
+ /**
+ * Register a type as a SOAP encoded array.
+ * @param cls Class to register.
+ * @param xmlType Xml name of the class.
+ * @param componentType Component type of the array.
+ */
+ protected void registerAsSoapEncodedArray(Class cls, QName xmlType, QName componentType) {
+ LOGGER.debug("Assigned Array Serialization to class: " + cls.getCanonicalName()
+ + " qname:" + xmlType
+ + " Array element qname: " + componentType);
- mTypeMapping.register(cls, q, new ArraySerializerFactory(_lookupStrategy.class2qname(cls.getComponentType())),
+ _typeMapping.register(cls, xmlType,
+ new ArraySerializerFactory(componentType),
new ArrayDeserializerFactory());
- }
-
- protected boolean classIsRegistered(Class cls, QName q) {
- return mTypeMapping.isRegistered(cls, q);
- }
-
- protected QName getRegisteredQName(Class cls) {
- QName currentQName = ((org.apache.axis.encoding.TypeMapping)mTypeMapping).getTypeQName(cls);
- return currentQName;
- }
-
- protected QName getBuiltInTypeQname(Class cls) {
- return AxisTypeMappingMetaData.getBuiltInTypeQname(cls);
}
}
Modified: beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/holders/HolderUtilsTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/holders/HolderUtilsTest.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/holders/HolderUtilsTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/holders/HolderUtilsTest.java Mon Jan 23 08:25:59 2006
@@ -21,7 +21,7 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.beehive.controls.system.webservice.utils.HolderUtils;
-import org.apache.beehive.wsm.util.GenericHolder;
+import org.apache.beehive.controls.system.webservice.utils.GenericHolder;
import javax.xml.rpc.holders.IntHolder;
import javax.xml.rpc.holders.BigDecimalHolder;
@@ -39,7 +39,7 @@
HolderUtils.stuffHolderValue(ih, null);
assertEquals(0, ih.value);
- HolderUtils.stuffHolderValue(ih, new Integer(8));
+ HolderUtils.stuffHolderValue(ih, 8);
assertEquals(8, ih.value);
HolderUtils.stuffHolderValue(ih, 9);
@@ -51,11 +51,11 @@
HolderUtils.stuffHolderValue(ih, null);
assertNull(ih.value);
- HolderUtils.stuffHolderValue(ih, new Integer(5));
- assertEquals(5, ih.value.intValue());
+ HolderUtils.stuffHolderValue(ih, 5);
+ assertEquals(5, (int)ih.value);
HolderUtils.stuffHolderValue(ih, 4);
- assertEquals(4, ih.value.intValue());
+ assertEquals(4, (int)ih.value);
}
public void testStuffBigDecimalHolder() throws Exception {
Modified: beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitBareWsdlTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitBareWsdlTest.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitBareWsdlTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitBareWsdlTest.java Mon Jan 23 08:25:59 2006
@@ -23,7 +23,7 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.beehive.controls.system.webservice.ServiceControl;
-import org.apache.beehive.wsm.util.GenericHolder;
+import org.apache.beehive.controls.system.webservice.utils.GenericHolder;
/**
* Test wsc generation from a doc/lit/bar web service wsdl.
Modified: beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitWrapWsdlTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitWrapWsdlTest.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitWrapWsdlTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromDocLitWrapWsdlTest.java Mon Jan 23 08:25:59 2006
@@ -20,8 +20,7 @@
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
-import org.apache.beehive.controls.system.webservice.ServiceControl;
-import org.apache.beehive.wsm.util.GenericHolder;
+import org.apache.beehive.controls.system.webservice.utils.GenericHolder;
import javax.xml.rpc.holders.IntHolder;
import java.lang.reflect.Method;
Modified: beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromRpcLitWsdlTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromRpcLitWsdlTest.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromRpcLitWsdlTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/junit/src/org/apache/beehive/controls/system/webservice/tests/wscgen/WscGenFromRpcLitWsdlTest.java Mon Jan 23 08:25:59 2006
@@ -19,8 +19,7 @@
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
-import org.apache.beehive.controls.system.webservice.ServiceControl;
-import org.apache.beehive.wsm.util.GenericHolder;
+import org.apache.beehive.controls.system.webservice.utils.GenericHolder;
import java.lang.reflect.Method;
Added: beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/WscSerializationTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/WscSerializationTest.java?rev=371574&view=auto
==============================================================================
--- beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/WscSerializationTest.java (added)
+++ beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/WscSerializationTest.java Mon Jan 23 08:25:59 2006
@@ -0,0 +1,116 @@
+/*
+ * Copyright 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.controls.system.webservice.units;
+
+import java.io.ObjectOutputStream;
+import java.io.FileOutputStream;
+import java.io.ObjectInputStream;
+import java.io.FileInputStream;
+import java.io.File;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.beehive.controls.api.bean.Control;
+import org.apache.beehive.controls.api.context.ControlContainerContext;
+import org.apache.beehive.controls.test.junit.ControlTestCase;
+import org.apache.beehive.controls.test.container.ControlTestContainerContext;
+
+/**
+ * Serialization test for the WSC. Serialize and deserialize a wsc and make sure
+ * it still functions.
+ */
+public class WscSerializationTest
+ extends ControlTestCase {
+
+ @Control
+ public schematypestest.SoapMarshallingDocLitWrappedService _client;
+
+ public void setUp() {
+ // intentially not calling super()
+ }
+
+ public void tearDown() {
+ // intentially not calling super()
+ }
+
+ /**
+ * Echo boolean.
+ * @throws Exception
+ */
+ public void testSerialization() throws Exception {
+
+ //
+ // start the context
+ //
+ getControlContainerContextManager().beginContext();
+
+ initializeControls();
+ assertNotNull(_client);
+
+ assertEquals(6, _client.echoint(6));
+
+ ControlContainerContext ccc = getControlContainerContext();
+
+ //
+ // end the context
+ //
+ getControlContainerContextManager().endContext();
+
+ //
+ // serialize the wsc
+ //
+ File serFile = File.createTempFile("wsc", "ser");
+ ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(serFile));
+ ControlTestContainerContext ctcc = (ControlTestContainerContext)ccc;
+ ctcc.writeChildren(oos);
+ oos.close();
+
+ //
+ // deserialize the ctcc contents
+ //
+ ObjectInputStream ois = new ObjectInputStream(new FileInputStream(serFile));
+ ctcc.readChildren(ois);
+ ois.close();
+ serFile.delete();
+
+ //
+ // find the deserialized instance in the ctcc
+ //
+ Object[] ctrls = ctcc.toArray();
+ schematypestest.SoapMarshallingDocLitWrappedService deserializedControl = null;
+ for (Object c : ctrls) {
+ if (c instanceof schematypestest.SoapMarshallingDocLitWrappedService && !c.equals(_client)) {
+ deserializedControl = (schematypestest.SoapMarshallingDocLitWrappedService)c;
+ break;
+ }
+ }
+
+ //
+ // start the context
+ //
+ getControlContainerContextManager().beginContext();
+
+ assertNotNull(deserializedControl);
+ assertFalse(deserializedControl == _client);
+ assertEquals(7, _client.echoint(7));
+
+ getControlContainerContextManager().endContext();
+ }
+
+ public static Test suite() { return new TestSuite(WscSerializationTest.class); }
+
+ public static void main(String[] args) { junit.textui.TestRunner.run(suite()); }
+}
\ No newline at end of file
Propchange: beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/WscSerializationTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/doclitwrapped/pojo/HeaderObjectDocLitEndpointTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/doclitwrapped/pojo/HeaderObjectDocLitEndpointTest.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/doclitwrapped/pojo/HeaderObjectDocLitEndpointTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/doclitwrapped/pojo/HeaderObjectDocLitEndpointTest.java Mon Jan 23 08:25:59 2006
@@ -21,7 +21,7 @@
import junit.framework.TestSuite;
import org.apache.beehive.controls.api.bean.Control;
import org.apache.beehive.controls.test.junit.ControlTestCase;
-import org.apache.beehive.wsm.util.GenericHolder;
+import org.apache.beehive.controls.system.webservice.utils.GenericHolder;
import header.HeaderAddress;
/**
@@ -43,7 +43,7 @@
header.HeaderAddress param = new header.HeaderAddress();
h.setCity("Denver");
- GenericHolder<HeaderAddress> gh = new GenericHolder<header.HeaderAddress>(h);
+ GenericHolder<HeaderAddress> gh = new GenericHolder<HeaderAddress>(h);
header.HeaderAddress result = client.echoObject(gh, param);
assertEquals(param.getCity(), result.getCity());
Modified: beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpcenc/axisgen/HeaderObjectRpcEncEndpointTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpcenc/axisgen/HeaderObjectRpcEncEndpointTest.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpcenc/axisgen/HeaderObjectRpcEncEndpointTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpcenc/axisgen/HeaderObjectRpcEncEndpointTest.java Mon Jan 23 08:25:59 2006
@@ -21,7 +21,8 @@
import junit.framework.TestSuite;
import org.apache.beehive.controls.api.bean.Control;
import org.apache.beehive.controls.test.junit.ControlTestCase;
-import org.apache.beehive.wsm.util.GenericHolder;
+import org.apache.beehive.controls.system.webservice.utils.GenericHolder;
+import header.HeaderAddressAxisgen;
/**
* Header tests for rpc/enc services.
@@ -42,7 +43,7 @@
header.HeaderAddressAxisgen param = new header.HeaderAddressAxisgen();
h.setCity("Denver");
- GenericHolder<header.HeaderAddressAxisgen> gh = new GenericHolder<header.HeaderAddressAxisgen>(h);
+ GenericHolder<header.HeaderAddressAxisgen> gh = new GenericHolder<HeaderAddressAxisgen>(h);
header.HeaderAddressAxisgen result = client.echoObject(gh, param);
assertEquals(param.getCity(), result.getCity());
Modified: beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpclit/pojo/HeaderObjectRpcLitEndpointTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpclit/pojo/HeaderObjectRpcLitEndpointTest.java?rev=371574&r1=371573&r2=371574&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpclit/pojo/HeaderObjectRpcLitEndpointTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/webapp/tests/org/apache/beehive/controls/system/webservice/units/rpclit/pojo/HeaderObjectRpcLitEndpointTest.java Mon Jan 23 08:25:59 2006
@@ -21,7 +21,7 @@
import junit.framework.TestSuite;
import org.apache.beehive.controls.api.bean.Control;
import org.apache.beehive.controls.test.junit.ControlTestCase;
-import org.apache.beehive.wsm.util.GenericHolder;
+import org.apache.beehive.controls.system.webservice.utils.GenericHolder;
import header.HeaderAddress;
/**
@@ -43,7 +43,7 @@
header.HeaderAddress param = new header.HeaderAddress();
h.setCity("Denver");
- GenericHolder<HeaderAddress> gh = new GenericHolder<header.HeaderAddress>(h);
+ GenericHolder<HeaderAddress> gh = new GenericHolder<HeaderAddress>(h);
header.HeaderAddress result = client.echoObject(gh, param);
assertEquals(param.getCity(), result.getCity());