BTW - I can't get a wsdl to generate that uses a param that needs wrapped. Not sure why it's being generated differently, so instead I'll say this, if you comment line 105 in that class, then this apparent bug goes away because it inserts the wrapped class without blowing everything else away. This also makes me believe if you have more than one param that needs wrapped, they simply won't be wrapped, but I guess it won't matter because they'll be deleted anyhow.
On 9/11/07, Ryan Moquin <[EMAIL PROTECTED]> wrote: > > Ok, right.. there you go.. so it's taking parts[0] and trying to wrap it. > After it wraps it, it clears the list containing those two parameters and > readds the wrapped Ping object, therefore losing your APICredentials > parameter. > > I'm having a hard time making a simple wsdl that I can submit to someone > to look at ... it's not generating the objects using the same structure as > it is in my bigger wsdl ... in regards to the wrapped classes. > > On 9/11/07, Gamble, Wesley (WG10) <[EMAIL PROTECTED]> wrote: > > > > parts[0] is a MessagePartInfo object which appears to have "Ping" in the > > concreteName value. > > Parts[1] is a MessagePartInfo object which appears to have > > "APICredentials" in the concreteName value. > > > > So...this implies to me that only the method name will _ever_ make it > > through. So any custom header values > > don't get passed on through WrapperClassOutInterceptor? Can that be > > right? That's kinda crazy. > > > > Wes > > > > -----Original Message----- > > From: Ryan Moquin [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, September 11, 2007 12:01 PM > > To: [email protected] > > Subject: Re: Can someone tell me what WrapperClassOutInterceptor is > > supposed to do? > > > > Is parts bigger than 0 in your case? If so, what's contained in it? If > > it's not, then I don't think the Interceptor would have anything to do. > > > > On 9/11/07, Gamble, Wesley (WG10) <[EMAIL PROTECTED]> wrote: > > > > > > I'm calling a "ping" method on my Web service. Does that jive with > > what > > > you're found? > > > > > > On lines 61-63 of WrapperClassOutInterceptor, I see: > > > > > > if (parts.size() > 0) { > > > wrapped = parts.get(0).getTypeClass(); > > > } > > > > > > I'm pretty sure I'm not passing any parameters to "ping". > > > > > > If the "parts" variable represents the set of input parameters, > > > so I wouldn't even think that any of the code you mentioned would be > > > executed. > > > > > > Yet I get the exact same error as you. > > > > > > ? > > > > > > Wes > > > > > > -----Original Message----- > > > From: Ryan Moquin [mailto:[EMAIL PROTECTED] > > > Sent: Tuesday, September 11, 2007 11:54 AM > > > To: [email protected] > > > Subject: Re: Can someone tell me what WrapperClassOutInterceptor is > > > supposed to do? > > > > > > Yeah, the first parameter is the only parameter that my webservice > > > method > > > needs. The second parameter is the header. The header gets dropped > > > when it > > > wraps the first parameter. I'm not even sure why the wrapping is > > > necessary, > > > since the class that it used to wrap the parameter is already > > generated > > > and > > > could be easily used in the method signature instead. > > > > > > On 9/11/07, Gamble, Wesley (WG10) <[EMAIL PROTECTED]> wrote: > > > > > > > > Ryan, > > > > > > > > Impressive. What is the first parameter object in the failing case > > - > > > > the one > > > > that needs to be wrapped? > > > > > > > > In general, what is the necessity of wrapping the parameters in the > > > > first place? > > > > > > > > Wes > > > > > > > > -----Original Message----- > > > > From: Ryan Moquin [mailto:[EMAIL PROTECTED] > > > > Sent: Tuesday, September 11, 2007 11:38 AM > > > > To: [email protected] > > > > Subject: Can someone tell me what WrapperClassOutInterceptor is > > > supposed > > > > to do? > > > > > > > > I've been debugging my "disappearing header" problem. I've narrowed > > > it > > > > down > > > > to the WrapperClassOutInterceptor class. On line 66, it grabs a > > > > reference > > > > to the parameters that I passed into my method I'm calling for my > > web > > > > service. It then takes these parameters and apparently tries to see > > > if > > > > there is a WrapperHelper for them. Or well, by the fact that it > > only > > > > checks > > > > for parts.get(0), means that it's checking my first parameter but > > not > > > > checking my second parameter (my header). > > > > > > > > Now, there is no WrapperHelper apparently for my first parameter > > > object, > > > > so > > > > it creates one and wraps it. At this point the Interceptor seems > > > happy > > > > with > > > > the job that it did and calls the following code: > > > > > > > > Object o2 = helper.createWrapperObject(objs); > > > > objs.clear(); > > > > objs.put(parts.get(0), o2); > > > > > > > > When it does this, it clears the MessageContentsList containing my > > > > parameter > > > > and my header. It puts my first parameter back in and leaves the > > old > > > > slot > > > > held by my header as null. This is why my header is disappearing. > > > Why > > > > does > > > > this class only reference parts(0) when there is more than 1 part? > > > > > > > > This Interceptor seems to assume that there is only 1 parameter. > > The > > > > reason > > > > why my stripped down WSDL doesn't hit this apparent bug is because > > > when > > > > I > > > > generate the java classes for that wsdl, my first parameter is > > > generated > > > > as > > > > a wrapper object around a string and therefore doesn't need to > > create > > > a > > > > wrapper class and doesn't delete the elements from the > > > > MessageContentList. > > > > This appears to be a bug. I think I can now change my test working > > > WSDL > > > > to > > > > exploit this problem. I'll then post it for you to look at. > > > > > > > > > > >
