aboutsummaryrefslogtreecommitdiff
path: root/velocity-engine-core/src/main/java/org/apache/velocity/context/InternalHousekeepingContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'velocity-engine-core/src/main/java/org/apache/velocity/context/InternalHousekeepingContext.java')
-rw-r--r--velocity-engine-core/src/main/java/org/apache/velocity/context/InternalHousekeepingContext.java148
1 files changed, 148 insertions, 0 deletions
diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/context/InternalHousekeepingContext.java b/velocity-engine-core/src/main/java/org/apache/velocity/context/InternalHousekeepingContext.java
new file mode 100644
index 00000000..11b03166
--- /dev/null
+++ b/velocity-engine-core/src/main/java/org/apache/velocity/context/InternalHousekeepingContext.java
@@ -0,0 +1,148 @@
+package org.apache.velocity.context;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.velocity.Template;
+import org.apache.velocity.runtime.resource.Resource;
+import org.apache.velocity.util.introspection.IntrospectionCacheData;
+
+import java.util.List;
+
+/**
+ * interface to encapsulate the 'stuff' for internal operation of velocity.
+ * We use the context as a thread-safe storage : we take advantage of the
+ * fact that it's a visitor of sorts to all nodes (that matter) of the
+ * AST during init() and render().
+ *
+ * Currently, it carries the template name for namespace
+ * support, as well as node-local context data introspection caching.
+ *
+ * @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
+ * @author <a href="mailto:Christoph.Reck@dlr.de">Christoph Reck</a>
+ * @version $Id$
+ */
+interface InternalHousekeepingContext
+{
+ /**
+ * set the current template name on top of stack
+ *
+ * @param s current template name
+ */
+ void pushCurrentTemplateName( String s );
+
+ /**
+ * remove the current template name from stack
+ */
+ void popCurrentTemplateName();
+
+ /**
+ * get the current template name
+ *
+ * @return String current template name
+ */
+ String getCurrentTemplateName();
+
+ /**
+ * Returns the template name stack in form of an array.
+ *
+ * @return String[] with the template name stack contents.
+ */
+ String[] getTemplateNameStack();
+
+ /**
+ * set the current macro name on top of stack
+ *
+ * @param s current macro name
+ */
+ void pushCurrentMacroName( String s );
+
+ /**
+ * remove the current macro name from stack
+ */
+ void popCurrentMacroName();
+
+ /**
+ * get the current macro name
+ *
+ * @return String current macro name
+ */
+ String getCurrentMacroName();
+
+ /**
+ * get the current macro call depth
+ *
+ * @return int current macro call depth
+ */
+ int getCurrentMacroCallDepth();
+
+ /**
+ * Returns the macro name stack in form of an array.
+ *
+ * @return String[] with the macro name stack contents.
+ */
+ String[] getMacroNameStack();
+
+ /**
+ * returns an IntrospectionCache Data (@see IntrospectionCacheData)
+ * object if exists for the key
+ *
+ * @param key key to find in cache
+ * @return cache object
+ */
+ IntrospectionCacheData icacheGet( Object key );
+
+ /**
+ * places an IntrospectionCache Data (@see IntrospectionCacheData)
+ * element in the cache for specified key
+ *
+ * @param key key
+ * @param o IntrospectionCacheData object to place in cache
+ */
+ void icachePut( Object key, IntrospectionCacheData o );
+
+ /**
+ * temporary fix to enable #include() to figure out
+ * current encoding.
+ *
+ * @return The current resource.
+ */
+ Resource getCurrentResource();
+
+
+ /**
+ * @param r
+ */
+ void setCurrentResource( Resource r );
+
+ /**
+ * Set the macro library list for the current template.
+ *
+ * @param macroLibraries list of macro libraries to set
+ */
+ void setMacroLibraries(List<Template> macroLibraries);
+
+ /**
+ * Get the macro library list for the current template.
+ *
+ * @return List of macro library names
+ */
+ List<Template> getMacroLibraries();
+
+}