You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/01/08 21:20:25 UTC
[06/13] incubator-freemarker git commit: Unit tests for Sibling and
file renamed as per convention
Unit tests for Sibling and file renamed as per convention
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/0ad01886
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/0ad01886
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/0ad01886
Branch: refs/heads/2.3-gae
Commit: 0ad018867388ce67e9d2d7e3cac6494ed89bcc43
Parents: 9e73d00
Author: Pradeep <pr...@trimble.com>
Authored: Sun Dec 6 20:51:24 2015 +0530
Committer: Pradeep <pr...@trimble.com>
Committed: Mon Jan 11 19:20:32 2016 +0530
----------------------------------------------------------------------
src/main/java/freemarker/core/BuiltIn.java | 4 +-
.../java/freemarker/core/BuiltInExtForNode.java | 36 --------------
.../java/freemarker/core/BuiltInForNodeEx.java | 36 ++++++++++++++
.../freemarker/core/BuiltInsExtForNode.java | 41 ----------------
.../java/freemarker/core/BuiltInsForNodes.java | 22 ++++++---
.../java/freemarker/ext/dom/ElementModel.java | 9 +++-
src/test/java/freemarker/core/SiblingTest.java | 50 +++++++++++++++-----
.../freemarker/core/siblingDataModel.xml | 2 +-
8 files changed, 100 insertions(+), 100 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0ad01886/src/main/java/freemarker/core/BuiltIn.java
----------------------------------------------------------------------
diff --git a/src/main/java/freemarker/core/BuiltIn.java b/src/main/java/freemarker/core/BuiltIn.java
index ee02625..c9d93d5 100644
--- a/src/main/java/freemarker/core/BuiltIn.java
+++ b/src/main/java/freemarker/core/BuiltIn.java
@@ -62,8 +62,8 @@ import freemarker.core.BuiltInsForSequences.seq_index_ofBI;
import freemarker.core.BuiltInsForSequences.sortBI;
import freemarker.core.BuiltInsForSequences.sort_byBI;
import freemarker.core.BuiltInsForStringsMisc.evalBI;
-import freemarker.core.BuiltInsExtForNode.previousSiblingBI;
-import freemarker.core.BuiltInsExtForNode.nextSiblingBI;
+import freemarker.core.BuiltInsForNodes.previousSiblingBI;
+import freemarker.core.BuiltInsForNodes.nextSiblingBI;
import freemarker.template.Configuration;
import freemarker.template.TemplateDateModel;
import freemarker.template.TemplateModel;
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0ad01886/src/main/java/freemarker/core/BuiltInExtForNode.java
----------------------------------------------------------------------
diff --git a/src/main/java/freemarker/core/BuiltInExtForNode.java b/src/main/java/freemarker/core/BuiltInExtForNode.java
deleted file mode 100644
index 00e55fa..0000000
--- a/src/main/java/freemarker/core/BuiltInExtForNode.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.
- */
-package freemarker.core;
-
-import freemarker.template.*;
-
-public abstract class BuiltInExtForNode extends BuiltIn {
- @Override
- TemplateModel _eval(Environment env)
- throws TemplateException {
- TemplateModel model = target.eval(env);
- if (model instanceof TemplateNodeModelEx) {
- return calculateResult((TemplateNodeModelEx) model, env);
- } else {
- throw new NonNodeException(target, model, env);
- }
- }
- abstract TemplateModel calculateResult(TemplateNodeModelEx nodeModel, Environment env)
- throws TemplateModelException;
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0ad01886/src/main/java/freemarker/core/BuiltInForNodeEx.java
----------------------------------------------------------------------
diff --git a/src/main/java/freemarker/core/BuiltInForNodeEx.java b/src/main/java/freemarker/core/BuiltInForNodeEx.java
new file mode 100644
index 0000000..8bfe6b6
--- /dev/null
+++ b/src/main/java/freemarker/core/BuiltInForNodeEx.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package freemarker.core;
+
+import freemarker.template.*;
+
+public abstract class BuiltInForNodeEx extends BuiltIn {
+ @Override
+ TemplateModel _eval(Environment env)
+ throws TemplateException {
+ TemplateModel model = target.eval(env);
+ if (model instanceof TemplateNodeModelEx) {
+ return calculateResult((TemplateNodeModelEx) model, env);
+ } else {
+ throw new NonNodeException(target, model, env);
+ }
+ }
+ abstract TemplateModel calculateResult(TemplateNodeModelEx nodeModel, Environment env)
+ throws TemplateModelException;
+}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0ad01886/src/main/java/freemarker/core/BuiltInsExtForNode.java
----------------------------------------------------------------------
diff --git a/src/main/java/freemarker/core/BuiltInsExtForNode.java b/src/main/java/freemarker/core/BuiltInsExtForNode.java
deleted file mode 100644
index b675b9a..0000000
--- a/src/main/java/freemarker/core/BuiltInsExtForNode.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.
- */
-package freemarker.core;
-
-import freemarker.template.TemplateModel;
-import freemarker.template.TemplateModelException;
-import freemarker.template.TemplateNodeModelEx;
-
-public class BuiltInsExtForNode {
-
- static class previousSiblingBI extends BuiltInExtForNode {
- @Override
- TemplateModel calculateResult(TemplateNodeModelEx nodeModel, Environment env) throws TemplateModelException {
- return nodeModel.getPreviousSibling();
- }
- }
-
- static class nextSiblingBI extends BuiltInExtForNode {
- @Override
- TemplateModel calculateResult(TemplateNodeModelEx nodeModel, Environment env) throws TemplateModelException {
- return nodeModel.getNextSibling();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0ad01886/src/main/java/freemarker/core/BuiltInsForNodes.java
----------------------------------------------------------------------
diff --git a/src/main/java/freemarker/core/BuiltInsForNodes.java b/src/main/java/freemarker/core/BuiltInsForNodes.java
index 2fc8c54..fa2c6ec 100644
--- a/src/main/java/freemarker/core/BuiltInsForNodes.java
+++ b/src/main/java/freemarker/core/BuiltInsForNodes.java
@@ -22,12 +22,7 @@ package freemarker.core;
import java.util.List;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import freemarker.template.SimpleScalar;
-import freemarker.template.SimpleSequence;
-import freemarker.template.TemplateMethodModel;
-import freemarker.template.TemplateModel;
-import freemarker.template.TemplateModelException;
-import freemarker.template.TemplateNodeModel;
+import freemarker.template.*;
import freemarker.template.utility.StringUtil;
/**
@@ -97,7 +92,20 @@ class BuiltInsForNodes {
return result;
}
}
-
+
+ static class previousSiblingBI extends BuiltInForNodeEx {
+ @Override
+ TemplateModel calculateResult(TemplateNodeModelEx nodeModel, Environment env) throws TemplateModelException {
+ return nodeModel.getPreviousSibling();
+ }
+ }
+
+ static class nextSiblingBI extends BuiltInForNodeEx {
+ @Override
+ TemplateModel calculateResult(TemplateNodeModelEx nodeModel, Environment env) throws TemplateModelException {
+ return nodeModel.getNextSibling();
+ }
+ }
// Can't be instantiated
private BuiltInsForNodes() { }
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0ad01886/src/main/java/freemarker/ext/dom/ElementModel.java
----------------------------------------------------------------------
diff --git a/src/main/java/freemarker/ext/dom/ElementModel.java b/src/main/java/freemarker/ext/dom/ElementModel.java
index 99d8e23..41844d7 100644
--- a/src/main/java/freemarker/ext/dom/ElementModel.java
+++ b/src/main/java/freemarker/ext/dom/ElementModel.java
@@ -91,14 +91,14 @@ class ElementModel extends NodeModel implements TemplateScalarModel {
}
if (key.equals("@@previous")) {
Node previousSibling = node.getPreviousSibling();
- while(previousSibling.getNodeType() != Node.ELEMENT_NODE) {
+ while(!this.isSignificantNode(previousSibling)) {
previousSibling = previousSibling.getPreviousSibling();
}
return wrap(previousSibling);
}
if (key.equals("@@next")) {
Node nextSibling = node.getNextSibling();
- while(nextSibling.getNodeType() != Node.ELEMENT_NODE) {
+ while(!this.isSignificantNode(nextSibling)) {
nextSibling = nextSibling.getNextSibling();
}
return wrap(nextSibling);
@@ -121,6 +121,11 @@ class ElementModel extends NodeModel implements TemplateScalarModel {
return super.get(key);
}
+ public boolean isSignificantNode(Node node) throws TemplateModelException {
+ boolean isEmpty = node.getTextContent().trim().isEmpty();
+ boolean significantNode = !isEmpty;
+ return significantNode;
+ }
public String getAsString() throws TemplateModelException {
NodeList nl = node.getChildNodes();
String result = "";
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0ad01886/src/test/java/freemarker/core/SiblingTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/freemarker/core/SiblingTest.java b/src/test/java/freemarker/core/SiblingTest.java
index b38cec0..0db4df8 100644
--- a/src/test/java/freemarker/core/SiblingTest.java
+++ b/src/test/java/freemarker/core/SiblingTest.java
@@ -3,7 +3,10 @@ package freemarker.core;
import freemarker.ext.dom.NodeModel;
import freemarker.template.TemplateException;
import freemarker.test.TemplateTest;
+import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
+import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
@@ -33,25 +36,50 @@ import java.util.Map;
*/
public class SiblingTest extends TemplateTest {
- @Override
- protected Object getDataModel() {
- Map dataModel = new HashMap();
- String dataModelFileUrl = this.getClass().getResource(".").toString() + "/siblingDataModel.xml";
+ @Before
+ public void setUp() {
try {
- dataModel.put(
- "doc", NodeModel.parse(new File("build/test-classes/freemarker/core/siblingDataModel.xml")));
+ InputSource is = new InputSource(getClass().getResourceAsStream("siblingDataModel.xml"));
+ addToDataModel("doc", NodeModel.parse(is) );
} catch (Exception e) {
System.out.println("Exception while parsing the dataModel xml");
e.printStackTrace();
}
- return dataModel;
}
+
+ @Test
+ public void testEmptyPreviousSibling() throws IOException, TemplateException {
+ String ftl = "${doc.person.name?previousSibling}";
+ assertOutput(ftl, "\n ");
+ }
+
+ @Test
+ public void testNonEmptyPreviousSibling() throws IOException, TemplateException {
+ String ftl = "${doc.person.address?previousSibling}";
+ assertOutput(ftl, "12th August");
+ }
+
@Test
- public void testPreviousSibling() throws IOException, TemplateException {
- String ftl = "<#assign sibling>${doc.person.name?previousSibling}</#assign>" +
- "${sibling?trim}" ;
- assertOutput(ftl, "");
+ public void testEmptyNextSibling() throws IOException, TemplateException {
+ String ftl = "${doc.person.name?nextSibling}";
+ assertOutput(ftl, "\n ");
}
+ @Test
+ public void testNonEmptyNextSibling() throws IOException, TemplateException {
+ String ftl = "${doc.person.dob?nextSibling}";
+ assertOutput(ftl, "Chennai, India");
+ }
+ @Test
+ public void testSignificantNextSibling() throws IOException, TemplateException {
+ String ftl = "${doc.person.name.@@next}";
+ assertOutput(ftl, "12th August");
+ }
+
+ @Test
+ public void testSignificantPreviousSibling() throws IOException, TemplateException {
+ String ftl = "${doc.person.name.@@previous}";
+ assertOutput(ftl, "male");
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0ad01886/src/test/resources/freemarker/core/siblingDataModel.xml
----------------------------------------------------------------------
diff --git a/src/test/resources/freemarker/core/siblingDataModel.xml b/src/test/resources/freemarker/core/siblingDataModel.xml
index f743e2e..13f928a 100644
--- a/src/test/resources/freemarker/core/siblingDataModel.xml
+++ b/src/test/resources/freemarker/core/siblingDataModel.xml
@@ -2,5 +2,5 @@
<person>
<gender>male</gender>
<name>pradeep</name>
- <dob>12th August</dob>
+ <dob>12th August</dob><address>Chennai, India</address>
</person>