Hi.
While trying to use a wsdl client I run into this
odd behaviour: I generated a wsdl client with the wizard.
It generated this hierarchy:
Object
Class1
Class2
Class3
All 3 classes have instance variables of their
own.
Now, when I instantiate a Class3, it only marshals
the elements from Class3 and Class2, but ignores the ones in the
Class1.
I'm positive that I'm setting a value for a Class1
instance variable.
I'm thinking in pushing down the elements in the
the wsdl schema from Class1 to Class2 and rebuild the client, but am I missing
something ? I've tried setting the AllowDerivedTypes flag on and off, but the
results were the same. Any hints ?
thanks in advance
martin
_______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
> While trying to use a wsdl client I run into this odd behaviour: I > generated a wsdl client with the wizard. > It generated this hierarchy: > > Object > Class1 > Class2 > Class3 > > All 3 classes have instance variables of their own. > Now, when I instantiate a Class3, it only marshals the elements from > Class3 and Class2, but ignores the ones in the Class1. > I'm positive that I'm setting a value for a Class1 instance variable. > I'm thinking in pushing down the elements in the the wsdl schema from > Class1 to Class2 and rebuild the client, but am I missing something ? > tried setting the AllowDerivedTypes flag on and off, but the results were > the same. Any hints ? AllowDerivedTypes flag doesn't help in this case. The Class3 marshaler has to have relations from both Class1&Class2 marshalers. Try to debug ObjectMarshaler>>validate to see if the super class relations got copied. Tamara _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Tamara,
I did as you suggested, and found the
problem.
What's happening is that #validate is being called
for Class3, Class2 and Class1, in that specific order.
Then this happens:
1) #validate for Class3: it appends Class2
references to its own references (ref3, ref2)
2) #validate for Class2: it appends Class3
references to its own references (ref2, ref1)
I'm not sure where this order came from, but noticed that is the same order
that appears in the declaration in
WebServiceClient class>>x2oBinding.
So my fix was to change the order in the #x2oBinding declaration.
Now it works as the order is:
1) #validate for Class2: it appends Class1
references to its own references (ref2, ref1)
2) #validate for Class3: it appends Class2
references to its own references (ref3, (ref2, ref1))
Anyway, thank you very much for your answer.
best regards
martin ----- Original Message -----
_______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Free forum by Nabble | Edit this page |