org.apache.velocity.runtime

Class VelocimacroFactory


public class VelocimacroFactory
extends java.lang.Object

VelocimacroFactory.java manages the set of VMs in a running Velocity engine.

Version:
$Id: VelocimacroFactory.java,v 1.16 2001/10/21 10:58:35 geirm Exp $

Author:
Geir Magnusson Jr.

Field Summary

private boolean
addNewAllowed
controls if new VMs can be added.
private boolean
autoReloadLibrary
determines if the libraries are auto-loaded when they change
private boolean
blather
controls log output
private Map
libModMap
map of the library Template objects used for reload determination
private Vector
macroLibVec
vector of the library names
private boolean
replaceAllowed
determines if replacement of global VMs are allowed controlled by VM_PERM_ALLOW_INLINE_REPLACE_GLOBAL
private RuntimeServices
rsvc
runtime services for this instance
private boolean
templateLocal
sets if template-local namespace in used
private VelocimacroManager
vmManager
VMManager : deal with namespace management and actually keeps all the VM definitions

Constructor Summary

VelocimacroFactory(RuntimeServices rs)
CTOR : requires a runtime services from now on

Method Summary

boolean
addVelocimacro(String name, String macroBody, argArray[] , String sourceTemplate)
adds a macro to the factory.
private boolean
canAddVelocimacro(String name, String sourceTemplate)
determines if a given macro/namespace (name, source) combo is allowed to be added
boolean
dumpVMNamespace(String namespace)
tells the vmManager to dump the specified namespace
private boolean
getAutoload()
get the switch for automatic reloading of global library-based VMs
private boolean
getBlather()
get output message mode
private boolean
getTemplateLocalInline()
Directive
getVelocimacro(String vmName, String sourceTemplate)
actual factory : creates a Directive that will behave correctly wrt getting the framework to dig out the correct # of args
void
initVelocimacro()
initialize the factory - setup all permissions load all global libraries.
boolean
isVelocimacro(String vm, String sourceTemplate)
Tells the world if a given directive string is a Velocimacro
private void
logVMMessageInfo(String s)
localization of the logging logic
private void
logVMMessageWarn(String s)
localization of the logging logic
private boolean
setAddMacroPermission(boolean arg)
sets the permission to add new macros
private void
setAutoload(boolean b)
set the switch for automatic reloading of global library-based VMs
private void
setBlather(boolean b)
set output message mode
private boolean
setReplacementPermission(boolean arg)
sets the permission for allowing addMacro() calls to replace existing VM's
private void
setTemplateLocalInline(boolean b)
sets permission to have VMs local in scope to their declaring template note that this is really taken care of in the VMManager class, but we need it here for gating purposes in addVM eventually, I will slide this all into the manager, maybe.

Field Details

addNewAllowed

private boolean addNewAllowed
controls if new VMs can be added. Set by VM_PERM_ALLOW_INLINE Note the assumption that only through inline defs can this happen. additions through autoloaded VMs is allowed


autoReloadLibrary

private boolean autoReloadLibrary
determines if the libraries are auto-loaded when they change


blather

private boolean blather
controls log output


libModMap

private Map libModMap
map of the library Template objects used for reload determination


macroLibVec

private Vector macroLibVec
vector of the library names


replaceAllowed

private boolean replaceAllowed
determines if replacement of global VMs are allowed controlled by VM_PERM_ALLOW_INLINE_REPLACE_GLOBAL


rsvc

private RuntimeServices rsvc
runtime services for this instance


templateLocal

private boolean templateLocal
sets if template-local namespace in used


vmManager

private VelocimacroManager vmManager
VMManager : deal with namespace management and actually keeps all the VM definitions

Constructor Details

VelocimacroFactory

public VelocimacroFactory(RuntimeServices rs)
CTOR : requires a runtime services from now on

Method Details

addVelocimacro

public boolean addVelocimacro(String name,
                              String macroBody,
                              argArray[] ,
                              String sourceTemplate)
adds a macro to the factory.


canAddVelocimacro

private boolean canAddVelocimacro(String name,
                                  String sourceTemplate)
determines if a given macro/namespace (name, source) combo is allowed to be added

Parameters:
name - Name of VM to add
sourceTemplate - Source template that contains the defintion of the VM

Returns:
true if it is allowed to be added, false otherwise


dumpVMNamespace

public boolean dumpVMNamespace(String namespace)
tells the vmManager to dump the specified namespace


getAutoload

private boolean getAutoload()
get the switch for automatic reloading of global library-based VMs


getBlather

private boolean getBlather()
get output message mode


getTemplateLocalInline

private boolean getTemplateLocalInline()


getVelocimacro

public Directive getVelocimacro(String vmName,
                                String sourceTemplate)
actual factory : creates a Directive that will behave correctly wrt getting the framework to dig out the correct # of args


initVelocimacro

public void initVelocimacro()
initialize the factory - setup all permissions load all global libraries.


isVelocimacro

public boolean isVelocimacro(String vm,
                             String sourceTemplate)
Tells the world if a given directive string is a Velocimacro


logVMMessageInfo

private void logVMMessageInfo(String s)
localization of the logging logic


logVMMessageWarn

private void logVMMessageWarn(String s)
localization of the logging logic


setAddMacroPermission

private boolean setAddMacroPermission(boolean arg)
sets the permission to add new macros


setAutoload

private void setAutoload(boolean b)
set the switch for automatic reloading of global library-based VMs


setBlather

private void setBlather(boolean b)
set output message mode


setReplacementPermission

private boolean setReplacementPermission(boolean arg)
sets the permission for allowing addMacro() calls to replace existing VM's


setTemplateLocalInline

private void setTemplateLocalInline(boolean b)
sets permission to have VMs local in scope to their declaring template note that this is really taken care of in the VMManager class, but we need it here for gating purposes in addVM eventually, I will slide this all into the manager, maybe.


Copyright © 2003 Apache Software Foundation. All Rights Reserved.