//Now, continue to build this list with relevent methods in the chain of
//superclasses. If the logic for processing superclasses is the same as for
//the original SEI, then we can combine this code with above code. But, its possible
//the logic is different for superclasses...keeping separate for now.
DescriptionBuilderComposite tempDBC = dbc;
while (!DescriptionUtils.isEmpty(tempDBC.getSuperClassName())) {
//verify that this superclass name is not
// java.lang.object, if so, then we're done processing
if (DescriptionUtils.javifyClassName(tempDBC.getSuperClassName())
.equals(MDQConstants.OBJECT_CLASS_NAME))
break;
DescriptionBuilderComposite superDBC =
getEndpointDescriptionImpl().getServiceDescriptionImpl().getDBCMap()
.get(tempDBC.getSuperClassName());
if (log.isTraceEnabled())
log.trace("superclass name for this DBC is:" + tempDBC.getSuperClassName());
//Verify that we can find the SEI in the composite list
if (superDBC == null) {
throw ExceptionFactory.makeWebServiceException(
"EndpointInterfaceDescriptionImpl: cannot find super class that was specified for this class");
}
if (superDBC.getWebServiceAnnot() != null) {
//Now, gather the list of Methods just like we do for the lowest subclass
retrieveList.addAll(retrieveImplicitSEIMethods(superDBC));
} else {
//This superclass does not contain a WebService annotation, add only the
//methods that are annotated with WebMethod
Iterator<MethodDescriptionComposite> iterMethod =
dbc.getMethodDescriptionsList().iterator();
while (iterMethod.hasNext()) {
MethodDescriptionComposite mdc = iterMethod.next();
if (!DescriptionUtils.isExcludeTrue(mdc)) {
mdc.setDeclaringClass(superDBC.getClassName());
retrieveList.add(mdc);
}
}
}
tempDBC = superDBC;