Merge branch '2.3-gae' into 2.3
diff --git a/build.xml b/build.xml
index df89cbf..9bde387 100644
--- a/build.xml
+++ b/build.xml
@@ -688,14 +688,13 @@
</parent>
<groupId>org.freemarker</groupId>
- <artifactId>freemarker-gae</artifactId>
+ <artifactId>freemarker</artifactId>
<version>${mavenVersion}</version>
<packaging>jar</packaging>
<name>FreeMarker</name>
<description>
- Google App Engine compliant variation of FreeMarker.
FreeMarker is a "template engine"; a generic tool to generate text output based on templates.
</description>
<url>http://freemarker.org/</url>
diff --git a/src/main/java/freemarker/core/Environment.java b/src/main/java/freemarker/core/Environment.java
index 45d4888..c92b1ec 100644
--- a/src/main/java/freemarker/core/Environment.java
+++ b/src/main/java/freemarker/core/Environment.java
@@ -1572,7 +1572,7 @@
static private Macro getEnclosingMacro(TemplateElement stackEl) {
while (stackEl != null) {
if (stackEl instanceof Macro) return (Macro) stackEl;
- stackEl = stackEl.getParent();
+ stackEl = (TemplateElement) stackEl.getParent();
}
return null;
}
diff --git a/src/main/java/freemarker/core/FreeMarkerTree.java b/src/main/java/freemarker/core/FreeMarkerTree.java
index b63f3f3..81bbd91 100644
--- a/src/main/java/freemarker/core/FreeMarkerTree.java
+++ b/src/main/java/freemarker/core/FreeMarkerTree.java
@@ -16,13 +16,8 @@
package freemarker.core;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeNode;
import freemarker.template.Template;
@@ -32,26 +27,13 @@
* @deprecated Will be removed, as Swing classes aren't accessible on Google App Engine.
*/
public class FreeMarkerTree extends JTree {
- private static final long serialVersionUID = 1L;
- private final Map nodeMap = new HashMap();
-
public FreeMarkerTree(Template template) {
- setTemplate(template);
- }
-
- private TreeNode getNode(TemplateElement element) {
- TreeNode n = (TreeNode)nodeMap.get(element);
- if(n != null) {
- return n;
- }
- n = new TemplateElementTreeNode(element);
- nodeMap.put(element, n);
- return n;
+ super(template.getRootTreeNode());
}
public void setTemplate(Template template) {
- this.setModel(new DefaultTreeModel(getNode(template.getRootTreeNode())));
+ this.setModel(new DefaultTreeModel(template.getRootTreeNode()));
this.invalidate();
}
@@ -59,55 +41,10 @@
boolean expanded, boolean leaf, int row,
boolean hasFocus)
{
- if (value instanceof TemplateElementTreeNode) {
- return ((TemplateElementTreeNode) value).element.getDescription();
+ if (value instanceof TemplateElement) {
+ return ((TemplateElement) value).getDescription();
}
return value.toString();
}
- private class TemplateElementTreeNode implements TreeNode {
- private final TemplateElement element;
-
- TemplateElementTreeNode(TemplateElement element) {
- this.element = element;
- }
-
- public Enumeration children() {
- final Enumeration e = element.children();
- return new Enumeration() {
- public boolean hasMoreElements() {
- return e.hasMoreElements();
- }
- public Object nextElement() {
- return getNode((TemplateElement)e.nextElement());
- }
- };
- }
-
- public boolean getAllowsChildren() {
- return element.getAllowsChildren();
- }
-
- public TreeNode getChildAt(int childIndex) {
- return getNode(element.getChildAt(childIndex));
- }
-
- public int getChildCount() {
- return element.getChildCount();
- }
-
- public int getIndex(TreeNode node) {
- return element.getIndex(((TemplateElementTreeNode)node).element);
- }
-
- public TreeNode getParent() {
- return getNode(element.getParent());
- }
-
- public boolean isLeaf() {
- return element.isLeaf();
- }
-
-
- }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/freemarker/core/TemplateElement.java b/src/main/java/freemarker/core/TemplateElement.java
index 9643d4f..b3e6da9 100644
--- a/src/main/java/freemarker/core/TemplateElement.java
+++ b/src/main/java/freemarker/core/TemplateElement.java
@@ -23,6 +23,8 @@
import java.util.Iterator;
import java.util.List;
+import javax.swing.tree.TreeNode;
+
import freemarker.template.SimpleSequence;
import freemarker.template.TemplateException;
import freemarker.template.TemplateNodeModel;
@@ -33,7 +35,7 @@
* tree representation of the template necessarily
* descend from this abstract class.
*/
-abstract public class TemplateElement extends TemplateObject {
+abstract public class TemplateElement extends TemplateObject implements TreeNode {
TemplateElement parent;
@@ -135,7 +137,7 @@
return !isLeaf();
}
- public int getIndex(TemplateElement node) {
+ public int getIndex(TreeNode node) {
if (nestedBlock instanceof MixedContent) {
return nestedBlock.getIndex(node);
}
@@ -176,7 +178,7 @@
return Collections.enumeration(Collections.EMPTY_LIST);
}
- public TemplateElement getChildAt(int index) {
+ public TreeNode getChildAt(int index) {
if (nestedBlock instanceof MixedContent) {
return nestedBlock.getChildAt(index);
}
@@ -187,7 +189,7 @@
throw new ArrayIndexOutOfBoundsException("invalid index");
}
else if (nestedElements != null) {
- return(TemplateElement) nestedElements.get(index);
+ return(TreeNode) nestedElements.get(index);
}
throw new ArrayIndexOutOfBoundsException("element has no children");
}
@@ -214,7 +216,7 @@
}
}
- public TemplateElement getParent() {
+ public TreeNode getParent() {
return parent;
}
diff --git a/src/main/java/freemarker/template/Template.java b/src/main/java/freemarker/template/Template.java
index 97cfffd..670205b 100644
--- a/src/main/java/freemarker/template/Template.java
+++ b/src/main/java/freemarker/template/Template.java
@@ -32,6 +32,8 @@
import java.util.Map;
import java.util.Vector;
+import javax.swing.tree.TreePath;
+
import freemarker.cache.TemplateLoader;
import freemarker.core.Configurable;
import freemarker.core.Environment;
@@ -687,12 +689,11 @@
}
/**
- * @return an array of the {@link TemplateElement}s containing the given
- * column and line numbers.
- * @param column the column
+ * @return an array of the elements containing the given column and line numbers.
+ * @param column the column
* @param line the line
*/
- public List containingElements(int column, int line) {
+ public TreePath containingElements(int column, int line) {
ArrayList elements = new ArrayList();
TemplateElement element = rootElement;
mainloop:
@@ -710,11 +711,10 @@
if (elements == null || elements.isEmpty()) {
return null;
}
- return elements;
+ return new TreePath(elements.toArray());
}
static public class WrongEncodingException extends ParseException {
- private static final long serialVersionUID = 1L;
public String specifiedEncoding;
diff --git a/src/main/resources/freemarker/version.properties b/src/main/resources/freemarker/version.properties
index 3e68ad3..cee1cea 100644
--- a/src/main/resources/freemarker/version.properties
+++ b/src/main/resources/freemarker/version.properties
@@ -80,4 +80,4 @@
# This should be automatically filled by the building tool (Ant).
buildTimestamp=@timestampNice@
-isGAECompliant=true
+isGAECompliant=false
diff --git a/src/test/java/freemarker/test/TreeView.java b/src/test/java/freemarker/test/TreeView.java
index cd5eba9..53c29a1 100644
--- a/src/test/java/freemarker/test/TreeView.java
+++ b/src/test/java/freemarker/test/TreeView.java
@@ -60,7 +60,7 @@
}
static void usage() {
- System.err.println("little toy program to display a compiled template as a tree.");
- System.err.println("Usage: java freemarker.test.TreeView <templatefile>");
+ System.err.println("Little toy program to display a compiled template as a tree.");
+ System.err.println("Usage: java freemarker.testcase.TreeView <templatefile>");
}
}