User: rinkrank Date: 02/09/25 03:47:01 Modified: src/java/xgg/templates bean.vm xml.vm Log: Some bugfixes, initial support for attributes Revision Changes Path 1.2 +3 -0 xgg/src/java/xgg/templates/bean.vm Index: bean.vm =================================================================== RCS file: /cvsroot/xdoclet/xgg/src/java/xgg/templates/bean.vm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- bean.vm 24 Sep 2002 18:31:07 -0000 1.1 +++ bean.vm 25 Sep 2002 10:47:01 -0000 1.2 @@ -19,6 +19,9 @@ #else * This method should never return null #end +#if( ${child.targetElement.pcdata} ) + * This accessor represents the ${child.targetElement.name} element. +#end */ #if( ${child.many} ) public Collection get${child.targetElement.javaName}Collection(); 1.2 +50 -8 xgg/src/java/xgg/templates/xml.vm Index: xml.vm =================================================================== RCS file: /cvsroot/xdoclet/xgg/src/java/xgg/templates/xml.vm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- xml.vm 24 Sep 2002 18:31:07 -0000 1.1 +++ xml.vm 25 Sep 2002 10:47:01 -0000 1.2 @@ -1,18 +1,56 @@ +## +## the ${set}, ${if}, ${foreach} and ${end} variables should not be indented, +## as they are now, since these indentations will also occur in the final rendered file. +## it's done here only to make the generated template more readable +## +## This macro is recursive +## +## @author Aslak Hellesøy ([EMAIL PROTECTED]) +## #macro( iterateElement $element $indent ) +#### +#### Loop over all the element's children +#### #foreach( $child in $element.children ) +###### +###### All optional children must appear inside #if statements. +###### An element is optional if it has a ?, or if it is declared +###### inside a choice (a|b|c). +###### +#if( !${child.targetElement.pcdata} && !${child.many}) +${indent}${set}( $${child.targetElement.javaVariableName} = ${${child.parentElement.javaVariableName}.${child.targetElement.javaVariableName}} ) +#end #if( ${child.optional} ) -## the ${set}, ${if}, ${foreach} and ${end} should not be indented, -## since the indentations will be in the final rendered file -## it's done here only to make the generated template more readable -## ${indent}${set}( $${child.targetElement.javaVariableName} = $${child.parentElement.javaVariableName}.${child.targetElement.javaVariableName} ) +######## +######## How the #if statement looks depends on whether the target element is PCDATA +######## or not. If it is, the parent element bean will have a String getFooPCDATA() +######## method. If not, the parent element bean will have a FooBean getFoo() method. +######## #if( ${child.targetElement.pcdata} ) +########## ${indent}${if}( ${${child.parentElement.javaVariableName}.${child.targetElement.javaVariableName}PCDATA} ) -#else -${indent}${if}( $${child.targetElement.javaVariableName} ) +########## +#elseif( !${child.many} ) +########## +${indent}${if}( ${${child.targetElement.javaVariableName}} ) +########## +#end +######## #end -#elseif( ${child.many} ) -${indent}${foreach}( $${child.targetElement.javaVariableName} in $${child.parentElement.javaVariableName}.${child.targetElement.javaVariableName}Collection ) +###### +###### +###### +#if( ${child.many} ) +${indent}${foreach}( $${child.targetElement.javaVariableName} in ${${child.parentElement.javaVariableName}.${child.targetElement.javaVariableName}Collection} ) #end +###### +###### Now, write an <element> for the element the child represents. +###### How this is done depends on whether the element is: +###### PCDATA -> <element>blah</element> +###### EMPTY -> <element/> +###### implicit element -> don't write anything +###### +###### #if( ${child.targetElement.pcdata} ) ${indent}<${child.targetElement.name}>${${child.parentElement.javaVariableName}.${child.targetElement.javaVariableName}PCDATA}</${child.targetElement.name}> ########${indent}<${child.targetElement.name}>${${child.targetElement.javaVariableName}}</${child.targetElement.name}> @@ -21,6 +59,10 @@ #elseif( !${child.targetElement.implicit} ) ${indent}<${child.targetElement.name}> #end +###### +###### +###### +###### #if( ${child.targetElement.implicit} ) #iterateElement( ${child.targetElement} "${indent}" ) #else
------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Xdoclet-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/xdoclet-devel