Hi,

There seems to be a bug in the asm-descriptor.j in XDoclet 1.1.2.  It does
not add the <ejb-name> tag to the <method> tag or Message Driven Beans,
resulting in an incorrect ejb-jar.xml file.

I have included the fix below, perhaps someone could put this into the next
version?

   <assembly-descriptor <XDtId:prefixedId prefix="AssemblyDescriptor"/>>
    <XDtMerge:merge file="ejb-security-roles.xml">
     <XDtEjbSec:forAllSecurityRoles>
      <security-role>
         <description><XDtI18n:getString bundle="xdoclet.ejb.Messages"
resource="description_not_supported"/></description>
         <role-name><XDtEjbSec:securityRoleName/></role-name>
      </security-role>
     </XDtEjbSec:forAllSecurityRoles>
    </XDtMerge:merge>

 <XDtEjb:forAllBeans>
 <XDtEjb:ifIsAConcreteEJBean>
  <XDtClass:ifHasClassTag tagName="ejb:permission">
      <method-permission <XDtId:prefixedId prefix="MethodPermission"/>>
         <description><XDtI18n:getString bundle="xdoclet.ejb.Messages"
resource="description_not_supported"/></description>
      <XDtClass:forAllClassTags tagName="ejb:permission">
       <XDtClass:ifHasClassTag tagName="ejb:permission"
paramName="role-name">
        <XDtClass:forAllClassTagTokens tagName="ejb:permission"
paramName="role-name" delimiter=",">
         <role-name><XDtClass:currentToken/></role-name>
        </XDtClass:forAllClassTagTokens>
       </XDtClass:ifHasClassTag>
       <XDtClass:ifDoesntHaveClassTag tagName="ejb:permission"
paramName="role-name">
        <XDtClass:ifHasClassTag tagName="ejb:permission"
paramName="unchecked">
        <XDtConfig:ifConfigParamGreaterOrEquals paramName="EjbSpec"
value="2.0">
         <unchecked/>
        </XDtConfig:ifConfigParamGreaterOrEquals>
        </XDtClass:ifHasClassTag>
       </XDtClass:ifDoesntHaveClassTag>
      </XDtClass:forAllClassTags>
         <method <XDtId:prefixedId prefix="MethodElement"/>>
            <description><XDtI18n:getString bundle="xdoclet.ejb.Messages"
resource="description_not_supported"/></description>
           <XDtType:ifIsOfType type="javax.ejb.SessionBean">
            <ejb-name><XDtEjb:ejbName/></ejb-name>
           </XDtType:ifIsOfType>
           <XDtType:ifIsOfType type="javax.ejb.EntityBean">
            <ejb-name><XDtEjb:ejbName/></ejb-name>
           </XDtType:ifIsOfType>

        <!-- MESSAGE DRIVEN BEAN CHANGE -->     
           <XDtType:ifIsOfType type="javax.ejb.MessageDrivenBean">
             <ejb-name><XDtEjb:ejbName/></ejb-name>
           </XDtType:ifIsOfType>
        <!-- MESSAGE DRIVEN BEAN CHANGE -->     

            <method-name>*</method-name>
         </method>
      </method-permission>
  </XDtClass:ifHasClassTag>

  <XDtMethod:forAllMethods>
   <XDtMethod:ifHasMethodTag tagName="ejb:permission">
    <XDtEjbIntf:ifIsInterfaceMethod>
     <XDtEjbIntf:forAllInterfaceViewTypes>
   <method-permission <XDtId:prefixedId prefix="MethodPermission"/>>
      <description><XDtI18n:getString bundle="xdoclet.ejb.Messages"
resource="description_not_supported"/></description>
   <XDtMethod:forAllMethodTags tagName="ejb:permission">
    <XDtMethod:ifHasMethodTag tagName="ejb:permission"
paramName="role-name">
        <XDtMethod:forAllMethodTagTokens tagName="ejb:permission"
paramName="role-name" delimiter=",">
         <role-name><XDtClass:currentToken/></role-name>
        </XDtMethod:forAllMethodTagTokens>
    </XDtMethod:ifHasMethodTag>
    <XDtMethod:ifDoesntHaveMethodTag tagName="ejb:permission"
paramName="role-name">
    <XDtMethod:ifHasMethodTag tagName="ejb:permission"
paramName="unchecked">
     <XDtConfig:ifConfigParamGreaterOrEquals paramName="EjbSpec"
value="2.0">
      <unchecked/>
     </XDtConfig:ifConfigParamGreaterOrEquals>
    </XDtMethod:ifHasMethodTag>
    </XDtMethod:ifDoesntHaveMethodTag>
   </XDtMethod:forAllMethodTags>
      <method <XDtId:prefixedId prefix="MethodElement"/>>
 
<description><![CDATA[<XDtMethod:firstSentenceDescriptionOfCurrentMethod/>]]
></description>
        <XDtType:ifIsOfType type="javax.ejb.SessionBean">
         <ejb-name><XDtEjb:ejbName/></ejb-name>
        </XDtType:ifIsOfType>
        <XDtType:ifIsOfType type="javax.ejb.EntityBean">
         <ejb-name><XDtEjb:ejbName/></ejb-name>
        </XDtType:ifIsOfType>

        <!-- MESSAGE DRIVEN BEAN CHANGE -->     
           <XDtType:ifIsOfType type="javax.ejb.MessageDrivenBean">
             <ejb-name><XDtEjb:ejbName/></ejb-name>
           </XDtType:ifIsOfType>
        <!-- MESSAGE DRIVEN BEAN CHANGE -->     

        <XDtEjbHome:ifNotRemoveMethod>
         <method-intf><XDtEjbIntf:methodIntf/></method-intf>
        </XDtEjbHome:ifNotRemoveMethod>
         <method-name><XDtEjbIntf:interfaceMethodName/></method-name>
         <method-params>
           <XDtParameter:forAllMethodParams>
            <method-param><XDtParameter:methodParamType/></method-param>
           </XDtParameter:forAllMethodParams>
         </method-params>
      </method>
   </method-permission>
     </XDtEjbIntf:forAllInterfaceViewTypes>
    </XDtEjbIntf:ifIsInterfaceMethod>
   </XDtMethod:ifHasMethodTag>
  </XDtMethod:forAllMethods>

   <!-- finder permissions -->
  <XDtClass:forAllClassTags tagName="ejb:finder">
   <XDtClass:ifHasClassTag tagName="ejb:finder" paramName="role-name">
   <method-permission <XDtId:prefixedId prefix="MethodPermission"/>>
      <description><XDtI18n:getString bundle="xdoclet.ejb.Messages"
resource="description_not_supported"/></description>
      <XDtClass:forAllClassTagTokens tagName="ejb:finder"
paramName="role-name" delimiter=",">
      <role-name><XDtClass:currentToken/></role-name>
       </XDtClass:forAllClassTagTokens>
      <method <XDtId:prefixedId prefix="MethodElement"/>>
        <XDtClass:ifHasClassTag tagName="ejb:bean" paramName="name">
         <ejb-name><XDtEjb:ejbName/></ejb-name>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="ejb:finder"
paramName="method-intf">
         <method-intf><XDtClass:classTagValue tagName="ejb:finder"
paramName="method-intf" values="Home,LocalHome"/></method-intf>
        </XDtClass:ifHasClassTag>
         <method-name><XDtClass:classTagValue tagName="ejb:finder"
paramName="signature" tokenNumber="1"  delimiter=" ("/></method-name>
         <method-params>
           <XDtClass:forAllClassTagTokens tagName="ejb:finder"
paramName="signature" delimiter="( ,)" skip="2">
 
<method-param><XDtClass:currentToken/></method-param><XDtClass:skipToken/>
           </XDtClass:forAllClassTagTokens>
         </method-params>
      </method>
   </method-permission>
   </XDtClass:ifHasClassTag>

    <XDtConfig:ifConfigParamGreaterOrEquals paramName="EjbSpec" value="2.0">
     <XDtClass:ifHasClassTag tagName="ejb:finder" paramName="unchecked">
   <method-permission <XDtId:prefixedId prefix="MethodPermission"/>>
      <description><XDtI18n:getString bundle="xdoclet.ejb.Messages"
resource="description_not_supported"/></description>
      <unchecked/>
      <method <XDtId:prefixedId prefix="MethodElement"/>>
        <XDtClass:ifHasClassTag tagName="ejb:bean" paramName="name">
         <ejb-name><XDtEjb:ejbName/></ejb-name>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="ejb:finder"
paramName="method-intf">
         <method-intf><XDtClass:classTagValue tagName="ejb:finder"
paramName="method-intf" values="Home,LocalHome"/></method-intf>
        </XDtClass:ifHasClassTag>
         <method-name><XDtClass:classTagValue tagName="ejb:finder"
paramName="signature" tokenNumber="1"  delimiter=" ("/></method-name>
         <method-params>
           <XDtClass:forAllClassTagTokens tagName="ejb:finder"
paramName="signature" delimiter="( ,)" skip="2">
 
<method-param><XDtClass:currentToken/></method-param><XDtClass:skipToken/>
           </XDtClass:forAllClassTagTokens>
         </method-params>
      </method>
   </method-permission>
     </XDtClass:ifHasClassTag>
    </XDtConfig:ifConfigParamGreaterOrEquals>
  </XDtClass:forAllClassTags>

  <XDtClass:ifHasClassTag tagName="ejb:pk" paramName="role-name">
   <method-permission <XDtId:prefixedId prefix="MethodPermission"/>>
      <description><XDtI18n:getString bundle="xdoclet.ejb.Messages"
resource="dd_findbypk_perm"/></description>
     <XDtClass:forAllClassTagTokens tagName="ejb:pk" paramName="role-name"
delimiter=",">
      <role-name><XDtClass:currentToken/></role-name>
     </XDtClass:forAllClassTagTokens>
      <method <XDtId:prefixedId prefix="MethodElement"/>>
        <XDtClass:ifHasClassTag tagName="ejb:bean" paramName="name">
         <ejb-name><XDtEjb:ejbName/></ejb-name>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="ejb:pk" paramName="method-intf">
         <method-intf><XDtClass:classTagValue tagName="ejb:pk"
paramName="method-intf" values="Home,LocalHome"/></method-intf>
        </XDtClass:ifHasClassTag>
         <method-name>findByPrimaryKey</method-name>
      </method>
   </method-permission>
  </XDtClass:ifHasClassTag>

 <XDtConfig:ifConfigParamGreaterOrEquals paramName="EjbSpec" value="2.0">
  <XDtClass:ifHasClassTag tagName="ejb:pk" paramName="unchecked">
   <method-permission <XDtId:prefixedId prefix="MethodPermission"/>>
      <description><XDtI18n:getString bundle="xdoclet.ejb.Messages"
resource="dd_findbypk_perm"/></description>
      <unchecked/>
      <method <XDtId:prefixedId prefix="MethodElement"/>>
        <XDtClass:ifHasClassTag tagName="ejb:bean" paramName="name">
         <ejb-name><XDtEjb:ejbName/></ejb-name>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="ejb:pk" paramName="method-intf">
         <method-intf><XDtClass:classTagValue tagName="ejb:pk"
paramName="method-intf" values="Home,LocalHome"/></method-intf>
        </XDtClass:ifHasClassTag>
         <method-name>findByPrimaryKey</method-name>
      </method>
   </method-permission>
  </XDtClass:ifHasClassTag>
 </XDtConfig:ifConfigParamGreaterOrEquals>
 <XDtConfig:ifConfigParamNotGreaterOrEquals paramName="EjbSpec" value="2.0">
  <XDtClass:ifHasClassTag tagName="ejb:pk" paramName="unchecked">
   <method-permission <XDtId:prefixedId prefix="MethodPermission"/>>
      <description><XDtI18n:getString bundle="xdoclet.ejb.Messages"
resource="dd_findbypk_perm"/></description>
      <unchecked/>
      <method <XDtId:prefixedId prefix="MethodElement"/>>
        <XDtClass:ifHasClassTag tagName="ejb:bean" paramName="name">
         <ejb-name><XDtEjb:ejbName/></ejb-name>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="ejb:pk" paramName="method-intf">
         <method-intf><XDtClass:classTagValue tagName="ejb:pk"
paramName="method-intf" values="Home,LocalHome"/></method-intf>
        </XDtClass:ifHasClassTag>
         <method-name>findByPrimaryKey</method-name>
      </method>
   </method-permission>
  </XDtClass:ifHasClassTag>
 </XDtConfig:ifConfigParamNotGreaterOrEquals>
 </XDtEjb:ifIsAConcreteEJBean>
 </XDtEjb:forAllBeans>

   <!-- transactions -->
 <XDtEjb:forAllBeans>
 <XDtEjb:ifIsAConcreteEJBean>
  <XDtClass:ifHasClassTag tagName="ejb:transaction">
   <container-transaction <XDtId:prefixedId prefix="MethodTransaction"/>>
      <method <XDtId:prefixedId prefix="MethodElement"/>>
         <ejb-name><XDtEjb:ejbName/></ejb-name>
         <method-name>*</method-name>
      </method>
      <trans-attribute><XDtClass:classTagValue tagName="ejb:transaction"
paramName="type"/></trans-attribute>
   </container-transaction>
  </XDtClass:ifHasClassTag>
  <XDtMethod:forAllMethods>
   <XDtMethod:ifHasMethodTag tagName="ejb:transaction">
    <XDtEjbIntf:ifIsInterfaceMethod>
     <XDtEjbIntf:forAllInterfaceViewTypes>
   <container-transaction <XDtId:prefixedId prefix="MethodTransaction"/>>
      <method <XDtId:prefixedId prefix="MethodElement"/>>
         <ejb-name><XDtEjb:ejbName/></ejb-name>
         <method-intf><XDtEjbIntf:methodIntf/></method-intf>
         <method-name><XDtEjbIntf:interfaceMethodName/></method-name>
         <method-params>
           <XDtParameter:forAllMethodParams>
            <method-param><XDtParameter:methodParamType/></method-param>
           </XDtParameter:forAllMethodParams>
         </method-params>
      </method>
      <trans-attribute><XDtMethod:methodTagValue tagName="ejb:transaction"
paramName="type"/></trans-attribute>
   </container-transaction>
     </XDtEjbIntf:forAllInterfaceViewTypes>
    </XDtEjbIntf:ifIsInterfaceMethod>
   </XDtMethod:ifHasMethodTag>
  </XDtMethod:forAllMethods>
  </XDtEjb:ifIsAConcreteEJBean>
 </XDtEjb:forAllBeans>

   <!-- finder transactions -->
 <XDtEjb:forAllBeans>
  <XDtEjb:ifIsAConcreteEJBean>
   <XDtClass:forAllClassTags tagName="ejb:finder">
    <XDtClass:ifHasClassTag tagName="ejb:finder"
paramName="transaction-type">
   <container-transaction <XDtId:prefixedId prefix="MethodTransaction"/>>
      <method <XDtId:prefixedId prefix="MethodElement"/>>
         <ejb-name><XDtEjb:ejbName/></ejb-name>
        <XDtClass:ifHasClassTag tagName="ejb:finder"
paramName="method-intf">
         <method-intf><XDtClass:classTagValue tagName="ejb:finder"
paramName="method-intf" values="Home,LocalHome"/
default="Home"></method-intf>
        </XDtClass:ifHasClassTag>
         <method-name><XDtClass:classTagValue tagName="ejb:finder"
paramName="signature" tokenNumber="1"  delimiter=" ("/></method-name>
         <method-params>
           <XDtClass:forAllClassTagTokens tagName="ejb:finder"
paramName="signature" delimiter="( ,)" skip="2">
 
<method-param><XDtClass:currentToken/></method-param><XDtClass:skipToken/>
           </XDtClass:forAllClassTagTokens>
         </method-params>
      </method>
      <trans-attribute><XDtMethod:methodTagValue tagName="ejb:finder"
paramName="transaction-type"/></trans-attribute>
   </container-transaction>
    </XDtClass:ifHasClassTag>
   </XDtClass:forAllClassTags>
  </XDtEjb:ifIsAConcreteEJBean>
 </XDtEjb:forAllBeans>
   </assembly-descriptor>

Thanks,
Theo Harper

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

Reply via email to