org.apache.velocity.runtime
Class VelocimacroFactory

java.lang.Object
  |
  +--org.apache.velocity.runtime.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.

Inner Class Summary
private  class VelocimacroFactory.Twonk
          small continer class to hold the duple of a template and modification time.
 
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  java.util.Map libModMap
          map of the library Template objects used for reload determination
private  java.util.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(java.lang.String name, java.lang.String macroBody, java.lang.String[] argArray, java.lang.String sourceTemplate)
          adds a macro to the factory.
private  boolean canAddVelocimacro(java.lang.String name, java.lang.String sourceTemplate)
          determines if a given macro/namespace (name, source) combo is allowed to be added
 boolean dumpVMNamespace(java.lang.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(java.lang.String vmName, java.lang.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(java.lang.String vm, java.lang.String sourceTemplate)
          Tells the world if a given directive string is a Velocimacro
private  void logVMMessageInfo(java.lang.String s)
          localization of the logging logic
private  void logVMMessageWarn(java.lang.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.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

rsvc

private RuntimeServices rsvc
runtime services for this instance

vmManager

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

replaceAllowed

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

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

templateLocal

private boolean templateLocal
sets if template-local namespace in used

blather

private boolean blather
controls log output

autoReloadLibrary

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

macroLibVec

private java.util.Vector macroLibVec
vector of the library names

libModMap

private java.util.Map libModMap
map of the library Template objects used for reload determination
Constructor Detail

VelocimacroFactory

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

initVelocimacro

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

addVelocimacro

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

canAddVelocimacro

private boolean canAddVelocimacro(java.lang.String name,
                                  java.lang.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

logVMMessageInfo

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

logVMMessageWarn

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

isVelocimacro

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

getVelocimacro

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

dumpVMNamespace

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

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.

getTemplateLocalInline

private boolean getTemplateLocalInline()

setAddMacroPermission

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

setReplacementPermission

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

setBlather

private void setBlather(boolean b)
set output message mode

getBlather

private boolean getBlather()
get output message mode

setAutoload

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

getAutoload

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


Copyright © 2003 Apache Software Foundation. All Rights Reserved.