Index: codegen/src/main/java/org/exolab/javasource/AbstractJClass.java =================================================================== --- codegen/src/main/java/org/exolab/javasource/AbstractJClass.java (revision 8008) +++ codegen/src/main/java/org/exolab/javasource/AbstractJClass.java (working copy) @@ -26,7 +26,6 @@ * @since 1.1 */ public abstract class AbstractJClass extends JStructure { - //-------------------------------------------------------------------------- /** The source code for static initialization. */ private JSourceCode _staticInitializer; @@ -43,9 +42,17 @@ /** A collection of inner classes for this JClass. */ private Vector _innerClasses; - //-------------------------------------------------------------------------- + private Vector _sourceCodeEntries = new Vector(); /** + * Returns a collection of (complete) source code fragments. + * @return A collection of (complete) source code fragments. + */ + public String[] getSourceCodeEntries() { + return _sourceCodeEntries.toArray(new String[_sourceCodeEntries.size()]); + } + + /** * Creates a new AbstractJClass with the given name. * * @param name The name of the AbstractJClass to create. @@ -609,6 +616,21 @@ jsw.writeln(); } } + + protected final void printSourceCodeFragments(final JSourceWriter sourceWriter) { + if (!_sourceCodeEntries.isEmpty()) { + sourceWriter.writeln(); + sourceWriter.writeln(" //----------------------------------/"); + sourceWriter.writeln(" //- Injected source code fragments -/"); + sourceWriter.writeln("//----------------------------------/"); + sourceWriter.writeln(); + } + for (String sourceCode : _sourceCodeEntries) { + sourceWriter.writeln(sourceCode); + sourceWriter.writeln(); + } + + } /** * Writes to the JSourceWriter all inner classes belonging to this class. @@ -631,5 +653,16 @@ } } - //-------------------------------------------------------------------------- + /** + * Adds a complete source code fragment (method) to this class. + * @param sourceCode The complete source code fragment to be added. + */ + public void addSourceCode(final String sourceCode) { + _sourceCodeEntries.add(sourceCode); + } + + public final int getSourceCodeEntryCount() { + return _sourceCodeEntries.size(); + } + } Index: codegen/src/main/java/org/exolab/javasource/JClass.java =================================================================== --- codegen/src/main/java/org/exolab/javasource/JClass.java (revision 8008) +++ codegen/src/main/java/org/exolab/javasource/JClass.java (working copy) @@ -54,13 +54,10 @@ * @version $Revision$ $Date: 2005-05-08 12:32:06 -0600 (Sun, 08 May 2005) $ */ public class JClass extends AbstractJClass { - //-------------------------------------------------------------------------- /** The superclass for this JClass. */ private JTypeName _superClass; - //-------------------------------------------------------------------------- - /** * Creates a new JClass with the given name. * @@ -72,13 +69,13 @@ _superClass = null; } - //-------------------------------------------------------------------------- - /** * {@inheritDoc} */ public final void addImport(final String className) { - if ((className == null) || (className.length() == 0)) { return; } + if ((className == null) || (className.length() == 0)) { + return; + } JTypeName jtName = new JTypeName(className); @@ -148,8 +145,6 @@ } } - //-------------------------------------------------------------------------- - /** * {@inheritDoc} */ @@ -175,6 +170,7 @@ printConstructors(jsw); printMethods(jsw); printInnerClasses(jsw); + printSourceCodeFragments(jsw); jsw.unindent(); jsw.writeln('}'); @@ -261,5 +257,4 @@ } } - //-------------------------------------------------------------------------- } Index: codegen/src/main/resources/org/exolab/castor/builder/printing/templates/library.vm =================================================================== --- codegen/src/main/resources/org/exolab/castor/builder/printing/templates/library.vm (revision 8008) +++ codegen/src/main/resources/org/exolab/castor/builder/printing/templates/library.vm (working copy) @@ -114,6 +114,10 @@ #end +#macro (sourceCodeEntry $sourceCodeEntry $shift) +${shift}$sourceCodeEntry +#end + #macro (returntype $method) #if($method.getReturnType())$method.getReturnType()#{else}void#end #end Index: codegen/src/main/resources/org/exolab/castor/builder/printing/templates/main.vm =================================================================== --- codegen/src/main/resources/org/exolab/castor/builder/printing/templates/main.vm (revision 8008) +++ codegen/src/main/resources/org/exolab/castor/builder/printing/templates/main.vm (working copy) @@ -11,6 +11,7 @@ * - static initializers * - constructors * - methods + * - source code fragments * - inner classes * - javadoc statements * - inner classes @@ -94,6 +95,14 @@ #end #end +## SOURCE CODE FRAGMENTS *# +#if( $jClass.getSourceCodeEntryCount() > 0) +#foreach( $sourceCodeEntry in $jClass.getSourceCodeEntries() ) +#sourceCodeEntry( $sourceCodeEntry " " ) + +#end +#end + ## INNER CLASSES *# #if( $jClass.getInnerClassCount() > 0) #foreach( $inner in $jClass.getInnerClasses() )