01: /*
02: * Copyright (c) 2002-2003 by OpenSymphony
03: * All rights reserved.
04: */
05: package com.opensymphony.workflow.loader;
06:
07: import org.apache.velocity.Template;
08: import org.apache.velocity.VelocityContext;
09: import org.apache.velocity.app.VelocityEngine;
10:
11: import java.io.ByteArrayOutputStream;
12: import java.io.OutputStreamWriter;
13:
14: /**
15: * DOCUMENT ME!
16: *
17: * @author $author$
18: * @version $Revision: 1.2 $
19: */
20: public class WorkflowSerializer {
21: //~ Instance fields ////////////////////////////////////////////////////////
22:
23: private VelocityEngine engine;
24:
25: //~ Methods ////////////////////////////////////////////////////////////////
26:
27: public byte[] generateWorkflowXML(WorkflowDescriptor wf)
28: throws Exception {
29: initVelocity();
30:
31: ByteArrayOutputStream baos = new ByteArrayOutputStream();
32: OutputStreamWriter writer = new OutputStreamWriter(baos);
33: Template template = engine.getTemplate("workflowtemplate.vm");
34: VelocityContext ctx = new VelocityContext();
35: ctx.put("workflow", wf);
36: template.merge(ctx, writer);
37: writer.flush();
38: baos.flush();
39:
40: return baos.toByteArray();
41: }
42:
43: protected void initVelocity() throws Exception {
44: if (engine == null) {
45: engine = new VelocityEngine();
46: engine.setProperty("resource.loader", "class");
47: engine
48: .setProperty("class.resource.loader.class",
49: "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
50: engine.init();
51: }
52: }
53: }
|