[ http://issues.apache.org/jira/browse/AXIS2-918?page=all ]
Ajith Harshana Ranabahu resolved AXIS2-918. ------------------------------------------- Resolution: Fixed Fixed in the latest SVN. Thanks for pointing out the problem > WSDL2Java/XMLBeans generated interfaces should not reference inner classes of > their own subclasses > -------------------------------------------------------------------------------------------------- > > Key: AXIS2-918 > URL: http://issues.apache.org/jira/browse/AXIS2-918 > Project: Apache Axis 2.0 (Axis2) > Issue Type: Bug > Components: wsdl, databinding > Affects Versions: 1.0 > Reporter: Derek Foster > > When I run WSDL2Java on a WSDL document using the XMLBeans data binding (and > possibly others), I get skeleton files that look something like this: > /** > * FEUServiceSkeletonInterface java skeleton interface for the > axisService > */ > public interface FEUServiceSkeletonInterface { > > > /** > * Auto generated method signature > */ > public crc.feuimport.xmlbeans.wsdl.ReturnDocument acceptFEURecap > ( > crc.feuimport.xmlbeans.wsdl.RecapDocument param0 > ) > > throws crc.feuimport.wsdl2java.FEUServiceSkeleton.FailureException; > } > Note that this interface (FEUServiceSkeletonInterface) contains a method > (acceptFEURecap) whose throws clause is referencing an inner class of a class > which implements the interface itself (namely, class > FEUServiceSkeleton.FailureException is an inner class of FEUServiceSkeleton, > which is a subtype of FEUServiceSkeletonInterface). This is extremely poor > design from an object-oriented design perspective. Subtypes often reference > their supertypes, but the reverse should never be true, as it is in this > case. Violating this rule has a variety of problematic consequences. As the > current design exists, for instance, it is impossible for someone to create > their own subtype of FEUServiceSkeletonInterface which will have equal status > with FEUServiceSkeleton, since FEUServiceSkeleton.FailureException is > specifically referenced by the interface. It is also impossible to put > FEUServiceSkeletonInterface into a separately deployable JAR file from > FEUServiceSkeleton. > In this case, the specific supertype of exceptions that may be thrown from > this method is pretty clearly a detail of the INTERFACE to this method, > rather than part of its IMPLEMENTATION. Therefore, I think that the code > generator should be revised so that the actual declaration of this exception > type is either in its own source file (i.e. not an inner class of > FEUServiceSkeleton, but a separate FailureException.java), or so that the > declaration of the exception type is moved to be an inner class of > FEUServiceSkeletonInterface, rather than of FEUServiceSkeleton. That way, if > an implementation of FEUServiceSkeleton or any other subtype of > FEUServiceSkeletonInterface wishes to throw an instance of that specific > exception type, it may do so, or it might even declare its own subclass of > that exception type (with, perhaps, added functionality) and throw that > instead. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]