You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by nb...@apache.org on 2003/07/22 20:34:29 UTC
cvs commit: jakarta-velocity-tools/src/java/org/apache/velocity/tools/view/servlet ServletToolboxManager.java
nbubna 2003/07/22 11:34:29
Modified: src/java/org/apache/velocity/tools/view
XMLToolboxManager.java
src/java/org/apache/velocity/tools/view/servlet
ServletToolboxManager.java
Log:
load toolbox using Digester instead of dom4j (and a few very minor changes)
Revision Changes Path
1.4 +19 -96 jakarta-velocity-tools/src/java/org/apache/velocity/tools/view/XMLToolboxManager.java
Index: XMLToolboxManager.java
===================================================================
RCS file: /home/cvs/jakarta-velocity-tools/src/java/org/apache/velocity/tools/view/XMLToolboxManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XMLToolboxManager.java 28 May 2003 00:17:15 -0000 1.3
+++ XMLToolboxManager.java 22 Jul 2003 18:34:27 -0000 1.4
@@ -62,13 +62,11 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.Node;
-import org.dom4j.datatype.InvalidSchemaException;
-import org.dom4j.io.SAXReader;
+import org.apache.commons.digester.Digester;
+import org.apache.commons.digester.RuleSet;
import org.apache.velocity.app.Velocity;
+import org.apache.velocity.tools.view.ToolboxRuleSet;
import org.apache.velocity.tools.view.context.ToolboxContext;
@@ -123,15 +121,10 @@
public abstract class XMLToolboxManager implements ToolboxManager
{
- public static final String BASE_NODE = "toolbox";
- public static final String ELEMENT_TOOL = "tool";
- public static final String ELEMENT_DATA = "data";
- public static final String ELEMENT_KEY = "key";
- public static final String ELEMENT_CLASS = "class";
- public static final String ELEMENT_VALUE = "value";
- public static final String ATTRIBUTE_TYPE = "type";
-
private List toolinfo;
+ private Map toolbox;
+
+ private static RuleSet ruleSet = new ToolboxRuleSet();
/**
@@ -140,23 +133,21 @@
public XMLToolboxManager()
{
toolinfo = new ArrayList();
+ toolbox = new HashMap();
}
-
// ------------------------------- ToolboxManager interface ------------
-
public void addTool(ToolInfo info)
{
toolinfo.add(info);
+ Velocity.info("Added "+info.getKey()+" ("+info.getClassname()+") to the toolbox.");
}
public ToolboxContext getToolboxContext(Object initData)
{
- Map toolbox = new HashMap();
-
Iterator i = toolinfo.iterator();
while(i.hasNext())
{
@@ -168,22 +159,11 @@
}
-
// ------------------------------- toolbox loading methods ------------
-
- /**
- * Default implementation logs messages to Velocity's log system
- */
- protected void log(String s) {
- Velocity.info("XMLToolboxManager - "+s);
- }
-
-
/**
* <p>Reads an XML document from an {@link InputStream}
- * using <a href="http://dom4j.org">dom4j</a> and
- * sets up the toolbox from that.</p>
+ * and sets up the toolbox from that.</p>
*
* The DTD for toolbox schema is:
* <pre>
@@ -201,78 +181,21 @@
*/
public void load(InputStream input) throws Exception
{
- log("Loading toolbox...");
- Document document = new SAXReader().read(input);
- List elements = document.selectNodes("//"+BASE_NODE+"/*");
-
- int elementsRead = 0;
- Iterator i = elements.iterator();
- while(i.hasNext())
- {
- Element e = (Element)i.next();
- if (readElement(e)) {
- elementsRead++;
- }
- }
-
- log("Toolbox loaded. Read "+elementsRead+" elements.");
- }
-
-
- /**
- * Delegates the reading of an element's ToolInfo
- * and adds the returned instance to the tool list.
- */
- protected boolean readElement(Element e) throws Exception
- {
- String name = e.getName();
-
- ToolInfo info = null;
-
- if (name.equalsIgnoreCase(ELEMENT_TOOL))
- {
- info = readToolInfo(e);
- }
- else if (name.equalsIgnoreCase(ELEMENT_DATA))
- {
- info = readDataInfo(e);
- }
- else
- {
- log("Could not read element: "+name);
- return false;
- }
-
- addTool(info);
- log("Added "+info.getClassname()+" as "+info.getKey());
- return true;
- }
-
-
- protected ToolInfo readToolInfo(Element e) throws Exception
- {
- Node n = e.selectSingleNode(ELEMENT_KEY);
- String key = n.getText();
+ Velocity.debug("XMLToolboxManager: Loading toolbox...");
- n = e.selectSingleNode(ELEMENT_CLASS);
- String classname = n.getText();
+ Digester digester = new Digester();
+ digester.setValidating(false);
+ digester.push(this);
+ digester.addRuleSet(getRuleSet());
+ digester.parse(input);
- return new ViewToolInfo(key, classname);
+ Velocity.debug("XMLToolboxManager: Toolbox loaded.");
}
- protected ToolInfo readDataInfo(Element e) throws Exception
+ protected RuleSet getRuleSet()
{
- Node n = e.selectSingleNode(ELEMENT_KEY);
- String key = n.getText();
-
- n = e.selectSingleNode(ELEMENT_VALUE);
- String value = n.getText();
-
- String type = e.attributeValue(ATTRIBUTE_TYPE, DataInfo.TYPE_STRING);
-
- return new DataInfo(key, type, value);
+ return ruleSet;
}
-
}
1.5 +29 -109 jakarta-velocity-tools/src/java/org/apache/velocity/tools/view/servlet/ServletToolboxManager.java
Index: ServletToolboxManager.java
===================================================================
RCS file: /home/cvs/jakarta-velocity-tools/src/java/org/apache/velocity/tools/view/servlet/ServletToolboxManager.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ServletToolboxManager.java 28 May 2003 00:17:16 -0000 1.4
+++ ServletToolboxManager.java 22 Jul 2003 18:34:28 -0000 1.5
@@ -56,9 +56,9 @@
package org.apache.velocity.tools.view.servlet;
-import java.io.IOException;
-import java.io.FileNotFoundException;
import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.List;
import java.util.Iterator;
@@ -69,15 +69,15 @@
import javax.servlet.http.HttpSession;
import javax.servlet.ServletContext;
-import org.dom4j.Element;
-import org.dom4j.Node;
-
+import org.apache.commons.digester.Digester;
+import org.apache.commons.digester.RuleSet;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.tools.view.DataInfo;
import org.apache.velocity.tools.view.ToolInfo;
import org.apache.velocity.tools.view.XMLToolboxManager;
import org.apache.velocity.tools.view.context.ToolboxContext;
import org.apache.velocity.tools.view.context.ViewContext;
+import org.apache.velocity.tools.view.servlet.ServletToolboxRuleSet;
/**
@@ -139,13 +139,12 @@
// --------------------------------------------------- Properties ---------
- public static final String ELEMENT_SCOPE = "scope";
- public static final String ELEMENT_CREATE_SESSION = "create-session";
-
- public static final String VALUE_YES = "yes";
- public static final String VALUE_NO = "no";
+ public static final String REQUEST_SCOPE = "request";
+ public static final String SESSION_SCOPE = "session";
+ public static final String APPLICATION_SCOPE = "application";
- public static final String SESSION_TOOLS_KEY = "org.apache.velocity.tools.view.tools.ServletToolboxManager.SessionTools";
+ public static final String SESSION_TOOLS_KEY =
+ "org.apache.velocity.tools.view.tools.ServletToolboxManager.SessionTools";
private ServletContext servletContext;
private Map appTools;
@@ -154,6 +153,7 @@
private boolean createSession;
private static HashMap managersMap = new HashMap();
+ private static RuleSet servletRuleSet = new ServletToolboxRuleSet();
// --------------------------------------------------- Constructor --------
@@ -173,6 +173,8 @@
}
+ // -------------------------------------------- Public Methods ------------
+
/**
* ServletToolboxManager factory method.
* This method will ensure there is exactly one ServletToolboxManager
@@ -205,7 +207,8 @@
if (is != null)
{
- Velocity.info("Using toolbox configuration file '" + toolboxFile +"'");
+ Velocity.info("ServletToolboxManager: Using config file '" +
+ toolboxFile +"'");
toolboxManager = new ServletToolboxManager(servletContext);
toolboxManager.load(is);
@@ -213,7 +216,7 @@
// remember it
managersMap.put(pathname, toolboxManager);
- Velocity.info("Toolbox setup complete.");
+ Velocity.info("ServletToolboxManager: Toolbox setup complete.");
}
}
catch(Exception e)
@@ -222,8 +225,8 @@
// if this happens, it probably deserves
// to have the stack trace logged
- java.io.StringWriter sw = new java.io.StringWriter();
- e.printStackTrace(new java.io.PrintWriter(sw));
+ StringWriter sw = new StringWriter();
+ e.printStackTrace(new PrintWriter(sw));
Velocity.error(sw.toString());
}
finally
@@ -240,9 +243,7 @@
}
return toolboxManager;
}
-
- // --------------------------------------------------- Methods ------------
/**
* <p>Sets whether or not to create a new session when none exists for the
@@ -264,98 +265,15 @@
public void setCreateSession(boolean b)
{
createSession = b;
+ Velocity.debug("ServletToolboxManager: create-session is set to " + b);
}
- /**
- * Overrides XMLToolboxManager
- */
- protected void log(String s)
- {
- Velocity.info("ServletToolboxManager: " + s);
- }
-
-
- /**
- * Overrides XMLToolboxManager to handle the create-session element.
- */
- protected boolean readElement(Element e) throws Exception
- {
- String name = e.getName();
-
- ToolInfo info = null;
-
- if (name.equalsIgnoreCase(ELEMENT_TOOL))
- {
- info = readToolInfo(e);
- }
- else if (name.equalsIgnoreCase(ELEMENT_DATA))
- {
- info = readDataInfo(e);
- }
- else if (name.equalsIgnoreCase(ELEMENT_CREATE_SESSION))
- {
- readCreateSession(e);
- return true;
- }
- else
- {
- log("Unreadable element: "+name);
- return false;
- }
-
- addTool(info);
- log("Added "+info.getClassname()+" as "+info.getKey());
- return true;
- }
-
-
- /**
- * Reads the value for create-session.
- *
- * @see #setCreateSession(boolean)
- */
- protected boolean readCreateSession(Element e) throws Exception
- {
- String csValue = e.getText();
- if (VALUE_YES.equalsIgnoreCase(csValue))
- {
- setCreateSession(true);
- }
- else if (VALUE_NO.equalsIgnoreCase(csValue))
- {
- setCreateSession(false);
- }
- else
- {
- log("Unknown value for create-session. Valid options are 'yes' or 'no'.");
- return false;
- }
- log("create-session is set to "+createSession);
- return true;
- }
-
+ // ------------------------------ XMLToolboxManager Overrides -------------
- /**
- * Overrides XMLToolboxManager to read a {@link ServletToolInfo}
- * instead of a {@link org.apache.velocity.tools.view.ViewToolInfo}.
- */
- protected ToolInfo readToolInfo(Element e) throws Exception
+ protected RuleSet getRuleSet()
{
- Node n = e.selectSingleNode(ELEMENT_KEY);
- String key = n.getText();
-
- n = e.selectSingleNode(ELEMENT_CLASS);
- String classname = n.getText();
-
- String scope = ServletToolInfo.REQUEST_SCOPE;
- n = e.selectSingleNode(ELEMENT_SCOPE);
- if (n != null)
- {
- scope = n.getText();
- }
-
- return new ServletToolInfo(key, classname, scope);
+ return servletRuleSet;
}
@@ -374,15 +292,15 @@
{
ServletToolInfo stInfo = (ServletToolInfo)info;
- if (stInfo.getScope().equalsIgnoreCase(ServletToolInfo.REQUEST_SCOPE))
+ if (REQUEST_SCOPE.equalsIgnoreCase(stInfo.getScope()))
{
requestToolInfo.add(stInfo);
}
- else if (stInfo.getScope().equalsIgnoreCase(ServletToolInfo.SESSION_SCOPE))
+ else if (SESSION_SCOPE.equalsIgnoreCase(stInfo.getScope()))
{
sessionToolInfo.add(stInfo);
}
- else if (stInfo.getScope().equalsIgnoreCase(ServletToolInfo.APPLICATION_SCOPE))
+ else if (APPLICATION_SCOPE.equalsIgnoreCase(stInfo.getScope()))
{
//add application scoped tools to appTools and
//initialize them with the ServletContext
@@ -390,7 +308,9 @@
}
else
{
- log("Unknown scope: "+stInfo.getScope()+" "+stInfo.getKey()+" will be request scoped.");
+ Velocity.warn("ServletToolboxManager: Unknown scope '" +
+ stInfo.getScope() + "' - " + stInfo.getKey() +
+ " will be request scoped.");
requestToolInfo.add(stInfo);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org