Found it.  XDtClass:classTagValueMatch and XDtClass:matchValue did the trick.  I can now specify my constants in my EJB class.  So the following comments:

 

 * @ejb:const name="TEXT_FIELD" type="String" value="text"

 * @ejb:const name="CHAR_FIELD" type="char" value="A"

 * @ejb:const name="PRIMITIVE_FIELD" type="int" value="100"

 * @ejb:const name="OBJECT_FIELD" type="Integer" value="200"

 

Generates the following code:

    public static final String TEXT_FIELD = "text";

    public static final char CHAR_FIELD = 'A';

    public static final int PRIMITIVE_FIELD = 100;

    public static final Integer OBJECT_FIELD = new Integer(200);

 

I use this as my remote-custom.xdt:

<XDtClass:ifHasClassTag tagName="ejb:const">

   <XDtClass:forAllClassTags tagName="ejb:const">

     <XDtClass:classTagValueMatch tagName="ejb:const" paramName="type"/>

     <XDtType:ifIsPrimitive value="<XDtClass:matchValue/>">

       <XDtClass:ifClassTagValueEquals tagName="ejb:const" paramName="type" value="char">

    public static final <XDtClass:matchValue/> <XDtClass:classTagValue tagName="ejb:const" paramName="name"/> = '<XDtClass:classTagValue tagName="ejb:const" paramName="value"/>';

       </XDtClass:ifClassTagValueEquals>

       <XDtClass:ifClassTagValueNotEquals tagName="ejb:const" paramName="type" value="char">

    public static final <XDtClass:matchValue/> <XDtClass:classTagValue tagName="ejb:const" paramName="name"/> = <XDtClass:classTagValue tagName="ejb:const" paramName="value"/>;

       </XDtClass:ifClassTagValueNotEquals>

     </XDtType:ifIsPrimitive>

     <XDtType:ifIsNotPrimitive value="<XDtClass:matchValue/>">

       <XDtClass:ifClassTagValueEquals tagName="ejb:const" paramName="type" value="String">

    public static final <XDtClass:matchValue/> <XDtClass:classTagValue tagName="ejb:const" paramName="name"/> = "<XDtClass:classTagValue tagName="ejb:const" paramName="value"/>";

       </XDtClass:ifClassTagValueEquals>

       <XDtClass:ifClassTagValueNotEquals tagName="ejb:const" paramName="type" value="String">

    public static final <XDtClass:matchValue/> <XDtClass:classTagValue tagName="ejb:const" paramName="name"/> = new <XDtClass:matchValue/>(<XDtClass:classTagValue tagName="ejb:const" paramName="value"/>);

       </XDtClass:ifClassTagValueNotEquals>

     </XDtType:ifIsNotPrimitive>

   </XDtClass:forAllClassTags>

 </XDtClass:ifHasClassTag>

 <XDtClass:ifDoesntHaveClassTag tagName="ejb:const">

    // if you want to add public static fields please use the tag ejb.const

 (remote-custom.xdt)

 </XDtClass:ifDoesntHaveClassTag>

 

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Poitras, William (Eq,FI&RWM)
Sent:
Monday, February 13, 2006 12:25 PM
To: [email protected]
Subject: [Xdoclet-user] Templates and variables

 

I have an _expression_ <XDtClass:classTagValue tagName="ejb:const" paramName="value"/> that I want to use inside of a <XDtType:ifIsNotPrimitiveOrString> _expression_.  But I can’t seem to find how to save the _expression_ as a variable to use be used as the “value” parameter of ifIsNotPrimitiveOrString.  Any ideas?

 

Basically what I’m trying to do is build on top of an idea someone had to allow you to specify constants in an EJB remote interface:

<XDtClass:ifHasClassTag tagName="ejb:const">
   <XDtClass:forAllClassTags tagName="ejb:const">
    public static final <XDtClass:classTagValue tagName="ejb:const"
 paramName="type"/> <XDtClass:classTagValue tagName="ejb:const"
 paramName="name"/> = new <XDtClass:classTagValue tagName="ejb:const"
 paramName="type"/>(<XDtClass:classTagValue tagName="ejb:const"
 paramName="value"/>);
   </XDtClass:forAllClassTags>
 </XDtClass:ifHasClassTag>
 <XDtClass:ifDoesntHaveClassTag tagName="ejb:const">
    // if you want to add public static fields please use the tag ejb.const
 (remote-custom.xdt)
 </XDtClass:ifDoesntHaveClassTag>

 

The problem is that it doesn’t support Strings and primitive types.  So I need to do some conditional logic.  But the value I need to be conditional on, is the _expression_ I mentioned at the beginning.

Reply via email to