Hello Matthias!

My name is Magnus Larsson and I am responsible for the WebSphere module.
I will be happy to help you on this!

I took a quick look in IBM RSA to see how IBM generate the code you are 
talking about. Here is an extract from the "extension-DD-file":

  <ejbExtensions xmi:type="ejbext:SessionExtension" 
xmi:id="SessionExtension_1103726745000">
    <enterpriseBean xmi:type="ejb:Session" 
href="META-INF/ejb-jar.xml#SampleSession"/>
    <resourceRefExtensions xmi:id="ResourceRefExtension_1103726745000" 
isolationLevel="TRANSACTION_READ_COMMITTED">
      <resourceRef href="META-INF/ejb-jar.xml#ResourceRef_1103726744970"/>
    </resourceRefExtensions>
  </ejbExtensions>

Its structure is to me very similar to the corresponding code fragment you can 
find in the "binding-DD-file":

  <ejbBindings xmi:id="EnterpriseBeanBinding_1103726744970" 
jndiName="ejb/se/callista/ebj/SampleSessionHome">
    <enterpriseBean xmi:type="ejb:Session" 
href="META-INF/ejb-jar.xml#SampleSession"/>
    <resRefBindings xmi:id="ResourceRefBinding_1103726744970" 
jndiName="jdbc/MyDb">
      <bindingResourceRef 
href="META-INF/ejb-jar.xml#ResourceRef_1103726744970"/>
    </resRefBindings>
  </ejbBindings>

Since we already generate code for the bindingfile I guess you simply can copy 
that structure from the binding-template-file into the 
extension-template-file and then just change the details...

If you preffer I can make an initial effort to add the code in the 
extension-template-file and you can test it and then suggest adjustments that 
you find appropriate.

Anyhow please create a case in JIRA for this so that we can follow up all 
extensions and bug fixes in a formalized way.

Best Regards,
Magnus.


On Tuesday 21 December 2004 21:03, Matthias Germann wrote:
> Dear XDoclet developers,
>
> I'm trying to create a patch for an additional feature in the IBM
> WebSphere module.
>
> IBM Websphere offers the possibility to specify additional properties
> for a Resource-Reference in a proprietary deployment descriptor (i.e.
> the transaction isolation level).
>
> I thought that i could add a "websphere.resource-ref" Tag for the
> additional WebSphere proprietary parameters. As a bean may declare
> multiple Resource-References, the tags could look like this:
>
> /*
>   * @ejb.resource-ref
>   *   res-ref-name="DS1"
>   * @websphere.resource-ref
>   *   res-ref-name="DS1"
>   *   transaction-isolation="TRANSACTION_READ_COMMITTED"
>   *
>   * @ejb.resource-ref
>   *  res-ref-name="DS2"
>   * @websphere.resource-ref
>   *   res-ref-name="DS2"
>   *   transaction-isolation="TRANSACTION_READ_UNCOMMITTED"
>   */
>
> The generated deployment descriptors for this example should look
> similar to the snippets below. It's important to notice that the
> Elements in the WebSphere proprietary descriptors are links to the
> Elements in the ejb-jar.xml with the ID attribute and not with the
> res-ref-name.
>
> ejb-jar.xml:
> <resource-ref id="ResRef_12>
>    <res-ref-name>DS1<res-ref-name>
>    ...
> </resource-ref>
> <resource-ref id="ResRef_13>
>    <res-ref-name>DS2<res-ref-name>
>    ...
> </resource-ref>
>
> WebSphere proprietary descriptor (names may be wrong) :
> <resource-ref-ext>
>    <resource-ref href="ejb-jar.xml#ResRef_12"/>
>    <transactionIsolation>TRANSACTION_READ_COMMITTED</transactionIsolation>
> </resource-ref-ext>
>
> <resource-ref-ext>
>    <resource-ref href="ejb-jar.xml#ResRef_12"/>
>    <transactionIsolation>TRANSACTION_READ_COMMITTED</transactionIsolation>
> </resource-ref-ext>
>
>
> I thought, that i could loop through the "ejb.resource-ref" tags and
> create a <resource-ref-ext> element in the WebSphere DD for each
> ejb.resource-ref tag. If i use the same prefix for generating the id as
> the ejb Module, i should be able to get the correct ID for the href
> Attribute. If there is a "websphere.resource-ref" tag with the same
> "res-ref-name" parameter value as the "res-ref-name" of the current
> "ejb.resource-ref" tag, the values from this tag are inserted into the
> WebSphere DD element.
>
> The essential part of my WebSphere DD Template looks like below. I try
> to use the match variable for storing the "res-ref-name".
>
> <XDtClass:forAllClassTags tagName="ejb.resource-ref" >
> <resource-ref-ext>
>    <resource-ref href="ejb-jar.xml#<XDtId:prefixedId prefix='ResRef'
> wrapInIdEquals='false'/>"/>
> <XDtClass:classTagValueMatch tagName="ejb.resource-ref"
> paramName="res-ref-name"/>
> <XDtClass:forAllClassTags tagName="websphere.resource-ref" >
> <XDtClass:ifClassTagValueMatches tagName="websphere.resource-ref"
> paramName="res-ref-name">
> <XDtClass:ifHasClassTag tagName="websphere.resource-ref"
> paramName="transaction-isolation">
> ...
>
> This does not work because the forAllClassTags resets the value of the
> match variable (see method forAllClassTags in class
> xdoclet.tagshandler.ClassTagsHandler). Therefore, a
> "transaction-isolation" element is never created.
>
> Is there a better approach than mine?
>
> Is it the right approach to use the match variable for saving the value
> of the "res-ref-name"?
>
> Why does the ClassTagsHandler reset the value of the match variable in
> the forAllClassTags method?
>
> I found similar code in the jboss module
> (modules/jboss/src/xdoclet/modules/jboss/jmx/resources/jbossmx-xml-descript
>or.xdt)
>
> I have not tested the code, but i think that it does not work because it
> uses the same pattern as i try to use.
>
> Thanks for your help.
>
> Regards,
> Matthias

-- 
Magnus Larsson
Callista Enterprise AB
http://www.callista.se/enterprise



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/
_______________________________________________
xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to