private static Stack writerStack = new Stack();
public Test(String templateFile, String encoding)
{
Writer writer = null;
TestProvider provider = new TestProvider();
ArrayList al = provider.getCustomers();
Hashtable h = new Hashtable();
/*
* put this in to test introspection $h.Bar or $h.get("Bar") etc
*/
h.put("Bar", "this is from a hashtable!");
h.put("Foo", "this is from a hashtable too!");
/*
* adding simple vector with strings for testing late introspection stuff
*/
Vector v = new Vector();
String str = "mystr";
v.addElement( new String("hello") );
v.addElement( new String("hello2") );
v.addElement( str );
try
{
/*
* this is another way to do properties when initializing Runtime.
* make a Properties
*/
Properties p = new Properties();
/*
* now, if you want to, load it from a file (or whatever)
*/
try
{
FileInputStream fis = new FileInputStream(
new File("velocity.properties" ));
if( fis != null)
p.load( fis );
}
catch (Exception ex)
{
/* no worries. no file... */
}
/*
* iterate out the properties
*/
for( Enumeration e = p.propertyNames(); e.hasMoreElements(); )
{
String el = (String) e.nextElement();
Velocity.setProperty( el, p.getProperty( el ) );
}
/*
* add some individual properties if you wish
*/
Velocity.setProperty(Velocity.RUNTIME_LOG_ERROR_STACKTRACE, "true");
Velocity.setProperty(Velocity.RUNTIME_LOG_WARN_STACKTRACE, "true");
Velocity.setProperty(Velocity.RUNTIME_LOG_INFO_STACKTRACE, "true");
/*
* use an alternative logger. Set it up here and pass it in.
*/
// SimpleLogSystem sls = new SimpleLogSystem("velocity_simple.log");
// Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM, sls );
/*
* and now call init
*/
Velocity.init();
/*
* now, do what we want to do. First, get the Template
*/
if (templateFile == null)
{
templateFile = "examples/example.vm";
}
Template template = null;
try
{
template = RuntimeSingleton.getTemplate(templateFile, encoding);
}
catch( ResourceNotFoundException rnfe )
{
System.out.println("Test : RNFE : Cannot find template " + templateFile );
}
catch( ParseErrorException pee )
{
System.out.println("Test : Syntax error in template " + templateFile + ":" + pee );
}
/*
* now, make a Context object and populate it.
*/
VelocityContext context = new VelocityContext();
context.put("provider", provider);
context.put("name", "jason");
context.put("providers", provider.getCustomers2());
context.put("list", al);
context.put("hashtable", h);
context.put("search", provider.getSearch());
context.put("relatedSearches", provider.getRelSearches());
context.put("searchResults", provider.getRelSearches());
context.put("menu", provider.getMenu());
context.put("stringarray", provider.getArray());
context.put("vector", v);
context.put("mystring", new String());
context.put("hashmap", new HashMap() );
context.put("runtime", new FieldMethodizer( "org.apache.flex.forks.velocity.runtime.RuntimeSingleton" ));
context.put("fmprov", new FieldMethodizer( provider ));