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>
signature.asc
Description: This is a digitally signed message part