I've just spent a quarter of an hour without success to find out how to
enter a bug for WSIF in Bugzilla. So, if anyone knows their way around
there better than me, please enter this.
I've attached a tiny diff of changes for two things
* make WSIF compile (and work!) with Axis 1.2RC
* fix bug in handling of custom de/serializers in the Axis provider
Yes, it is possible to use custom de/serializers with WSIF and Axis.
Just like this:
List<TypeSerializerInfo> typeSerializers =
new ArrayList<TypeSerializerInfo>();
typeSerializers.add(new TypeSerializerInfo(
new QName(SERVICE_NS, ELEMENT_TYPE),
MyClass.class,
new MyClassSerializerFactory(),
new MyClassDeserializerFactory()));
WSIFMessage context = operation.getContext(); // we get a clone here
context.setObjectPart(WSIFAXISConstants.CONTEXT_SOAP_TYPE_SERIALIZERS,
typeSerializers);
operation.setContext(context);
Please note that the code above will not work correctly without the
patch!
Michael
--
Michael Schuerig Thinking is trying to make up
mailto:[EMAIL PROTECTED] for a gap in one's education.
http://www.schuerig.de/michael/ --Gilbert Ryle
diff -ur src-orig/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java src/org/apache/wsif/providers/s
oap/apacheaxis/WSIFOperation_ApacheAxis.java
--- src-orig/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java 2004-11-28 01:35:30.000000000 +01
00
+++ src/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java 2004-11-28 01:19:55.000000000 +0100
@@ -1703,8 +1703,8 @@
// setup the call object
call.setOperationName(
new QName(getInputNamespace(), portTypeOperation.getName()));
- call.setScopedProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);
- call.setScopedProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
+ call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);
+ call.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
call.setOperationStyle(operationStyle);
setCallParameterNames(call);
@@ -2093,8 +2093,8 @@
Object serializer = tm.getSerializer();
Object deserializer = tm.getDeserializer();
- if ( (javaType != null) || (javaType.isAssignableFrom(clazz))
- && ( (elementType != null) || (elementType.equals(xmlType)) ) ){
+ if ( (javaType == null) || (javaType.isAssignableFrom(clazz))
+ && ( (elementType == null) || (elementType.equals(xmlType)) ) ){
if (serializer == null || serializer instanceof SerializerFactory
&& deserializer == null || deserializer instanceof DeserializerFactory
&& serializer != null || deserializer != null) {