Write to multiple files, controlled by template directives
----------------------------------------------------------

                 Key: VELOCITY-787
                 URL: https://issues.apache.org/jira/browse/VELOCITY-787
             Project: Velocity
          Issue Type: New Feature
          Components: Engine
    Affects Versions: 2.0
         Environment: All environments
            Reporter: Don Mendelson


For some purposes, such as code generation, it would be very desirable to 
output to multiple files from the same context. For example, to generate code 
for a C++ class, two files must be generated - a header and implementation 
file. Rendering could be driven by the same context in both cases, which would 
desribe the class name, method signatures, etc. Currently this must be done by 
running the engine twice - once with a header template and again with an 
implementation file template.

Furthermore, it would desirable to determine the output file names during 
rendering, based on a combination of template directives and data in the 
context. To use the code generation example, the header and implementation file 
names would be determined by the name of the class to be generated.

This is not possible with the current method signature of Directive: 
    public boolean render(InternalContextAdapter context, Writer writer, Node 
node) 
An output directive would want to change the writer to a different instance of 
FileWriter, for instance. But since Java passes object references by value, the 
writer object cannot be replaced.

The proposal is to provide a method to install a new instance of Writer during 
rendering of a template. This would support both writing multiple outputs in 
one run of the engine as well as controlling the file names of the outputs.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to