There's not anything to inherit from MethodTagsHandler. I prefer to keep
it MethodTagsHandler-independent, because we may add some other template
tags which work on fields not property accessors. Just use the static
methods of MethodTagsHandler. You can also move some of the methods if
this makes sense.

Ara.

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:xdoclet-devel-
> [EMAIL PROTECTED]] On Behalf Of David Jencks
> Sent: Wednesday, February 27, 2002 4:51 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [Xdoclet-devel] Comments requested
> 
> That seems reasonable.  I'm using some non static methods from
> MethodTagsHandler.  Should I:
> 
> -inherit from MethodTagsHandler
> -make a common superclass
> -copy the needed code
> -find some way of creating a MethodTagsHandler instance (what way?)
> 
> Thanks
> david jencks
> 
> On 2002.02.27 05:09:10 -0500 Ara Abrahamian wrote:
> > So you're iterating over methods and check if there's a getter for
> > current property extracted from current method. I prefer the name
> > ifPropertyHasGetterMethod. Btw, we should also add
> > forAllProperties/ifIsGetter/Setter and so on. So I think instead of
> > putting these new methods in MethodTagsHandler it's better to define
> > them in a new PropertyTagsHandler class along with the other
> > property-oriented methods.
> >
> > Ara.
> >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED]
[mailto:xdoclet-devel-
> > > [EMAIL PROTECTED]] On Behalf Of David Jencks
> > > Sent: Wednesday, February 27, 2002 3:00 AM
> > > To: xdoclet-devel
> > > Subject: [Xdoclet-devel] Comments requested
> > >
> > > For the mbean stuff I am working on I need to find out if there
are
> > > getter/setter methods based on the current method name.  I've
written
> > the
> > > following additions to MethodTagsHandler and want to check that
I'm
> > not
> > > breaking any conventions, rules, etc by adding these.  Also if
there
> > is an
> > > easier way to do this I'd like to know.
> > >
> > > thanks
> > > david jencks
> > >
> > > Index: xdoclet/tags/MethodTagsHandler.java
> > >
===================================================================
> > > RCS file:
> > >
> >
/cvsroot/xdoclet/xdoclet/core/src/xdoclet/tags/MethodTagsHandler.java,v
> > > retrieving revision 1.23
> > > diff -u -r1.23 MethodTagsHandler.java
> > > --- xdoclet/tags/MethodTagsHandler.java   26 Feb 2002 06:04:29
> > > -0000     1.23
> > > +++ xdoclet/tags/MethodTagsHandler.java   26 Feb 2002 23:22:58
> > -0000
> > > @@ -935,6 +935,72 @@
> > >   }
> > >
> > >   /**
> > > +  * The block tag <code>ifHasGetMethod</code> looks for a get
> > > method based on
> > > +  * the attribute name from the current method, sets the
> > current
> > > method to that
> > > +  * get method, and applies the template if found. This is used
> > to
> > > look for
> > > +  * getters for mbean managed attributes. The get method found
> > may
> > > be the
> > > +  * current method.
> > > +  *
> > > +  * @param template              a <code>String</code> value
> > > +  * @param attributes            a <code>Properties</code>
> > value
> > > +  * @exception XDocletException  if an error occurs
> > > +  * @doc:tag                     type="block"
> > > +  */
> > > + public void ifHasGetMethod( String template, Properties
> > attributes
> > > ) throws XDocletException
> > > + {
> > > +         MethodDoc get_method = getGetMethod();
> > > +
> > > +         if( get_method != null )
> > > +         {
> > > +                 MethodDoc old_method = getCurrentMethod();
> > > +
> > > +                 setCurrentMethod( get_method );
> > > +                 try
> > > +                 {
> > > +                         generate( template );
> > > +                 }
> > > +                 finally
> > > +                 {
> > > +                         setCurrentMethod( old_method );
> > > +                 }
> > > +                 // end of try-catch
> > > +         }
> > > + }
> > > +
> > > + /**
> > > +  * The block tag <code>ifHasSetMethod</code> looks for a set
> > > method based on
> > > +  * the attribute name from the current method, sets the
> > current
> > > method to that
> > > +  * set method, and applies the template if found. This is used
> > to
> > > look for
> > > +  * setters for mbean managed attributes. The set method found
> > may
> > > be the
> > > +  * current method.
> > > +  *
> > > +  * @param template              a <code>String</code> value
> > > +  * @param attributes            a <code>Properties</code>
> > value
> > > +  * @exception XDocletException  if an error occurs
> > > +  * @doc:tag                     type="block"
> > > +  */
> > > + public void ifHasSetMethod( String template, Properties
> > attributes
> > > ) throws XDocletException
> > > + {
> > > +         MethodDoc set_method = getSetMethod();
> > > +
> > > +         if( set_method != null )
> > > +         {
> > > +                 MethodDoc old_method = getCurrentMethod();
> > > +
> > > +                 setCurrentMethod( set_method );
> > > +                 try
> > > +                 {
> > > +                         generate( template );
> > > +                 }
> > > +                 finally
> > > +                 {
> > > +                         setCurrentMethod( old_method );
> > > +                 }
> > > +                 // end of try-catch
> > > +         }
> > > + }
> > > +
> > > + /**
> > >    * Searches for the MethodDoc of the method with name
> > methodName
> > > and returns
> > >    * it.
> > >    *
> > > @@ -1037,6 +1103,47 @@
> > >                   cat.debug( "Method not found" );
> > >
> > >           return false;
> > > + }
> > > +
> > > + private MethodDoc getGetMethod() throws XDocletException
> > > + {
> > > +         MethodDoc current_method = getCurrentMethod();
> > > +
> > > +         if( current_method.name().startsWith( "get" ) ||
> > > current_method.name().startsWith( "is" ) )
> > > +         {
> > > +                 return current_method;
> > > +         }
> > > +
> > > +         // end of if ()
> > > +
> > > +         String attributeName = getMethodNameWithoutPrefixFor(
> > > current_method );
> > > +         MethodDoc getter = getMethodDocForMethodName( "get" +
> > > attributeName );
> > > +
> > > +         if( getter != null )
> > > +         {
> > > +                 return getter;
> > > +         }
> > > +         // end of if ()
> > > +         getter = getMethodDocForMethodName( "is" +
> > attributeName
> > > );
> > > +         //not too safe.. should check it's boolean.
> > > +         return getter;
> > > + }
> > > +
> > > + private MethodDoc getSetMethod() throws XDocletException
> > > + {
> > > +         MethodDoc current_method = getCurrentMethod();
> > > +
> > > +         if( current_method.name().startsWith( "set" ) )
> > > +         {
> > > +                 return current_method;
> > > +         }
> > > +
> > > +         // end of if ()
> > > +
> > > +         String attributeName = getMethodNameWithoutPrefixFor(
> > > current_method );
> > > +         MethodDoc setter = getMethodDocForMethodName( "set" +
> > > attributeName );
> > > +
> > > +         return setter;
> > >   }
> > >
> > >   private boolean isInAppendExceptionsList( String
> > > append_exceptions, String type )
> > >
> > > _______________________________________________
> > > Xdoclet-devel mailing list
> > > [EMAIL PROTECTED]
> > > https://lists.sourceforge.net/lists/listinfo/xdoclet-devel
> >
> >
> >
> > _______________________________________________
> > Xdoclet-devel mailing list
> > [EMAIL PROTECTED]
> > https://lists.sourceforge.net/lists/listinfo/xdoclet-devel
> >
> >
> 
> _______________________________________________
> Xdoclet-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/xdoclet-devel


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


_______________________________________________
Xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to