Hi Michael, Jonathan
Michael, thank you for letting me know about test case/scenarios.
Now it's much clearer for me how I can cooperate with you guys. :)
Jonathan, oh I didn't know that the DropInDeploymentHandler will be
substituted for AnnotatedJWSHandler. Thanks for explaining me about the
handler.
BTW, I'd been reading the source code of WebServiceMETHODMetadata.java
a couple of hours ago and got a tiny question.
How is the javax.jws.WebResult annotation treated ?
Here is the snippet from the constructor of WebServiceMETHODMetadata class.
-----------------------------------------
public WebServiceMETHODMetadata(javax.jws.WebMethod methodAnnotation,
String javaMethodName, Class javaReturnType,
Collection<Annotation> annotations, List< ? extends
WebServicePARAMETERMetadata> webParams) {
if ((null == javaMethodName) || (null == javaReturnType)) {
throw new IllegalArgumentException(
"javaMethodName or javaReturnType not set");
}
...
setWrName("result");
// check required parameters
if (null == methodAnnotation) {
throw new IllegalArgumentException("@WebMethod is required");
}
...
// set optional annotations
for (Annotation a : annotations) {
...
} else if (a.annotationType() == javax.jws.WebResult.class) {
initFromAnnotation((javax.jws.WebResult) a);
...
}
}
-----------------------------------------
At the bottom of the snippet, all annotations of this WebMethod are seached in
the for-loop and
if the javax.jws.WebResult annotation is found, the value of the name method of
the WebResult is
retrieved and is set into the instance variable named wrName.
But before doing that, "result" is already set into the wrName variable by
setWrName() method
at the middle of the snippet.
It means that ...
1: If a method is not annotated with WebResult, the wrName will be "result".
2: if a method is annotated with @WebResult, the wrName will be "result".
3: If a method is annotated with @WebResult(name="myresult"), the wrName will
be "myresult".
The 1st case, It's kinda foolproof, in case a developer forgets to add
@WebResult annotation.
However, I think it might cause some unexpected results (that a developer
doesn't intend).
My suggestion is that the WebResult annotation must appear with the WebMethod
annotation.
or at least warn "you'd better to add WebResult" or something like that during
the development stage..
What u think ?
Thanks in advance.
wolfgang.
ps)
I know it's a little thing. But I wanna get involved in this community fast so
telling my opinions
and hear your ones.
Please don't get tired of it. :)