Well I finally finished the jbosscmp-jdbc.xml stuff. I have inclosed a 
completly new jbosscmp-jdbc.j, a tar file that implements all of the 
cases found in the Monson-Haefel book including the schemas and a junit 
test to test them.

I added support for the SecrityDomain as an ant property.

If the jboss:column-name is not implented then I simply put in the 
method property in the column-name attribute. This is the default 
behavior in jboss but who knows if it will change.

Please review and if it looks OK I will take the stuff from the examples 
and write a quick JBOSS relations HOWTO.


Dave
--- JBossSubTask.java   Fri Jan 18 13:22:24 2002
+++ JBossSubTask.java.new       Thu Jan 17 12:08:34 2002
@@ -43,6 +43,7 @@
        private String     datasource = "java:/DefaultDS";
        private String     typemapping;
        private String     generateRelations = "false";
+       private String     securityDomain = "";
        private String     debug = "false";
 
        public String getSubTaskName()
@@ -60,6 +61,10 @@
                return version;
        }
 
+       public String getSecurityDomain()
+       {
+               return securityDomain;
+       }
        public String getDatasource()
        {
                return datasource;
@@ -85,6 +90,10 @@
                this.version = version.getValue();
        }
 
+       public void setSecurityDomain( String aSecurityDomain )
+       {
+               securityDomain = aSecurityDomain;
+       }
        public void setDatasource( String datasource )
        {
                this.datasource = datasource;
--- jboss_xml.j Fri Jan 18 13:25:25 2002
+++ jboss_xml.j.new     Fri Jan 18 13:25:12 2002
@@ -2,8 +2,9 @@
 <!DOCTYPE jboss PUBLIC "<XDtXml:publicId/>" "<XDtXml:systemId/>">
 
 <jboss>
-   <XDtMerge:merge file="jboss-security.xml">
-   </XDtMerge:merge>
+               <XDtConfig:ifHasConfigParam paramName="SecurityDomain" optional="true">
+               <security-domain><XDtConfig:configParameterValue 
+paramName="SecurityDomain"/></security-domain>
+               </XDtConfig:ifHasConfigParam>
 
    <enterprise-beans>
 
<?xml version="1.0" encoding="<XDtConfig:configParameterValue 
paramName='Xmlencoding'/>"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC "<XDtXml:publicId/>" "<XDtXml:systemId/>">

<jbosscmp-jdbc>
   <defaults>
     <datasource><XDtConfig:configParameterValue paramName="Datasource"/></datasource>
     <type-mapping><XDtConfig:configParameterValue 
paramName="Typemapping"/></type-mapping>
   </defaults>

   <enterprise-beans>

     <XDtEjbCmp:forAllCmpEntityBeans>
     <XDtEjb:ifIsAConcreteEJBean>
      <entity>
       <XDtMerge:merge file="jbosscmp-jdbc-db-settings-{0}.xml">
         <ejb-name><XDtEjb:ejbName/></ejb-name>
        <XDtClass:ifHasClassTag tagName="jboss:table-name">
         <table-name><XDtClass:classTagValue tagName="jboss:table-name" 
paramName="table-name" paramNum="0"/></table-name>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="jboss:create-table">
         <create-table><XDtClass:classTagValue tagName="jboss:create-table" 
paramName="create" paramNum="0"/></create-table>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="jboss:remove-table">
         <remove-table><XDtClass:classTagValue tagName="jboss:remove-table" 
paramName="remove" paramNum="0"/></remove-table>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="jboss:tuned-updates">
         <tuned-updates><XDtClass:classTagValue tagName="jboss:tuned-updates" 
paramName="tune" paramNum="0"/></tuned-updates>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="jboss:read-only">
         <read-only><XDtClass:classTagValue tagName="jboss:read-only" 
paramName="read-only" paramNum="0"/></read-only>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="jboss:time-out">
         <time-out><XDtClass:classTagValue tagName="jboss:time-out" 
paramName="time-out" paramNum="0"/></time-out>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="jboss:select-for-update">
         <select-for-update><XDtClass:classTagValue tagName="jboss:select-for-update" 
paramName="select-for-update" paramNum="0"/></select-for-update>
        </XDtClass:ifHasClassTag>
        <XDtClass:ifHasClassTag tagName="jboss:pk-constraint">
         <pk-constraint><XDtClass:classTagValue tagName="jboss:pk-constraint" 
paramName="pk-constraint" paramNum="0"/></pk-constraint>
        </XDtClass:ifHasClassTag>
      </XDtMerge:merge>

      <XDtMerge:merge file="jbosscmp-jdbc-{0}.xml">

        <XDtMethod:forAllMethods>
        <XDtMethod:ifDoesntHaveMethodTag tagName="jboss:not-persisted-field">
        <XDtMethod:forAllMethodTags tagName="ejb:persistent-field">
         <cmp-field>
            <field-name><XDtMethod:propertyName/></field-name>
           <XDtMethod:ifHasMethodTag tagName="jboss:column-name">
            <column-name><XDtMethod:methodTagValue tagName="jboss:column-name" 
paramName="name" paramNum="0"/></column-name>
           </XDtMethod:ifHasMethodTag>
           <XDtMethod:ifDoesntHaveMethodTag tagName="jboss:column-name">
            <column-name><XDtMethod:propertyName/></column-name>
           </XDtMethod:ifDoesntHaveMethodTag>
           <XDtMethod:ifHasMethodTag tagName="jboss:jdbc-type">
            <jdbc-type><XDtMethod:methodTagValue tagName="jboss:jdbc-type" 
paramName="type" paramNum="0"/></jdbc-type>
           </XDtMethod:ifHasMethodTag>
           <XDtMethod:ifHasMethodTag tagName="jboss:sql-type">
            <sql-type><XDtMethod:methodTagValue tagName="jboss:sql-type" 
paramName="type" paramNum="0"/></sql-type>
           </XDtMethod:ifHasMethodTag>
         </cmp-field>
        </XDtMethod:forAllMethodTags>
        </XDtMethod:ifDoesntHaveMethodTag>
        </XDtMethod:forAllMethods>
        <XDtClass:forAllClassTags tagName="jboss:cmp-field">
         <cmp-field>
            <field-name><XDtClass:classTagValue tagName="jboss:cmp-field" 
paramName="field-name"/></field-name>
            <column-name><XDtClass:classTagValue tagName="jboss:cmp-field" 
paramName="column-name"/></column-name>
         </cmp-field>
        </XDtClass:forAllClassTags>

                <XDtClass:forAllClassTags tagName="jboss:declared-sql">
       <XDtClass:ifHasClassTag tagName="jboss:declared-sql" paramName="signature">
         <query>
            <query-method>
               <method-name><XDtClass:classTagValue tagName="jboss:declared-sql" 
paramName="signature" delimiter=" (" tokenNumber="1"/></method-name>
               <method-params>
                 <XDtParameter:forAllParameterTypes paramName="signature">
                  <method-param><XDtParameter:currentToken/></method-param>
                 </XDtParameter:forAllParameterTypes>
               </method-params>
            </query-method>

           <XDtClass:ifHasClassTag tagName="jboss:declared-sql" paramName 
="result-type-mapping">
            <result-type-mapping><XDtClass:classTagValue tagName ="jboss:declared-sql" 
paramName="result-type-mapping" values ="Local,Remote"/></result-type-mapping>
           </XDtClass:ifHasClassTag>
<declared-sql>
              <XDtClass:ifHasClassTag tagName="jboss:declared-sql" paramName="where">
                <where>
                  <![CDATA[
                  <XDtClass:classTagValue tagName="jboss:declared-sql" 
paramName="where"/>
                  ]]>
                </where>
              </XDtClass:ifHasClassTag>
              <XDtClass:ifHasClassTag tagName="jboss:declared-sql" paramName="order">
                <order>
                  <![CDATA[
                  <XDtClass:classTagValue tagName="jboss:declared-sql" 
paramName="order"/>
                  ]]>
                </order>
              </XDtClass:ifHasClassTag>
              <XDtClass:ifHasClassTag tagName="jboss:declared-sql" paramName="other">
                <other>
                  <![CDATA[
                  <XDtClass:classTagValue tagName="jboss:declared-sql" 
paramName="other"/>
                  ]]>
                </other>
</XDtClass:ifHasClassTag>
            </declared-sql>
         </query>
       </XDtClass:ifHasClassTag>
       </XDtClass:forAllClassTags>


       <XDtClass:forAllClassTags tagName="jboss:finder-query">
         <finder>
            <name><XDtClass:classTagValue tagName="jboss:finder-query" 
paramName="name"/></name>
            <query><![CDATA[<XDtClass:classTagValue tagName="jboss:finder-query" 
paramName="query"/>]]></query>
            <XDtClass:ifHasClassTag tagName="jboss:finder-query" paramName="order">
            <order><XDtClass:classTagValue tagName="jboss:finder-query" 
paramName="order"/></order>
            </XDtClass:ifHasClassTag>
            <XDtClass:ifDoesntHaveClassTag tagName="jboss:finder-query" 
paramName="order">
            <order></order>
            </XDtClass:ifDoesntHaveClassTag>
         </finder>
       </XDtClass:forAllClassTags>
     </XDtMerge:merge>

      </entity>

  </XDtEjb:ifIsAConcreteEJBean>
  </XDtEjbCmp:forAllCmpEntityBeans>

   </enterprise-beans>

  <XDtEjbRel:ifHasRelationships>
   <relationships>
    <XDtEjbRel:forAllRelationships>
      <ejb-relation>
                                <ejb-relation-name><XDtMethod:methodTagValue 
tagName="ejb:relation" paramName="name"/></ejb-relation-name>
        <XDtEjbRel:ifIsMany2Many>
          <table-mapping>
            <XDtMethod:ifHasMethodTag tagName="jboss:relation-table" 
paramName="datasource"> 
            <datasource><XDtMethod:methodTagValue tagName="jboss:relation-table" 
paramName="datasource"/></datasource>
            </XDtMethod:ifHasMethodTag>
            <XDtMethod:ifHasMethodTag tagName="jboss:relation-table" 
paramName="table-name"> 
            <table-name><XDtMethod:methodTagValue tagName="jboss:relation-table" 
paramName="table-name"/></table-name>
            </XDtMethod:ifHasMethodTag>
            <XDtMethod:ifHasMethodTag tagName="jboss:relation-table" 
paramName="create-table"> 
            <create-table><XDtMethod:methodTagValue tagName="jboss:relation-table" 
paramName="create-table"/></create-table>
            </XDtMethod:ifHasMethodTag>
            <XDtMethod:ifHasMethodTag tagName="jboss:relation-table" 
paramName="remove-table"> 
            <remove-table><XDtMethod:methodTagValue tagName="jboss:relation-table" 
paramName="remove-table"/></remove-table>
            </XDtMethod:ifHasMethodTag>
        </XDtEjbRel:ifIsMany2Many>
        <XDtEjbRel:ifNotIsMany2Many>
                                <foreign-key-mapping>
        </XDtEjbRel:ifNotIsMany2Many>
                                <XDtEjbRel:forAllRelationshipRoles>
                         <ejb-relationship-role>
            <ejb-relationship-role-name><XDtMethod:methodTagValue 
tagName="ejb:relation" paramName="role-name"/></ejb-relationship-role-name>

                                                        <XDtMethod:ifHasMethodTag 
tagName="jboss:relation">
                                                <fk-constraint>true</fk-constraint>

          <XDtEjbRel:ifIsMany2Many>
            <table-key-fields>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                <foreign-key-fields>
          </XDtEjbRel:ifNotIsMany2Many>
                                <XDtMethod:forAllMethodTags tagName="jboss:relation">
          <XDtEjbRel:ifIsMany2Many>
            <table-key-field>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                <foreign-key-field>
          </XDtEjbRel:ifNotIsMany2Many>

                        <field-name><XDtMethod:methodTagValue tagName="jboss:relation" 
paramName="relation-pk-column"/></field-name>
                        <column-name><XDtMethod:methodTagValue 
tagName="jboss:relation" paramName="foreign-key-column"/></column-name>
          <XDtEjbRel:ifIsMany2Many>
            </table-key-field>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                </foreign-key-field>
          </XDtEjbRel:ifNotIsMany2Many>

                              </XDtMethod:forAllMethodTags>
          <XDtEjbRel:ifIsMany2Many>
            </table-key-fields>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                </foreign-key-fields>
          </XDtEjbRel:ifNotIsMany2Many>
            </XDtMethod:ifHasMethodTag>
                                                <XDtMethod:ifDoesntHaveMethodTag 
tagName="jboss:relation">
          <XDtEjbRel:ifIsMany2Many>
            <table-key-fields/>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                <foreign-key-fields/>
          </XDtEjbRel:ifNotIsMany2Many>
                                                </XDtMethod:ifDoesntHaveMethodTag>
                                        </ejb-relationship-role>

         <XDtMethod:ifHasMethodTag tagName="ejb:relation" paramName="target-ejb">
         <ejb-relationship-role>
            <ejb-relationship-role-name><XDtMethod:methodTagValue 
tagName="ejb:relation" paramName="target-role-name"/></ejb-relationship-role-name>
                                                <XDtMethod:ifHasMethodTag 
tagName="jboss:target-relation">
                                                <fk-constraint>true</fk-constraint>

          <XDtEjbRel:ifIsMany2Many>
            <table-key-fields>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                <foreign-key-fields>
          </XDtEjbRel:ifNotIsMany2Many>
                                <XDtMethod:forAllMethodTags 
tagName="jboss:target-relation">
          <XDtEjbRel:ifIsMany2Many>
            <table-key-field>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                <foreign-key-field>
          </XDtEjbRel:ifNotIsMany2Many>
                        <field-name><XDtMethod:methodTagValue 
tagName="jboss:target-relation" paramName="relation-pk-column"/></field-name>
                        <column-name><XDtMethod:methodTagValue 
tagName="jboss:target-relation" paramName="foreign-key-column"/></column-name>
          <XDtEjbRel:ifIsMany2Many>
            </table-key-field>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                </foreign-key-field>
          </XDtEjbRel:ifNotIsMany2Many>
                              </XDtMethod:forAllMethodTags>
          <XDtEjbRel:ifIsMany2Many>
            </table-key-fields>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                </foreign-key-fields>
          </XDtEjbRel:ifNotIsMany2Many>

                                                </XDtMethod:ifHasMethodTag>
                                                <XDtMethod:ifDoesntHaveMethodTag 
tagName="jboss:target-relation">
          <XDtEjbRel:ifIsMany2Many>
            <table-key-fields/>
          </XDtEjbRel:ifIsMany2Many>
          <XDtEjbRel:ifNotIsMany2Many>
                                                <foreign-key-fields/>
          </XDtEjbRel:ifNotIsMany2Many>
                                                </XDtMethod:ifDoesntHaveMethodTag>
         </ejb-relationship-role>
                                </XDtMethod:ifHasMethodTag>
</XDtEjbRel:forAllRelationshipRoles>
        <XDtEjbRel:ifIsMany2Many>
          </table-mapping>
        </XDtEjbRel:ifIsMany2Many>
        <XDtEjbRel:ifNotIsMany2Many>
                                  </foreign-key-mapping>
        </XDtEjbRel:ifNotIsMany2Many>
      </ejb-relation>
    </XDtEjbRel:forAllRelationships>
   </relationships>
  </XDtEjbRel:ifHasRelationships>

</jbosscmp-jdbc>

Attachment: rel.tar.gz
Description: application/gzip

Reply via email to