David Budworth wrote:
> Hi all,
>
> I'd like to add full jbosscmp-jdbc.xml abilities to xdoclet. But
> first, I have a few questions:
>
> 1) How does one add new tags to xdoclet?
> ie:
> @jboss:relation www="xxx"
> yyy="zzz"
>
> Similar to the weblogic support there now.
>
> 2) Is anyone already working on this? When I found xdoclet, I dumped my
> own code generation tool. The only thing I've been missing is the
> jbosscmp-jdbc.xml support. Jaws works, but the current jbosscmp xml
> that get's generated doesn't work at all for N:1 bi-directional
> relations, which I need.
>
The standard relationship tags should work for jboss. The problem is
when you are trying to define which db fields are used for the relations
to override Dain's name mangling. I'll include what I have so far. I
have also added the declared-sql stuff as well.
>
> Thanks,
> -David
>
>
> _______________________________________________
> Xdoclet-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/xdoclet-devel
>
<?xml version="1.0" encoding="<XDtConfig:configParameterValue
paramName='Xmlencoding'/>"?>
<!-- TODO: Get DTD in template -->
<jbosscmp-jdbc>
<datasource><XDtConfig:configParameterValue paramName="Datasource"/></datasource>
<type-mapping><XDtConfig:configParameterValue
paramName="Typemapping"/></type-mapping>
<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:ifHasMethodTag tagName="jboss:sql-type">
<sql-type><XDtMethod:methodTagValue tagName="jboss:sql-type"
paramName="type" paramNum="0"/></sql-type>
</XDtMethod:ifHasMethodTag>
<XDtMethod:ifHasMethodTag tagName="jboss:jdbc-type">
<jdbc-type><XDtMethod:methodTagValue tagName="jboss:jdbc-type"
paramName="type" paramNum="0"/></jdbc-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>
<XDtMethod:ifHasMethodTag tagName="ejb:relation"
paramName="target-ejb">
<mapping-style>foreign-key</mapping-style>
</XDtMethod:ifHasMethodTag>
<XDtMethod:ifDoesntHaveMethodTag
tagName="ejb:relation" paramName="target-ejb">
<XDtEjbRel:ifIsACollection>
<XDtEjbRel:swapRelation/>
<XDtEjbRel:ifIsACollection>
<mapping-style>table-mapping</mapping-style>
</XDtEjbRel:ifIsACollection>
<XDtEjbRel:ifIsNotACollection>
<mapping-style>foreign-key</mapping-style>
</XDtEjbRel:ifIsNotACollection>
<XDtEjbRel:unswapRelation/>
</XDtEjbRel:ifIsACollection>
</XDtMethod:ifDoesntHaveMethodTag>
<XDtMethod:ifDoesntHaveMethodTag
tagName="ejb:relation" paramName="target-ejb">
<XDtEjbRel:ifIsNotACollection>
<mapping-style>foreign-key</mapping-style>
</XDtEjbRel:ifIsNotACollection>
</XDtMethod:ifDoesntHaveMethodTag>
<XDtEjbRel:forAllRelationshipRoles>
<!-- Uni directional -->
<XDtMethod:ifHasMethodTag tagName="ejb:relation"
paramName="target-ejb">
<foreign-key-mapping>
<ejb-relationship-role>
<ejb-relationship-role-name><XDtMethod:methodTagValue
tagName="ejb:relation" paramName="target-role-name"/></ejb-relationship-role-name>
<foreign-key-fields>
<foreign-key-field>
<field-name><XDtMethod:propertyName/></field-name>
<column-name><XDtMethod:methodTagValue tagName="jboss:relation"
paramName="target-column-name"/></column-name>
</foreign-key-field>
</foreign-key-fields>
</ejb-relationship-role>
</foreign-key-mapping>
</XDtMethod:ifHasMethodTag>
<!-- End Uni directional -->
<XDtMethod:ifDoesntHaveMethodTag
tagName="ejb:relation" paramName="target-ejb">
<!-- bi directional -->
<foreign-key-mapping>
<ejb-relationship-role>
<ejb-relationship-role-name><XDtMethod:methodTagValue
tagName="ejb:relation" paramName="role-name"/></ejb-relationship-role-name>
<foreign-key-fields>
<foreign-key-field>
<XDtEjbRel:swapRelation/>
<field-name><XDtMethod:propertyName/></field-name>
<XDtEjbRel:unswapRelation/>
<column-name><XDtMethod:propertyName/></column-name>
</foreign-key-field>
</foreign-key-fields>
</ejb-relationship-role>
</foreign-key-mapping>
<!--end bi directional -->
</XDtMethod:ifDoesntHaveMethodTag>
</XDtEjbRel:forAllRelationshipRoles>
</ejb-relation>
</XDtEjbRel:forAllRelationships>
</relationships>
</XDtEjbRel:ifHasRelationships>
</jbosscmp-jdbc>