On 9/26/06, Matt Benson <[EMAIL PROTECTED]> wrote:
Peter: as you are the father of macrodef your opinion was one I was very interested in getting. I'm not sure I understood your example below. Could you clarify, and maybe elaborate on any ideas you have of what we might try to make macrodef more generic (I assume you mean so that it would just "work" regardless of its "body" contents.
Yes, I am not too sure about the mechanism, and there would be naming issues (esp with regard to DynamicConfigurable and it;s ikk) One maybe be able to do something like (taking examples from ant's build.xml ) <macrodef name="trax.avail"> <element> <or> <and> <isset property="javax.xml.transform.TransformerFactory"/> <available classname="${javax.xml.transform.TransformerFactory}" classpathref="classpath"/> </and> <available resource="META-INF/services/javax.xml.transform.TransformerFactory"/> </or> </element> </macrodef> <condition property="trax.impl.present"> <trax.avail/> </condition> - or - <macrodef name="exec.includes"> <elements> <include name="**/ant"/> <include name="**/antRun"/> <include name="**/*.pl"/> <include name="**/*.py"/> <include name="**/*.py"/> </elements> </macrodef> <chmod perm="ugo+x" type="file" failonerror="${chmod.fail}"> <fileset dir="${dist.bin}"> <exec-includes/> </fileset> </chmod> These are a bit lame, your example is better! <macrodef name="isEmptyFile"> <attribute name="file" /> <elements> <and> <available file="@{file}" type="file" /> <length file="@{file}" length="0" /> </and> </elements> </macrodef> The point is that this <macrodef> does not know about the type (if any) of the tags in the <elements>, it a macro more like c macros. Peter Worth mentioning
is the fact that macrodef's nested "sequential" appears to be a convention only; an actual Sequential object is not used; I'm thinking this is a good thing. Thanks, Matt --- Peter Reilly <[EMAIL PROTECTED]> wrote: > +1, > It would however be nicer to make macrodef > more generic. To inject the UEs into the macro > instance. > > Like: > <macrodef name="engine"> > <attribute name="impl"> > <dom> > <service > type="javax.script.ScriptEngineFactory" > provider="@{impl}"/> > </dom> > </macrodef> > > <jar jarfile="x.jar"> > <fileset dir="classes"/> > <engine impl="org.me.SimpleLang"/> > </jar> > > Do not know if it is possible. > Peter > > On 9/26/06, Alexey Solofnenko <[EMAIL PROTECTED]> > wrote: > > > > +1 Good idea, Matt. > > > > - Alexey. > > > > On 9/26/06, Matt Benson <[EMAIL PROTECTED]> > wrote: > > > > > > It strikes me that we don't have a utility to > > > declaratively build custom conditions from > others; > > > macrodef would seem the obvious choice for, > e.g.: > > > > > > <macrodef name="isEmptyFile"> > > > <attribute name="file" /> > > > <sequential> > > > <and> > > > <available file="@{file}" type="file" /> > > > <length file="@{file}" length="0" /> > > > </and> > > > </sequential> > > > </macrodef> > > > > > > But the result amounts to a Task: executable, > but > > > unavailable for use where conditions would be > > > available. > > > > > > Would it make sense to allow this by allowing a > nested > > > <condition> as an alternative to <sequential>? > Then > > > cloning the MacroInstance class to > MacroCondition > > > implements Condition, for use when <condition> > is > > > specified? Cloning the entire > MacroDef/MacroInstance > > > family to have an entirely new task feels a > little > > > extreme to me here... > > > > > > Alternative suggestions? > > > > > > TIA, > > > Matt > > > > > > > __________________________________________________ > > > Do You Yahoo!? > > > Tired of spam? Yahoo! Mail has the best spam > protection around > > > http://mail.yahoo.com > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: > [EMAIL PROTECTED] > > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > > > > > > -- > > Alexey N. Solofnenko trelony at gmail.com > > home: http://trelony.cjb.net/ > > Pleasant Hill, CA (GMT-8 hours usually) > > > > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]