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) {

Reply via email to