Hello, folks.

I've done some local modifications to jbosscmp-jdbc_xml.j and now I'm
posting it here so you may make it available to the general public or
further refine it.

I've added a way to generate information on dependent value classes and
added a merge point for entity load groups.

For DVC, some new tags were made available: For each dvc the programmer
must use the @jboss:dvc tag on class level, and @jboss:property on each
property of the class.

On the entity bean, the DVC mapping is done using the @jboss:property
tag. There is an example below. Look at the template if in doubt.

//------------------------------------------------------------//

/**
 * DVC Class
 *
 * @jboss:dvc
 */
public class DependentClass implements java.io.Serializable
{
    /**
     * @jboss:property
     */
    public Integer getId() {}
    public void setId(Integer id) {}

    /**
     * @jboss:property
     */
   public String getDescription() {}
   public void setDescription(String description){}
}

/**
 * Entity Bean Class
 */
public abstract class EntityClass implements javax.ejb.EntityBean
{
    /**
     * @ejb:interface-method
     * @ejb:persistent-field
     * 
     * @jboss:property
     *    name="id"
     *    column-name="dependent_id"
     * @jboss:property
     *    name="description"
     *    column-name="dependent_desc"
     */
    public abstract DependentClass getDependent();
    public abstract void setDependent(DependentClass dependent);
}

-- 
Ja ne,
   Pazu
   mailto: [EMAIL PROTECTED]

Anime Gaiden: de făs para făs, sempre.
<?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>
     <datasource-mapping><XDtConfig:configParameterValue 
paramName="Typemapping"/></datasource-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: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: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:row-locking">
         <row-locking><XDtClass:classTagValue tagName="jboss:row-locking" 
paramName="row-locking" paramNum="0"/></row-locking>
      </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>
      <XDtClass:ifHasClassTag tagName="jboss:table-name">
         <table-name><XDtClass:classTagValue tagName="jboss:table-name" 
paramName="table-name" paramNum="0"/></table-name>
      </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:ifDoesntHaveMethodTag tagName="jboss:property">
            <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>
                        </XDtMethod:ifDoesntHaveMethodTag>

                        <XDtMethod:ifHasMethodTag tagName="jboss:property">
                        <XDtMethod:forAllMethodTags tagName="jboss:property">
                        <property>
                          <property-name><XDtMethod:methodTagValue 
tagName="jboss:property" paramName="name"/></property-name>
                          <XDtMethod:ifHasMethodTag tagName="jboss:property" 
paramName="column-name">
                          <column-name><XDtMethod:methodTagValue 
tagName="jboss:property" paramName="column-name"/></column-name>
                          </XDtMethod:ifHasMethodTag>
                          <XDtMethod:ifDoesntHaveMethodTag tagName="jboss:property" 
paramName="column-name">
                          <column-name><XDtMethod:methodTagValue 
tagName="jboss:property" paramName="name"/></column-name>
                          </XDtMethod:ifDoesntHaveMethodTag>
                          <XDtMethod:ifMethodTagValueEquals tagName="jboss:property" 
paramName="not-null" value="yes">
                          <not-null/>
                          </XDtMethod:ifMethodTagValueEquals>
                          <XDtMethod:ifHasMethodTag tagName="jboss:property" 
paramName="jdbc-type">
                          <jdbc-type><XDtMethod:methodTagValue 
tagName="jboss:property" paramName="jdbc-type"></jdbc-type>
                          </XDtMethod:ifHasMethodTag>
                          <XDtMethod:ifHasMethodTag tagName="jboss:property" 
paramName="sql-type">
                          <sql-type><XDtMethod:methodTagValue tagName="jboss:property" 
paramName="sql-type"></sql-type>
                          </XDtMethod:ifHasMethodTag>
                        </property>
                        </XDtMethod:forAllMethodTags>
                        </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>
          
          <XDtMerge:merge file="jbosscmp-jdbc-load-{0}.xml">
          <!--
            To define load groups for this entity, write a file named
                jbosscmp-jdbc-load-<XDtClass:className/>.xml and put it in
                your mergedir. Write it according to the following DTD slice:
                
                <!ELEMENT load-groups (load-group+)>
                <!ELEMENT load-group (load-group-name, description?, field-name+)>
                <!ELEMENT load-group-name (#PCDATA)>
                <!ELEMENT description (#PCDATA)>
                <!ELEMENT field-name (#PCDATA)>
                <!ELEMENT eager-load-group (#PCDATA)>
                <!ELEMENT lazy-load-groups (load-group-name+)>
          -->
          </XDtMerge:merge>

      <XDtClass:forAllClassTags tagName="jboss:declared-sql">
        <XDtClass:ifHasClassTag tagName="jboss:declared-sql" paramName="signature">
         <query>
                    <XDtClass:ifHasClassTag tagName="jboss:declared-sql" 
paramName="description">
                        <description><XDtClass:classTagValue 
tagName="jboss:declared-sql" param-name="description"/></description>
                        </XDtClass:ifHasClassTag>
                        <XDtClass:ifDoesntHaveClassTag tagName="jboss:declared-sql" 
paramName="description">
                        <description/>
                        </XDtClass:ifDoesntHaveClassTag>
            <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>
    </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>
      <relation-table-mapping>
      <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="datasource">
          <datasource><XDtMethod:methodTagValue tagName="jboss:relation-table" 
paramName="datasource"/></datasource>
      </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>
      <XDtMethod:ifHasMethodTag tagName="jboss:relation-table" paramName="row-locking">
          <row-locking><XDtMethod:methodTagValue tagName="jboss:relation-table" 
paramName="row-locking"/></row-locking>
      </XDtMethod:ifHasMethodTag>
      <XDtMethod:ifHasMethodTag tagName="jboss:relation-table" 
paramName="pk-constraint">
          <pk-constraint><XDtMethod:methodTagValue tagName="jboss:relation-table" 
paramName="pk-constraint"/></pk-constraint>
      </XDtMethod:ifHasMethodTag>
      </relation-table-mapping>
    </XDtEjbRel:ifIsMany2Many>
    <XDtEjbRel:ifNotIsMany2Many>
      <foreign-key-mapping/>
    </XDtEjbRel:ifNotIsMany2Many>
      <ejb-relationship-role>
          
<ejb-relationship-role-name><XDtEjbRel:leftRoleName/></ejb-relationship-role-name>
          <XDtJBEjbRel:ifLeftHasFKConstraint>
          <fk-constraint><XDtJBEjbRel:leftFKConstraint/></fk-constraint>
          </XDtJBEjbRel:ifLeftHasFKConstraint>
          <XDtJBEjbRel:ifRightHasFK>
          <key-fields>
            <XDtJBEjbRel:forAllRightForeignKeys>
             <key-field>
               <field-name><XDtJBEjbRel:relatedPKField/></field-name>
               <column-name><XDtJBEjbRel:fkColumn/></column-name>
             </key-field>
            </XDtJBEjbRel:forAllRightForeignKeys>
          </key-fields>
          </XDtJBEjbRel:ifRightHasFK>
          <XDtJBEjbRel:ifNotRightHasFK>
          <key-fields/>
          </XDtJBEjbRel:ifNotRightHasFK>
      </ejb-relationship-role>
      <ejb-relationship-role>
          
<ejb-relationship-role-name><XDtEjbRel:rightRoleName/></ejb-relationship-role-name>
          <XDtJBEjbRel:ifRightHasFKConstraint>
          <fk-constraint><XDtJBEjbRel:rightFKConstraint/></fk-constraint>
          </XDtJBEjbRel:ifRightHasFKConstraint>
          <XDtJBEjbRel:ifLeftHasFK>
          <key-fields>
            <XDtJBEjbRel:forAllLeftForeignKeys>
             <key-field>
               <field-name><XDtJBEjbRel:relatedPKField/></field-name>
               <column-name><XDtJBEjbRel:fkColumn/></column-name>
             </key-field>
            </XDtJBEjbRel:forAllLeftForeignKeys>
          </key-fields>
          </XDtJBEjbRel:ifLeftHasFK>
          <XDtJBEjbRel:ifNotLeftHasFK>
          <key-fields/>
          </XDtJBEjbRel:ifNotLeftHasFK>
      </ejb-relationship-role>
    </ejb-relation>
  </XDtEjbRel:forAllRelationships>
  </relationships>
</XDtEjbRel:ifHasRelationships>

<dependent-value-classes>
  <XDtClass:forAllClasses>
  <XDtClass:ifHasClassTag tagName="jboss:dvc">
  <dependent-value-class>
    <description><XDtClass:firstSentenceDescription/></description>
    <class><XDtClass:fullClassName/></class>
    <XDtMethod:forAllMethods>
        <XDtMethod:ifHasMethodTag tagName="jboss:property">
        <property>
          <property-name><XDtMethod:propertyName/></property-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>
        </property>
        </XDtMethod:ifHasMethodTag>
        </XDtMethod:forAllMethods>
  </dependent-value-class>
</XDtClass:ifHasClassTag>
</XDtClass:forAllClasses>
</dependent-value-classes>

    <XDtMerge:merge file="jbosscmp-typemappings.xml">
    </XDtMerge:merge>
</jbosscmp-jdbc>

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to