Bug1:

The ejbdoclet generates invalid ejb-jar.xml files if you have:

 * @ejb:ejb-external-ref ejb-name="PendingEJB" type="Entity"
home="com.fds.fc.order.pending.PendingHome"
remote="com.fds.fc.order.pending.Pending"
 *
 * @ejb:ejb-ref ejb-name="fc/MiniSegment" view-type="local"

The problem is that the ejb-body.j file loops over all ejb-refs first,
then ejb-external-refs.  If you have a ejb-ref view-type="local" and a
ejb-external-ref that's remote, the result is that the ejb-jar.xml file
has ejb-local-refs before ejb-refs, which is invalid per the ejb20 DTD:

<!ELEMENT entity (description?, display-name?, small-icon?,
large-icon?, ejb-name, home?, remote?, local-home?, local?, ejb-class,
persistence-type, prim-key-class, reentrant, cmp-version?,
abstract-schema-name?, cmp-field*, primkey-field?,
env-entry*, ejb-ref*, ejb-local-ref*,
security-role-ref*, security-identity?, resource-ref*,
resource-env-ref*, query*)>

Bug2:

Typo in vendor/weblogic-ejb-jar-xml.j.

Proposed patches (that work for me) are attached:
? xdoclet/ejb/ejb-body.j-grk
? xdoclet/ejb/ejb-body.j-cvs
Index: xdoclet/ejb/ejb-body.j
===================================================================
RCS file: /cvsroot/xdoclet/xdoclet/core/resources/xdoclet/ejb/ejb-body.j,v
retrieving revision 1.27
diff -c -r1.27 ejb-body.j
*** xdoclet/ejb/ejb-body.j      2001/10/26 11:03:45     1.27
--- xdoclet/ejb/ejb-body.j      2001/10/31 17:06:03
***************
*** 148,162 ****
              <ejb-link><XDtClass:classTagValue tagName="ejb:ejb-ref" 
paramName="ejb-name"/></ejb-link>
           </ejb-ref>
         </XDtClass:ifClassTagValueEquals>
-        <XDtClass:ifClassTagValueEquals tagName="ejb:ejb-ref" paramName="view-type" 
value="local">
-          <ejb-local-ref>
-             <ejb-ref-name><XDtClass:ifHasClassTag tagName="ejb:ejb-ref" 
paramName="ref-name">ejb/<XDtClass:classTagValue tagName="ejb:ejb-ref" 
paramName="ref-name"/></XDtClass:ifHasClassTag><XDtClass:ifDoesntHaveClassTag 
tagName="ejb:ejb-ref" paramName="ref-name">ejb/<XDtClass:classTagValue 
tagName="ejb:ejb-ref" 
paramName="ejb-name"/></XDtClass:ifDoesntHaveClassTag></ejb-ref-name>
-             <ejb-ref-type><XDtEjb:beanType/></ejb-ref-type>
-             <local-home><XDtEjbHome:homeInterface type="local"/></local-home>
-             <local><XDtEjbIntf:componentInterface type="local"/></local>
-             <ejb-link><XDtClass:classTagValue tagName="ejb:ejb-ref" 
paramName="ejb-name"/></ejb-link>
-          </ejb-local-ref>
-        </XDtClass:ifClassTagValueEquals>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifDoesntHaveClassTag tagName="ejb:ejb-ref" paramName="view-type">
           <ejb-ref>
--- 148,153 ----
***************
*** 168,173 ****
--- 159,165 ----
           </ejb-ref>
        </XDtClass:ifDoesntHaveClassTag>
      </XDtEjbRef:forAllEjbRefs>
+ 
      <XDtClass:forAllClassTags tagName="ejb:ejb-external-ref">
        <XDtClass:ifHasClassTag tagName="ejb:ejb-external-ref" paramName="view-type">
         <XDtClass:ifClassTagValueEquals tagName="ejb:ejb-external-ref" 
paramName="view-type" value="remote">
***************
*** 178,191 ****
              <remote><XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
paramName="remote"/></remote>
           </ejb-ref>
         </XDtClass:ifClassTagValueEquals>
-        <XDtClass:ifClassTagValueEquals tagName="ejb:ejb-external-ref" 
paramName="view-type" value="local">
-          <ejb-local-ref>
-             <ejb-ref-name>ejb/<XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
paramName="ejb-name"/></ejb-ref-name>
-             <ejb-ref-type><XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
paramName="type" values="Entity,Session"/></ejb-ref-type>
-             <local-home><XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
paramName="home"/></local-home>
-             <local><XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
paramName="remote"/></local>
-          </ejb-local-ref>
-        </XDtClass:ifClassTagValueEquals>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifDoesntHaveClassTag tagName="ejb:ejb-external-ref" 
paramName="view-type">
           <ejb-ref>
--- 170,175 ----
***************
*** 195,200 ****
--- 179,211 ----
              <remote><XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
paramName="remote"/></remote>
           </ejb-ref>
        </XDtClass:ifDoesntHaveClassTag>
+     </XDtClass:forAllClassTags>
+ 
+     <XDtEjbRef:forAllEjbRefs>
+       <XDtClass:ifHasClassTag tagName="ejb:ejb-ref" paramName="view-type">
+        <XDtClass:ifClassTagValueEquals tagName="ejb:ejb-ref" paramName="view-type" 
+value="local">
+          <ejb-local-ref>
+             <ejb-ref-name><XDtClass:ifHasClassTag tagName="ejb:ejb-ref" 
+paramName="ref-name">ejb/<XDtClass:classTagValue tagName="ejb:ejb-ref" 
+paramName="ref-name"/></XDtClass:ifHasClassTag><XDtClass:ifDoesntHaveClassTag 
+tagName="ejb:ejb-ref" paramName="ref-name">ejb/<XDtClass:classTagValue 
+tagName="ejb:ejb-ref" 
+paramName="ejb-name"/></XDtClass:ifDoesntHaveClassTag></ejb-ref-name>
+             <ejb-ref-type><XDtEjb:beanType/></ejb-ref-type>
+             <local-home><XDtEjbHome:homeInterface type="local"/></local-home>
+             <local><XDtEjbIntf:componentInterface type="local"/></local>
+             <ejb-link><XDtClass:classTagValue tagName="ejb:ejb-ref" 
+paramName="ejb-name"/></ejb-link>
+          </ejb-local-ref>
+        </XDtClass:ifClassTagValueEquals>
+       </XDtClass:ifHasClassTag>
+     </XDtEjbRef:forAllEjbRefs>
+ 
+     <XDtClass:forAllClassTags tagName="ejb:ejb-external-ref">
+       <XDtClass:ifHasClassTag tagName="ejb:ejb-external-ref" paramName="view-type">
+        <XDtClass:ifClassTagValueEquals tagName="ejb:ejb-external-ref" 
+paramName="view-type" value="local">
+          <ejb-local-ref>
+             <ejb-ref-name>ejb/<XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
+paramName="ejb-name"/></ejb-ref-name>
+             <ejb-ref-type><XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
+paramName="type" values="Entity,Session"/></ejb-ref-type>
+             <local-home><XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
+paramName="home"/></local-home>
+             <local><XDtClass:classTagValue tagName="ejb:ejb-external-ref" 
+paramName="remote"/></local>
+          </ejb-local-ref>
+        </XDtClass:ifClassTagValueEquals>
+       </XDtClass:ifHasClassTag>
      </XDtClass:forAllClassTags>
    </XDtMerge:merge>
  
Index: xdoclet/ejb/vendor/weblogic-ejb-jar-xml.j
===================================================================
RCS file: 
/cvsroot/xdoclet/xdoclet/core/resources/xdoclet/ejb/vendor/weblogic-ejb-jar-xml.j,v
retrieving revision 1.12
diff -c -r1.12 weblogic-ejb-jar-xml.j
*** xdoclet/ejb/vendor/weblogic-ejb-jar-xml.j   2001/10/26 11:03:46     1.12
--- xdoclet/ejb/vendor/weblogic-ejb-jar-xml.j   2001/10/31 17:06:03
***************
*** 220,226 ****
          <XDtClass:forAllClassTags tagName="weblogic:ejb-local-reference-description">
           <ejb-local-reference-description>
              <ejb-ref-name><XDtClass:classTagValue 
tagName="weblogic:ejb-local-reference-description" 
paramName="ejb-ref-name"/></ejb-ref-name>
!             <jndi-name><XDtClass:classTagValue 
tagName="weblogic:ejb-reference-description" paramName="jndi-name"/></jndi-name>
           </ejb-local-reference-description>
          </XDtClass:forAllClassTags>
         </XDtConfig:ifConfigParamGreaterOrEquals>
--- 220,226 ----
          <XDtClass:forAllClassTags tagName="weblogic:ejb-local-reference-description">
           <ejb-local-reference-description>
              <ejb-ref-name><XDtClass:classTagValue 
tagName="weblogic:ejb-local-reference-description" 
paramName="ejb-ref-name"/></ejb-ref-name>
!             <jndi-name><XDtClass:classTagValue 
tagName="weblogic:ejb-local-reference-description" paramName="jndi-name"/></jndi-name>
           </ejb-local-reference-description>
          </XDtClass:forAllClassTags>
         </XDtConfig:ifConfigParamGreaterOrEquals>

Reply via email to