Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 23919 invoked from network); 18 Dec 2003 12:58:13 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 18 Dec 2003 12:58:13 -0000 Received: (qmail 77833 invoked by uid 500); 18 Dec 2003 12:58:08 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 77808 invoked by uid 500); 18 Dec 2003 12:58:07 -0000 Mailing-List: contact axis-dev-help@ws.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@ws.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@ws.apache.org Received: (qmail 77797 invoked from network); 18 Dec 2003 12:58:07 -0000 Message-ID: <20031218125808.60132.qmail@web12823.mail.yahoo.com> Date: Thu, 18 Dec 2003 04:58:08 -0800 (PST) From: Davanum Srinivas Reply-To: dims@yahoo.com Subject: Re: Question about org.apache.axis.description.JavaServiceDesc class To: axis-dev@ws.apache.org In-Reply-To: <43E7912D8BB1A042AEF947C1A633F8CC02EBF64D@pateta.bes.gbes> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N please create a bugzilla bug report (http://ws.apache.org/axis/bugs.html) thanks, dims --- MIGUEL_ANTUNES_(ATX-Arquitectura_T�cnica) wrote: > Hi, > > I have a question about the way org.apache.axis.description.JavaServiceDesc > class initializes its operation descriptions through introspection: > > Should overload methods defined in the service super class be found by the > introspection process even when StopClasses property is set? > > My problem is that I do not want them to be found, I only want to expose the > operations that correspond to the methods declrared in the service class. > I've tried defining my own RPCProvider extension so that I could set the > StopClasses property but that didn't worked. Then I looked into the > JavaServiceDesc implementation and found that the StopClasses property is > not checked when looking for overloaded methods in the super class. So I > changed the > createOperationsForName so that it checks StopClasses when looking for > overloading methods. Here is the code after my modification: > > private void createOperationsForName(Class implClass, String methodName) > { > // If we're a Skeleton deployment, skip the statics. > if (isSkeletonClass) { > if (methodName.equals("getOperationDescByName") || > methodName.equals("getOperationDescs")) > return; > } > > Method [] methods = implClass.getDeclaredMethods(); > > for (int i = 0; i < methods.length; i++) { > Method method = methods[i]; > if (Modifier.isPublic(method.getModifiers()) && > method.getName().equals(methodName)) { > createOperationForMethod(method); > } > } > > Class superClass = implClass.getSuperclass(); > if (superClass != null && > !superClass.getName().startsWith("java.") && > !superClass.getName().startsWith("javax.")&& > (stopClasses == null || > !stopClasses.contains(superClass.getName()))) > //<------------------------------- added check for stop classes > { > createOperationsForName(superClass, methodName); > } > > } > > I have made this change in Axis 1.1 and now in Axis 1.2 alpha and to avoid > any further changes in future Axis versions, I would like to know if this is > the intended behavior, and if it is, could Axis at least provide some kind > of service configuration parameter to turn off overloaded methods discovery; > or perhaps could org.apache.axis.handlers.soap.SOAPService define a factory > method for creating ServiceDesc instances that could be overridden in > subclasses to allow JavaServiceDesc extensions??? > > > Best regards, > Miguel Antunes > > > > ===== Davanum Srinivas - http://webservices.apache.org/~dims/