Success!
I found that on my deserializer side, it is a two stop process: One must
register the deserializer for the class in the array and for the array
itself. Oddly, this does not appear necessary on the serializer side: TCP
Monitor shows the same soapenv:Envelope regardless. So, in my serialzer's
serialize() method, I have
TypeMappingRegistry reg = context.getTypeMappingRegistry();
TypeMapping tm = (TypeMapping)
reg.getOrMakeTypeMapping(Constants.URI_SOAP11_ENC);
tm.register( ACLRec.class, OASQNames.aclRecQName,
new ArraySerializerFactory(ACLRec.class, OASQNames.aclRecQName),
new ArrayDeserializerFactory(OASQNames.aclRecQName));
while in my deserializer I have
TypeMappingRegistry reg = context.getTypeMappingRegistry();
TypeMapping tm = (TypeMapping)
reg.getOrMakeTypeMapping(Constants.URI_SOAP11_ENC);
tm.register( ACLRec.class, OASQNames.aclRecQName,
new ACLRecSerFactory(), new ACLRecDeserFactory() );
tm.register( ACLRec[].class, OASQNames.aclRecArrQName,
new ArraySerializerFactory(ACLRec.class, OASQNames.aclRecQName),
new ArrayDeserializerFactory(OASQNames.aclRecQName));
I believe this is because ArrayDeserializerFactory initializes only with a
QName, not a class and QName. Why not? Is that an oversight in the API?
On Friday 12 August 2005 16:34, Thad Humphries wrote:
> I'm having trouble deserializing a class that includes an array member.