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/08/20 22:08:45 UTC

[3/3] incubator-freemarker git commit: Renamed `TemplateScalarModel` to `TemplateStringModel`. (The `TemplateScalarModel` name come from the early FM, where there where strings, numbers, booleans, etc. weren't separated.)

Renamed `TemplateScalarModel` to `TemplateStringModel`. (The `TemplateScalarModel` name come from the early FM, where there where strings, numbers, booleans, etc. weren't separated.)


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/999afd28
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/999afd28
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/999afd28

Branch: refs/heads/3
Commit: 999afd28d894b264279f90a404954c67f123aa25
Parents: 888ebe1
Author: ddekany <dd...@apache.org>
Authored: Mon Aug 21 00:08:27 2017 +0200
Committer: ddekany <dd...@apache.org>
Committed: Mon Aug 21 00:08:27 2017 +0200

----------------------------------------------------------------------
 FM3-CHANGE-LOG.txt                              |  2 +
 .../impl/Java8DefaultObjectWrapperTest.java     | 28 +++----
 .../freemarker/core/ConfigurationTest.java      | 20 ++---
 .../freemarker/core/DirectiveCallPlaceTest.java |  4 +-
 .../EnvironmentGetTemplateVariantsTest.java     |  4 +-
 .../core/NewBiObjectWrapperRestrictionTest.java |  4 +-
 .../DefaultObjectWrapperSingletonsTest.java     |  6 +-
 .../model/impl/DefaultObjectWrapperTest.java    | 26 +++---
 .../core/model/impl/EnumModelsTest.java         |  8 +-
 .../core/model/impl/ErrorMessagesTest.java      |  6 +-
 .../impl/FineTuneMethodAppearanceTest.java      |  8 +-
 .../model/impl/RestrictedObjectWrapperTest.java |  6 +-
 .../core/model/impl/StaticModelsTest.java       |  8 +-
 .../templatesuite/CoreTemplateTestSuite.java    |  2 +-
 .../templatesuite/models/AllTemplateModels.java |  8 +-
 .../models/BooleanAndScalarModel.java           | 40 ----------
 .../models/BooleanAndStringModel.java           | 40 ++++++++++
 .../models/BooleanAndStringTemplateModel.java   |  4 +-
 .../core/templatesuite/models/BooleanHash1.java |  6 +-
 .../templatesuite/models/ExceptionModel.java    |  9 +--
 .../models/HashAndScalarModel.java              | 84 --------------------
 .../models/HashAndStringModel.java              | 84 ++++++++++++++++++++
 .../core/templatesuite/models/MultiModel1.java  | 30 ++-----
 .../core/templatesuite/models/MultiModel2.java  |  8 +-
 .../core/templatesuite/models/MultiModel3.java  | 26 ++----
 .../core/templatesuite/models/MultiModel4.java  | 16 +---
 .../core/templatesuite/models/MultiModel5.java  | 21 +----
 .../core/templatesuite/models/NewTestModel.java |  4 +-
 .../templatesuite/models/NewTestModel2.java     |  4 +-
 .../models/NumberAndStringModel.java            |  4 +-
 .../models/OverloadedConstructor.java           |  4 +-
 .../models/OverloadedMethods2.java              |  8 +-
 .../models/SimpleTestFunction.java              |  4 +-
 .../core/templatesuite/models/TestBoolean.java  |  4 +-
 .../core/userpkg/AllFeaturesFunction.java       |  4 +-
 .../core/userpkg/NamedVarargsOnlyFunction.java  |  4 +-
 .../userpkg/PositionalVarargsOnlyFunction.java  |  4 +-
 .../core/userpkg/TestTemplateCallableModel.java |  6 +-
 .../core/userpkg/TwoNamedParamsFunction.java    |  4 +-
 .../userpkg/TwoPositionalParamsFunction.java    |  4 +-
 .../core/templatesuite/expected/boolean.txt     |  2 +-
 .../core/templatesuite/expected/logging.txt     |  3 +-
 .../core/templatesuite/expected/multimodels.txt |  2 +-
 .../expected/sequence-builtins.txt              |  2 +-
 .../core/templatesuite/templates/boolean.ftl    |  2 +-
 .../templates/dateformat-iso-bi.ftl             |  2 +-
 .../templatesuite/templates/multimodels.ftl     |  2 +-
 .../templates/overloaded-methods.ftl            | 14 ++--
 .../templates/sequence-builtins.ftl             |  2 +-
 .../core/ASTDirCapturingAssignment.java         |  4 +-
 .../org/apache/freemarker/core/ASTDirList.java  |  6 +-
 .../apache/freemarker/core/ASTDirRecurse.java   |  4 +-
 .../apache/freemarker/core/ASTDirSetting.java   |  6 +-
 .../org/apache/freemarker/core/ASTDirVisit.java |  4 +-
 .../freemarker/core/ASTExpAddOrConcat.java      | 10 +--
 .../freemarker/core/ASTExpBuiltInVariable.java  | 20 ++---
 .../apache/freemarker/core/ASTExpDefault.java   |  4 +-
 .../freemarker/core/ASTExpDynamicKeyName.java   | 16 ++--
 .../freemarker/core/ASTExpStringLiteral.java    | 12 +--
 .../apache/freemarker/core/ASTExpression.java   |  6 +-
 .../core/BuiltInForLegacyEscaping.java          |  4 +-
 .../freemarker/core/BuiltInsForDates.java       | 14 ++--
 .../core/BuiltInsForMarkupOutputs.java          |  4 +-
 .../core/BuiltInsForMultipleTypes.java          | 50 ++++++------
 .../BuiltInsForNestedContentParameters.java     | 10 +--
 .../freemarker/core/BuiltInsForNodes.java       |  8 +-
 .../freemarker/core/BuiltInsForNumbers.java     |  4 +-
 .../freemarker/core/BuiltInsForSequences.java   | 20 ++---
 .../core/BuiltInsForStringsBasic.java           | 42 +++++-----
 .../core/BuiltInsForStringsEncoding.java        | 22 ++---
 .../freemarker/core/BuiltInsForStringsMisc.java | 14 ++--
 .../core/BuiltInsForStringsRegexp.java          | 10 +--
 .../org/apache/freemarker/core/Environment.java | 12 +--
 .../apache/freemarker/core/MessageUtils.java    |  4 +-
 .../apache/freemarker/core/NativeHashEx2.java   |  4 +-
 .../core/NativeStringArraySequence.java         |  6 +-
 .../NativeStringCollectionCollectionEx.java     |  6 +-
 .../core/NativeStringListSequence.java          |  6 +-
 .../org/apache/freemarker/core/_EvalUtils.java  | 18 ++---
 .../freemarker/core/debug/DebugModel.java       |  2 +-
 .../core/debug/RmiDebugModelImpl.java           |  8 +-
 .../core/debug/RmiDebuggedEnvironmentImpl.java  |  6 +-
 .../core/model/GeneralPurposeNothing.java       |  2 +-
 .../core/model/TemplateHashModelEx.java         |  2 +-
 .../core/model/TemplateMarkupOutputModel.java   |  4 +-
 .../core/model/TemplateScalarModel.java         | 46 -----------
 .../core/model/TemplateStringModel.java         | 44 ++++++++++
 .../core/model/impl/BeanAndStringModel.java     |  9 +--
 .../freemarker/core/model/impl/BeanModel.java   |  8 +-
 .../core/model/impl/CharacterOrString.java      |  4 +-
 .../core/model/impl/DefaultObjectWrapper.java   | 20 ++---
 .../core/model/impl/SimpleScalar.java           | 71 -----------------
 .../core/model/impl/SimpleString.java           | 70 ++++++++++++++++
 .../freemarker/core/util/CallableUtils.java     | 10 +--
 .../apache/freemarker/core/util/DeepUnwrap.java | 10 +--
 .../core/util/TemplateLanguageUtils.java        |  8 +-
 freemarker-core/src/main/javacc/FTL.jj          | 38 ++++-----
 .../freemarker/dom/AttributeNodeModel.java      |  4 +-
 .../freemarker/dom/CharacterDataNodeModel.java  |  4 +-
 .../org/apache/freemarker/dom/ElementModel.java | 12 +--
 .../freemarker/dom/JaxenXPathSupport.java       |  6 +-
 .../apache/freemarker/dom/NodeListModel.java    | 10 +--
 .../org/apache/freemarker/dom/NodeModel.java    | 15 ++--
 .../dom/NodeQueryResultItemObjectWrapper.java   |  4 +-
 .../org/apache/freemarker/dom/PINodeModel.java  |  4 +-
 .../dom/SunInternalXalanXPathSupport.java       |  4 +-
 .../freemarker/dom/XalanXPathSupport.java       |  4 +-
 .../servlet/HttpRequestParametersHashModel.java |  4 +-
 .../apache/freemarker/servlet/IncludePage.java  | 22 +----
 .../servlet/jsp/FreeMarkerPageContext.java      |  4 +-
 .../freemarker/servlet/jsp/JspTagModelBase.java |  4 +-
 .../freemarker/servlet/jsp/TLDParsingTest.java  | 12 +--
 .../templateutil/AssertEqualsDirective.java     |  4 +-
 113 files changed, 671 insertions(+), 755 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/FM3-CHANGE-LOG.txt
----------------------------------------------------------------------
diff --git a/FM3-CHANGE-LOG.txt b/FM3-CHANGE-LOG.txt
index 033fcc6..0d6df14 100644
--- a/FM3-CHANGE-LOG.txt
+++ b/FM3-CHANGE-LOG.txt
@@ -203,6 +203,8 @@ Major changes / features
   - `#macro` now produces a `TemplateDirectiveModel` and `#function` produces a `TemplateFunctionModel`. (Earlier, the
     product was just a generic `TemplateModel` that could only be invoked using internal API-s, and had capabilities
     that the callable TemplateModel-s coulnd't have.)
+- Renamed `TemplateScalarModel` to `TemplateStringModel`. (The `TemplateScalarModel` name come from the early FM,
+  where there where strings, numbers, booleans, etc. weren't separated.)
 - Removed freemarker.ext.log, our log abstraction layer from the times when there was no clear winner on this field.
   Added org.slf4j:slf4j-api as required dependency instead.
 - Added Spring support to the FreeMarker project (freemarker-spring module), instead of relying Spring developers

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java b/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java
index fcd8f23..2afe94c 100644
--- a/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java
+++ b/freemarker-core-test-java8/src/test/java/org/apache/freemarker/core/model/impl/Java8DefaultObjectWrapperTest.java
@@ -23,11 +23,11 @@ import static org.junit.Assert.*;
 import org.apache.freemarker.core.Configuration;
 import org.apache.freemarker.core.NonTemplateCallPlace;
 import org.apache.freemarker.core.TemplateException;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.util.CallableUtils;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.junit.Test;
 
@@ -40,19 +40,19 @@ public class Java8DefaultObjectWrapperTest {
         TemplateHashModel wrappedBean = (TemplateHashModel) ow.wrap(new Java8DefaultMethodsBean());
         
         {
-            TemplateScalarModel prop = (TemplateScalarModel) wrappedBean.get(Java8DefaultMethodsBean.NORMAL_PROP);
+            TemplateStringModel prop = (TemplateStringModel) wrappedBean.get(Java8DefaultMethodsBean.NORMAL_PROP);
             assertNotNull(prop);
             assertEquals(Java8DefaultMethodsBean.NORMAL_PROP_VALUE, prop.getAsString());
         }
         {
             // This is overridden in the subclass, so it's visible even without default method support: 
-            TemplateScalarModel prop = (TemplateScalarModel) wrappedBean.get(
+            TemplateStringModel prop = (TemplateStringModel) wrappedBean.get(
                     Java8DefaultMethodsBean.DEFAULT_METHOD_PROP_2);
             assertNotNull(prop);
             assertEquals(Java8DefaultMethodsBean.PROP_2_OVERRIDE_VALUE, prop.getAsString());
         }
         {
-            TemplateScalarModel prop = (TemplateScalarModel) wrappedBean.get(
+            TemplateStringModel prop = (TemplateStringModel) wrappedBean.get(
                     Java8DefaultMethodsBeanBase.DEFAULT_METHOD_PROP);
             assertNotNull(prop);
             assertEquals(Java8DefaultMethodsBeanBase.DEFAULT_METHOD_PROP_VALUE, prop.getAsString());
@@ -65,7 +65,7 @@ public class Java8DefaultObjectWrapperTest {
                     Java8DefaultMethodsBeanBase.DEFAULT_METHOD_INDEXED_PROP_GETTER);
             assertNotNull(indexedReadMethod);
             assertEquals(Java8DefaultMethodsBeanBase.DEFAULT_METHOD_INDEXED_PROP_VALUE,
-                    ((TemplateScalarModel) indexedReadMethod.execute(
+                    ((TemplateStringModel) indexedReadMethod.execute(
                             new TemplateModel[] { new SimpleNumber(0) }, NonTemplateCallPlace.INSTANCE))
                             .getAsString());
         }
@@ -78,7 +78,7 @@ public class Java8DefaultObjectWrapperTest {
         }
         {
             // The default method read method invalidates the indexed read method in the subclass
-            TemplateScalarModel prop = (TemplateScalarModel) wrappedBean.get(
+            TemplateStringModel prop = (TemplateStringModel) wrappedBean.get(
                     Java8DefaultMethodsBean.DEFAULT_METHOD_NOT_AN_INDEXED_PROP_2);
             assertNotNull(prop);
             assertEquals(Java8DefaultMethodsBean.DEFAULT_METHOD_NOT_AN_INDEXED_PROP_2_VALUE, prop.getAsString());
@@ -89,7 +89,7 @@ public class Java8DefaultObjectWrapperTest {
                     Java8DefaultMethodsBean.DEFAULT_METHOD_NOT_AN_INDEXED_PROP_3);
             assertNotNull(prop);
             assertEquals(Java8DefaultMethodsBean.DEFAULT_METHOD_NOT_AN_INDEXED_PROP_3_VALUE_0,
-                    ((TemplateScalarModel) prop.get(0)).getAsString());
+                    ((TemplateStringModel) prop.get(0)).getAsString());
         }
         {
             // We see the default method indexed reader, which overrides the plain array reader in the subclass.
@@ -97,7 +97,7 @@ public class Java8DefaultObjectWrapperTest {
                     Java8DefaultMethodsBean.DEFAULT_METHOD_INDEXED_PROP_2);
             assertNotNull(prop);
             assertEquals(Java8DefaultMethodsBean.ARRAY_PROP_2_VALUE_0,
-                    ((TemplateScalarModel) prop.get(0)).getAsString());
+                    ((TemplateStringModel) prop.get(0)).getAsString());
         }
         {
             // We do see the default method non-indexed reader, but the subclass has a matching indexed reader, so that
@@ -106,7 +106,7 @@ public class Java8DefaultObjectWrapperTest {
                     Java8DefaultMethodsBean.DEFAULT_METHOD_INDEXED_PROP_3);
             assertNotNull(prop);
             assertEquals(Java8DefaultMethodsBeanBase.DEFAULT_METHOD_INDEXED_PROP_3_VALUE_0,
-                    ((TemplateScalarModel) prop.get(0)).getAsString());
+                    ((TemplateStringModel) prop.get(0)).getAsString());
         }        
         {
             // Only present in the subclass.
@@ -118,7 +118,7 @@ public class Java8DefaultObjectWrapperTest {
                     Java8DefaultMethodsBean.INDEXED_PROP_GETTER_4);
             assertNotNull(indexedReadMethod);
             assertEquals(Java8DefaultMethodsBean.INDEXED_PROP_4_VALUE,
-                    ((TemplateScalarModel) indexedReadMethod.execute(
+                    ((TemplateStringModel) indexedReadMethod.execute(
                             new TemplateModel[] { new SimpleNumber(0) }, NonTemplateCallPlace.INSTANCE))
                             .getAsString());
         }        
@@ -128,7 +128,7 @@ public class Java8DefaultObjectWrapperTest {
             assertNotNull(action);
             assertEquals(
                     Java8DefaultMethodsBean.NORMAL_ACTION_RETURN_VALUE,
-                    ((TemplateScalarModel) action.execute(
+                    ((TemplateStringModel) action.execute(
                             CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
                             .getAsString());
         }
@@ -139,7 +139,7 @@ public class Java8DefaultObjectWrapperTest {
             assertNotNull(action);
             assertEquals(
                     Java8DefaultMethodsBean.NORMAL_ACTION_RETURN_VALUE,
-                    ((TemplateScalarModel) action.execute(
+                    ((TemplateStringModel) action.execute(
                             CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
                             .getAsString());
         }
@@ -149,7 +149,7 @@ public class Java8DefaultObjectWrapperTest {
             assertNotNull(action);
             assertEquals(
                     Java8DefaultMethodsBean.DEFAULT_METHOD_ACTION_RETURN_VALUE,
-                    ((TemplateScalarModel) action.execute(
+                    ((TemplateStringModel) action.execute(
                             CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
                             .getAsString());
         }
@@ -159,7 +159,7 @@ public class Java8DefaultObjectWrapperTest {
             assertNotNull(action);
             assertEquals(
                     Java8DefaultMethodsBean.OVERRIDDEN_DEFAULT_METHOD_ACTION_RETURN_VALUE,
-                    ((TemplateScalarModel) action.execute(
+                    ((TemplateStringModel) action.execute(
                             CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE))
                             .getAsString());
         }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
index bd6c81d..a66c65b 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
@@ -45,10 +45,10 @@ import java.util.Set;
 import java.util.TimeZone;
 import java.util.TreeSet;
 
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
 import org.apache.freemarker.core.model.impl.RestrictedObjectWrapper;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.outputformat.MarkupOutputFormat;
 import org.apache.freemarker.core.outputformat.OutputFormat;
 import org.apache.freemarker.core.outputformat.UnregisteredOutputFormatException;
@@ -651,24 +651,24 @@ public class ConfigurationTest {
                 .sharedVariables(ImmutableMap.of(
                         "a", "aa",
                         "b", "bb",
-                        "c", new MyScalarModel()
+                        "c", new MyStringModel()
                 ))
                 .build();
 
         assertNull(cfg.getSharedVariables().get("noSuchVar"));
         assertNull(cfg.getWrappedSharedVariable("noSuchVar"));
 
-        TemplateScalarModel aVal = (TemplateScalarModel) cfg.getWrappedSharedVariable("a");
+        TemplateStringModel aVal = (TemplateStringModel) cfg.getWrappedSharedVariable("a");
         assertEquals("aa", aVal.getAsString());
-        assertEquals(SimpleScalar.class, aVal.getClass());
+        assertEquals(SimpleString.class, aVal.getClass());
 
-        TemplateScalarModel bVal = (TemplateScalarModel) cfg.getWrappedSharedVariable("b");
+        TemplateStringModel bVal = (TemplateStringModel) cfg.getWrappedSharedVariable("b");
         assertEquals("bb", bVal.getAsString());
-        assertEquals(SimpleScalar.class, bVal.getClass());
+        assertEquals(SimpleString.class, bVal.getClass());
 
-        TemplateScalarModel cVal = (TemplateScalarModel) cfg.getWrappedSharedVariable("c");
+        TemplateStringModel cVal = (TemplateStringModel) cfg.getWrappedSharedVariable("c");
         assertEquals("my", cVal.getAsString());
-        assertEquals(MyScalarModel.class, cfg.getWrappedSharedVariable("c").getClass());
+        assertEquals(MyStringModel.class, cfg.getWrappedSharedVariable("c").getClass());
 
         // See if it actually works in templates:
         StringWriter sw = new StringWriter();
@@ -934,7 +934,7 @@ public class ConfigurationTest {
         }
     }
 
-    private static class MyScalarModel implements TemplateScalarModel {
+    private static class MyStringModel implements TemplateStringModel {
 
         @Override
         public String getAsString() throws TemplateException {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java
index 471e13d..a24dacd 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java
@@ -30,7 +30,7 @@ import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateDirectiveModel;
 import org.apache.freemarker.core.model.TemplateHashModelEx2;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.util.CommonSupplier;
 import org.apache.freemarker.test.TemplateTest;
 import org.junit.Test;
@@ -233,7 +233,7 @@ public class DirectiveCallPlaceTest extends TemplateTest {
             TemplateHashModelEx2 varargs = (TemplateHashModelEx2) args[ARGS_LAYOUT.getNamedVarargsArgumentIndex()];
             if (varargs.size() > 0) {
                 out.write("(p=");
-                out.write(((TemplateScalarModel) varargs.get("p")).getAsString());
+                out.write(((TemplateStringModel) varargs.get("p")).getAsString());
                 out.write(")");
             }
             if (callPlace.hasNestedContent()) {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java
index d79e37a..06e63ac 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java
@@ -28,7 +28,7 @@ import java.util.Collections;
 import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateDirectiveModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader;
 import org.apache.freemarker.test.TemplateTest;
 import org.apache.freemarker.test.TestConfigurationBuilder;
@@ -203,7 +203,7 @@ public class EnvironmentGetTemplateVariantsTest extends TemplateTest {
                 final String r = "<ct=" + env.getCurrentTemplate().getLookupName() + " mt="
                         + env.getMainTemplate().getLookupName() + ">";
                 out.write(r);
-                env.setGlobalVariable("lastTNamesResult", new SimpleScalar(r));
+                env.setGlobalVariable("lastTNamesResult", new SimpleString(r));
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java
index 0548e42..1ee9f45 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java
@@ -34,7 +34,7 @@ import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
 import org.apache.freemarker.core.model.impl.SimpleDate;
 import org.apache.freemarker.core.model.impl.SimpleHash;
 import org.apache.freemarker.core.model.impl.SimpleNumber;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.model.impl.SimpleSequence;
 import org.apache.freemarker.test.TemplateTest;
 import org.apache.freemarker.test.TestConfigurationBuilder;
@@ -80,7 +80,7 @@ public class NewBiObjectWrapperRestrictionTest extends TemplateTest {
             }
 
             if (obj instanceof String) {
-                return new SimpleScalar((String) obj);
+                return new SimpleString((String) obj);
             }
             if (obj instanceof Number) {
                 return new SimpleNumber((Number) obj);

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java
index faee8c0..164ce7d 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java
@@ -33,7 +33,7 @@ import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.Version;
 import org.apache.freemarker.core.model.TemplateDateModel;
 import org.apache.freemarker.core.model.TemplateHashModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.test.TestUtils;
 
 import junit.framework.TestCase;
@@ -601,7 +601,7 @@ public class DefaultObjectWrapperSingletonsTest extends TestCase {
 
     private boolean exposesFields(DefaultObjectWrapper ow) throws TemplateException {
         TemplateHashModel thm = (TemplateHashModel) ow.wrap(new C());
-        TemplateScalarModel r = (TemplateScalarModel) thm.get("foo");
+        TemplateStringModel r = (TemplateStringModel) thm.get("foo");
         if (r == null) return false;
         assertEquals("FOO", r.getAsString());
         return true;
@@ -609,7 +609,7 @@ public class DefaultObjectWrapperSingletonsTest extends TestCase {
 
     private boolean exposesProperties(DefaultObjectWrapper ow) throws TemplateException {
         TemplateHashModel thm = (TemplateHashModel) ow.wrap(new C());
-        TemplateScalarModel r = (TemplateScalarModel) thm.get("bar");
+        TemplateStringModel r = (TemplateStringModel) thm.get("bar");
         if (r == null) return false;
         assertEquals("BAR", r.getAsString());
         return true;

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
index e307cb2..eb1c3d9 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
@@ -58,7 +58,7 @@ import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelIterator;
 import org.apache.freemarker.core.model.TemplateModelWithAPISupport;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.WrapperTemplateModel;
 import org.apache.freemarker.core.model.WrappingTemplateModel;
@@ -177,7 +177,7 @@ public class DefaultObjectWrapperTest {
         assertEquals(11, ow.unwrap(seq.get(0)));
         assertEquals(22, ow.unwrap(seq.get(1)));
         
-        assertTrue(ow.wrap("x") instanceof SimpleScalar);
+        assertTrue(ow.wrap("x") instanceof SimpleString);
         assertTrue(ow.wrap(1.5) instanceof SimpleNumber);
         assertTrue(ow.wrap(new Date()) instanceof SimpleDate);
         assertEquals(TemplateBooleanModel.TRUE, ow.wrap(true));
@@ -186,7 +186,7 @@ public class DefaultObjectWrapperTest {
         assertTrue(ow.wrap(Collections.emptyList()) instanceof DefaultListAdapter);
         assertTrue(ow.wrap(new boolean[] { }) instanceof DefaultArrayAdapter);
         assertTrue(ow.wrap(new HashSet()) instanceof DefaultNonListCollectionAdapter);
-        assertTrue(ow.wrap('c') instanceof TemplateScalarModel); // BeanAndStringModel right now, but should change later
+        assertTrue(ow.wrap('c') instanceof TemplateStringModel); // BeanAndStringModel right now, but should change later
         
         TemplateHashModel bean = (TemplateHashModel) ow.wrap(new TestBean());
         assertEquals(1, ow.unwrap(bean.get("x")));
@@ -261,7 +261,7 @@ public class DefaultObjectWrapperTest {
             assertNull(hash.get("e"));
             assertEquals(1, ((TemplateNumberModel) hash.get("a")).getAsNumber());
             assertNull(hash.get("b"));
-            assertEquals("C", ((TemplateScalarModel) hash.get("c")).getAsString());
+            assertEquals("C", ((TemplateStringModel) hash.get("c")).getAsString());
             assertTrue(hash.get("d") instanceof DefaultListAdapter);
 
             assertCollectionTMEquals(hash.keys(), "a", "b", "c", "d");
@@ -319,7 +319,7 @@ public class DefaultObjectWrapperTest {
             assertNull(seq.get(-1));
             assertEquals(1, ((TemplateNumberModel) seq.get(0)).getAsNumber());
             assertNull(seq.get(1));
-            assertEquals("c", ((TemplateScalarModel) seq.get(2)).getAsString());
+            assertEquals("c", ((TemplateStringModel) seq.get(2)).getAsString());
             assertTrue(seq.get(3) instanceof DefaultArrayAdapter);
             assertNull(seq.get(4));
             
@@ -339,7 +339,7 @@ public class DefaultObjectWrapperTest {
             assertNull(seq.get(-1));
             assertEquals(1, ((TemplateNumberModel) seq.get(0)).getAsNumber());
             assertNull(seq.get(1));
-            assertEquals("c", ((TemplateScalarModel) seq.get(2)).getAsString());
+            assertEquals("c", ((TemplateStringModel) seq.get(2)).getAsString());
             assertNull(seq.get(3));
 
             assertCollectionTMEquals((TemplateCollectionModel) seq, 1, null, "c");
@@ -386,9 +386,9 @@ public class DefaultObjectWrapperTest {
             TemplateSequenceModel seq = (TemplateSequenceModel) OW.wrap(testArray);
             assertEquals(3, seq.size());
             assertNull(seq.get(-1));
-            assertEquals("a", ((TemplateScalarModel) seq.get(0)).getAsString());
+            assertEquals("a", ((TemplateStringModel) seq.get(0)).getAsString());
             assertNull(seq.get(1));
-            assertEquals("c", ((TemplateScalarModel) seq.get(2)).getAsString());
+            assertEquals("c", ((TemplateStringModel) seq.get(2)).getAsString());
             assertNull(seq.get(3));
         }
 
@@ -427,8 +427,8 @@ public class DefaultObjectWrapperTest {
             TemplateSequenceModel seq = (TemplateSequenceModel) OW.wrap(testArray);
             assertEquals(2, seq.size());
             assertNull(seq.get(-1));
-            assertEquals("a", ((TemplateScalarModel) seq.get(0)).getAsString());
-            assertEquals("b", ((TemplateScalarModel) seq.get(1)).getAsString());
+            assertEquals("a", ((TemplateStringModel) seq.get(0)).getAsString());
+            assertEquals("b", ((TemplateStringModel) seq.get(1)).getAsString());
             assertNull(seq.get(2));
         }
     }
@@ -459,7 +459,7 @@ public class DefaultObjectWrapperTest {
         if (expectedPojoToString != null) {
             JavaMethodModel getToStringM = (JavaMethodModel) testBeanTM.get("toString");
             TemplateModel r = getToStringM.execute(new TemplateModel[] { objTM }, NonTemplateCallPlace.INSTANCE);
-            assertEquals(expectedPojoToString, ((TemplateScalarModel) r).getAsString());
+            assertEquals(expectedPojoToString, ((TemplateStringModel) r).getAsString());
         }
     }
 
@@ -663,9 +663,9 @@ public class DefaultObjectWrapperTest {
         DefaultEnumerationAdapter enumAdapter = (DefaultEnumerationAdapter) wrappedEnumeration;
         TemplateModelIterator iterator = enumAdapter.iterator();
         assertTrue(iterator.hasNext());
-        assertEquals("a", ((TemplateScalarModel) iterator.next()).getAsString());
+        assertEquals("a", ((TemplateStringModel) iterator.next()).getAsString());
         assertTrue(iterator.hasNext());
-        assertEquals("b", ((TemplateScalarModel) iterator.next()).getAsString());
+        assertEquals("b", ((TemplateStringModel) iterator.next()).getAsString());
         assertFalse(iterator.hasNext());
 
         iterator = enumAdapter.iterator();

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java
index a43ee29..cd405e9 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/EnumModelsTest.java
@@ -26,7 +26,7 @@ import org.apache.freemarker.core.NonTemplateCallPlace;
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.util.CallableUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -54,11 +54,11 @@ public class EnumModelsTest {
         }
         
         TemplateModel a = e.get("A");
-        assertTrue(a instanceof TemplateScalarModel);
+        assertTrue(a instanceof TemplateStringModel);
         assertTrue(a instanceof TemplateHashModel);
-        assertEquals(((TemplateScalarModel) a).getAsString(), "ts:A");
+        assertEquals(((TemplateStringModel) a).getAsString(), "ts:A");
         JavaMethodModel nameMethod = (JavaMethodModel) ((TemplateHashModel) a).get("name");
-        assertEquals(((TemplateScalarModel) nameMethod.execute(
+        assertEquals(((TemplateStringModel) nameMethod.execute(
                 CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE)).getAsString(),
                 "A");
         

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java
index e582a87..34a46a6 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/ErrorMessagesTest.java
@@ -29,7 +29,7 @@ import org.apache.freemarker.core.NonTemplateCallPlace;
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.outputformat.impl.HTMLOutputFormat;
 import org.apache.freemarker.core.outputformat.impl.TemplateHTMLOutputModel;
 import org.junit.Test;
@@ -112,8 +112,8 @@ public class ErrorMessagesTest {
         {
             JavaMethodModel m = (JavaMethodModel)thm.get("mOverloaded4");
             Object r = m.execute(new TemplateModel[] { html }, NonTemplateCallPlace.INSTANCE);
-            if (r instanceof TemplateScalarModel) {
-                r = ((TemplateScalarModel) r).getAsString();
+            if (r instanceof TemplateStringModel) {
+                r = ((TemplateStringModel) r).getAsString();
             }
             assertEquals("<p>a", r);
         }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java
index b1cf265..76bddd7 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/FineTuneMethodAppearanceTest.java
@@ -25,7 +25,7 @@ import org.apache.freemarker.core.Configuration;
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -44,9 +44,9 @@ public class FineTuneMethodAppearanceTest {
     
     private void checkIfProperlyWrapped(TemplateModel tm) throws TemplateException {
         TemplateHashModel thm = (TemplateHashModel) tm;
-        assertEquals("v1", ((TemplateScalarModel) thm.get("v1")).getAsString());
-        assertEquals("v2()", ((TemplateScalarModel) thm.get("v2")).getAsString());
-        assertEquals("getV3()", ((TemplateScalarModel) thm.get("v3")).getAsString());
+        assertEquals("v1", ((TemplateStringModel) thm.get("v1")).getAsString());
+        assertEquals("v2()", ((TemplateStringModel) thm.get("v2")).getAsString());
+        assertEquals("getV3()", ((TemplateStringModel) thm.get("v3")).getAsString());
         assertTrue(thm.get("getV3") instanceof JavaMethodModel);
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/RestrictedObjectWrapperTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/RestrictedObjectWrapperTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/RestrictedObjectWrapperTest.java
index 4115cfb..eb9ad4c 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/RestrictedObjectWrapperTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/RestrictedObjectWrapperTest.java
@@ -47,7 +47,7 @@ import org.apache.freemarker.core.model.TemplateDateModel;
 import org.apache.freemarker.core.model.TemplateHashModelEx2;
 import org.apache.freemarker.core.model.TemplateModelWithAPISupport;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.DefaultObjectWrapperTest.TestBean;
 import org.junit.Test;
@@ -70,7 +70,7 @@ public class RestrictedObjectWrapperTest {
 
     @SuppressWarnings("boxing")
     private void testCustomizationCommonPart(RestrictedObjectWrapper ow) throws TemplateException {
-        assertTrue(ow.wrap("x") instanceof SimpleScalar);
+        assertTrue(ow.wrap("x") instanceof SimpleString);
         assertTrue(ow.wrap(1.5) instanceof SimpleNumber);
         assertTrue(ow.wrap(new Date()) instanceof SimpleDate);
         assertEquals(TemplateBooleanModel.TRUE, ow.wrap(true));
@@ -100,7 +100,7 @@ public class RestrictedObjectWrapperTest {
     @Test
     public void testCanWrapBasicTypes() throws ObjectWrappingException {
         RestrictedObjectWrapper sow = new RestrictedObjectWrapper.Builder(Configuration.VERSION_3_0_0).build();
-        assertTrue(sow.wrap("s") instanceof TemplateScalarModel);
+        assertTrue(sow.wrap("s") instanceof TemplateStringModel);
         assertTrue(sow.wrap(1) instanceof TemplateNumberModel);
         assertTrue(sow.wrap(true) instanceof TemplateBooleanModel);
         assertTrue(sow.wrap(new Date()) instanceof TemplateDateModel);

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java
index d561ed4..a5ead62 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/StaticModelsTest.java
@@ -27,7 +27,7 @@ import org.apache.freemarker.core.NonTemplateCallPlace;
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.util.CallableUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -60,12 +60,12 @@ public class StaticModelsTest {
         }
         
         TemplateModel f = s.get("F");
-        assertTrue(f instanceof TemplateScalarModel);
-        assertEquals(((TemplateScalarModel) f).getAsString(), "F OK");
+        assertTrue(f instanceof TemplateStringModel);
+        assertEquals(((TemplateStringModel) f).getAsString(), "F OK");
         
         TemplateModel m = s.get("m");
         assertTrue(m instanceof JavaMethodModel);
-        assertEquals(((TemplateScalarModel) ((JavaMethodModel) m).execute(
+        assertEquals(((TemplateStringModel) ((JavaMethodModel) m).execute(
                 CallableUtils.EMPTY_TEMPLATE_MODEL_ARRAY, NonTemplateCallPlace.INSTANCE)).getAsString(),
                 "m OK");
         

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java
index 6beb834..e7a5caf 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java
@@ -106,7 +106,7 @@ public class CoreTemplateTestSuite extends TemplateTestSuite {
             dataModel.put("unknownDate", new SimpleDate(cal.getTime(), TemplateDateModel.UNKNOWN));
             dataModel.put("javaGMT02", TimeZone.getTimeZone("GMT+02"));
             dataModel.put("javaUTC", TimeZone.getTimeZone("UTC"));
-            dataModel.put("adaptedToStringScalar", new Object() {
+            dataModel.put("adaptedToString", new Object() {
                 @Override
                 public String toString() {
                     return "GMT+02";

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java
index 61b937b..4102057 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java
@@ -29,15 +29,15 @@ import org.apache.freemarker.core.model.TemplateHashModelEx;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateModelIterator;
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 /**
  * Implements all template models that are interesting when calling overloaded Java methods.
  */
 public class AllTemplateModels implements
-        TemplateScalarModel, TemplateNumberModel, TemplateDateModel, TemplateBooleanModel,
+        TemplateStringModel, TemplateNumberModel, TemplateDateModel, TemplateBooleanModel,
         TemplateHashModelEx, TemplateSequenceModel, TemplateCollectionModel {
 
     public static final AllTemplateModels INSTANCE = new AllTemplateModels();
@@ -66,7 +66,7 @@ public class AllTemplateModels implements
     
     @Override
     public TemplateModel get(String key) throws TemplateException {
-        return new SimpleScalar("value for key " + key);
+        return new SimpleString("value for key " + key);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndScalarModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndScalarModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndScalarModel.java
deleted file mode 100644
index 340fe61..0000000
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndScalarModel.java
+++ /dev/null
@@ -1,40 +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 org.apache.freemarker.core.templatesuite.models;
-
-import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
-
-public class BooleanAndScalarModel implements TemplateBooleanModel, TemplateScalarModel {
-
-    public static final BooleanAndScalarModel INSTANCE = new BooleanAndScalarModel();
-
-    @Override
-    public String getAsString() throws TemplateException {
-        return "s";
-    }
-
-    @Override
-    public boolean getAsBoolean() throws TemplateException {
-        return true;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndStringModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndStringModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndStringModel.java
new file mode 100644
index 0000000..d5186e1
--- /dev/null
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndStringModel.java
@@ -0,0 +1,40 @@
+/*
+ * 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 org.apache.freemarker.core.templatesuite.models;
+
+import org.apache.freemarker.core.TemplateException;
+import org.apache.freemarker.core.model.TemplateBooleanModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
+
+public class BooleanAndStringModel implements TemplateBooleanModel, TemplateStringModel {
+
+    public static final BooleanAndStringModel INSTANCE = new BooleanAndStringModel();
+
+    @Override
+    public String getAsString() throws TemplateException {
+        return "s";
+    }
+
+    @Override
+    public boolean getAsBoolean() throws TemplateException {
+        return true;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndStringTemplateModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndStringTemplateModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndStringTemplateModel.java
index f424786..c88cdbb 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndStringTemplateModel.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanAndStringTemplateModel.java
@@ -21,9 +21,9 @@ package org.apache.freemarker.core.templatesuite.models;
 
 import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 
-public class BooleanAndStringTemplateModel implements TemplateBooleanModel, TemplateScalarModel {
+public class BooleanAndStringTemplateModel implements TemplateBooleanModel, TemplateStringModel {
 
     @Override
     public String getAsString() throws TemplateException {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash1.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash1.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash1.java
index a143cbc..14d1f7c 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash1.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/BooleanHash1.java
@@ -22,7 +22,7 @@ package org.apache.freemarker.core.templatesuite.models;
 import org.apache.freemarker.core.model.TemplateBooleanModel;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 /**
  * Tests the impact that the isEmpty() has on template hash models.
@@ -40,11 +40,11 @@ public class BooleanHash1 implements TemplateHashModel {
     @Override
     public TemplateModel get(String key) {
         if ( key.equals( "temp" )) {
-            return new SimpleScalar( "Hello, world." );
+            return new SimpleString( "Hello, world." );
         } else if ( key.equals( "boolean" )) {
             return TemplateBooleanModel.FALSE;
         } else {
-            return new SimpleScalar( "Just another key..." );
+            return new SimpleString( "Just another key..." );
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/ExceptionModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/ExceptionModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/ExceptionModel.java
index 445c95e..ba728b1 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/ExceptionModel.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/ExceptionModel.java
@@ -20,18 +20,13 @@
 package org.apache.freemarker.core.templatesuite.models;
 
 import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 
 /**
  * A template that always throws an exception whenever we call getAsString()
  */
-public class ExceptionModel implements TemplateScalarModel {
+public class ExceptionModel implements TemplateStringModel {
 
-    /**
-     * Returns the scalar's value as a String.
-     *
-     * @return the String value of this scalar.
-     */
     @Override
     public String getAsString () throws TemplateException {
         throw new TemplateException( "Throwing from ExceptionModel!" );

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/HashAndScalarModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/HashAndScalarModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/HashAndScalarModel.java
deleted file mode 100644
index 37f93a5..0000000
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/HashAndScalarModel.java
+++ /dev/null
@@ -1,84 +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 org.apache.freemarker.core.templatesuite.models;
-
-import org.apache.freemarker.core.TemplateException;
-import org.apache.freemarker.core.model.TemplateCollectionModel;
-import org.apache.freemarker.core.model.TemplateHashModelEx;
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateModelIterator;
-import org.apache.freemarker.core.model.TemplateScalarModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
-
-public class HashAndScalarModel implements TemplateHashModelEx, TemplateScalarModel {
-    
-    public static final HashAndScalarModel INSTANCE = new HashAndScalarModel();
-    
-    private final TemplateCollectionModel EMPTY_COLLECTION = new TemplateCollectionModel() {
-
-        @Override
-        public TemplateModelIterator iterator() throws TemplateException {
-            return new TemplateModelIterator() {
-
-                @Override
-                public TemplateModel next() throws TemplateException {
-                    return null;
-                }
-
-                @Override
-                public boolean hasNext() throws TemplateException {
-                    return false;
-                }
-                
-            };
-        }
-    };
-
-    @Override
-    public String getAsString() throws TemplateException {
-        return "scalarValue";
-    }
-
-    @Override
-    public TemplateModel get(String key) throws TemplateException {
-        return new SimpleScalar("mapValue for " + key);
-    }
-
-    @Override
-    public boolean isEmpty() throws TemplateException {
-        return true;
-    }
-
-    @Override
-    public int size() throws TemplateException {
-        return 0;
-    }
-
-    @Override
-    public TemplateCollectionModel keys() throws TemplateException {
-        return EMPTY_COLLECTION;
-    }
-
-    @Override
-    public TemplateCollectionModel values() throws TemplateException {
-        return EMPTY_COLLECTION;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/HashAndStringModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/HashAndStringModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/HashAndStringModel.java
new file mode 100644
index 0000000..63fc193
--- /dev/null
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/HashAndStringModel.java
@@ -0,0 +1,84 @@
+/*
+ * 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 org.apache.freemarker.core.templatesuite.models;
+
+import org.apache.freemarker.core.TemplateException;
+import org.apache.freemarker.core.model.TemplateCollectionModel;
+import org.apache.freemarker.core.model.TemplateHashModelEx;
+import org.apache.freemarker.core.model.TemplateModel;
+import org.apache.freemarker.core.model.TemplateModelIterator;
+import org.apache.freemarker.core.model.TemplateStringModel;
+import org.apache.freemarker.core.model.impl.SimpleString;
+
+public class HashAndStringModel implements TemplateHashModelEx, TemplateStringModel {
+    
+    public static final HashAndStringModel INSTANCE = new HashAndStringModel();
+    
+    private final TemplateCollectionModel EMPTY_COLLECTION = new TemplateCollectionModel() {
+
+        @Override
+        public TemplateModelIterator iterator() throws TemplateException {
+            return new TemplateModelIterator() {
+
+                @Override
+                public TemplateModel next() throws TemplateException {
+                    return null;
+                }
+
+                @Override
+                public boolean hasNext() throws TemplateException {
+                    return false;
+                }
+                
+            };
+        }
+    };
+
+    @Override
+    public String getAsString() throws TemplateException {
+        return "stringValue";
+    }
+
+    @Override
+    public TemplateModel get(String key) throws TemplateException {
+        return new SimpleString("mapValue for " + key);
+    }
+
+    @Override
+    public boolean isEmpty() throws TemplateException {
+        return true;
+    }
+
+    @Override
+    public int size() throws TemplateException {
+        return 0;
+    }
+
+    @Override
+    public TemplateCollectionModel keys() throws TemplateException {
+        return EMPTY_COLLECTION;
+    }
+
+    @Override
+    public TemplateCollectionModel values() throws TemplateException {
+        return EMPTY_COLLECTION;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel1.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel1.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel1.java
index 4a0ac53..5bda604 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel1.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel1.java
@@ -24,18 +24,18 @@ import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.ObjectWrapper;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
 import org.apache.freemarker.core.model.impl.DefaultObjectWrapper;
 import org.apache.freemarker.core.model.impl.SimpleHash;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.model.impl.SimpleSequence;
 
 /**
  * Testcase to see how FreeMarker deals with multiple Template models.
  */
 public class MultiModel1 implements TemplateHashModel,
-        TemplateSequenceModel, TemplateScalarModel {
+        TemplateSequenceModel, TemplateStringModel {
 
     private ObjectWrapper ow = new DefaultObjectWrapper.Builder(Configuration.VERSION_3_0_0).build();
 
@@ -45,7 +45,6 @@ public class MultiModel1 implements TemplateHashModel,
     private TemplateSequenceModel m_cListModel = new SimpleSequence(ow);
     private TemplateHashModel m_cHashModel = new SimpleHash(ow);
 
-    /** Creates new MultiModel1 */
     public MultiModel1() {
         for ( int i = 0; i < 10; i++ ) {
             ((SimpleSequence) m_cListModel).add( "Model1 value: " + Integer.toString( i ));
@@ -54,14 +53,6 @@ public class MultiModel1 implements TemplateHashModel,
         ((SimpleHash) m_cHashModel).put( "nested", new MultiModel3() );
     }
 
-    /**
-     * Gets a <tt>TemplateModel</tt> from the hash.
-     *
-     * @param key the name by which the <tt>TemplateModel</tt>
-     * is identified in the template.
-     * @return the <tt>TemplateModel</tt> referred to by the key,
-     * or null if not found.
-     */
     @Override
     public TemplateModel get(String key) {
         if ( key.equals( "model2" )) {
@@ -69,13 +60,13 @@ public class MultiModel1 implements TemplateHashModel,
         } else if ( key.equals( "modellist" )) {
             return m_cListModel;
         } else if ( key.equals( "selftest" )) {
-            return new SimpleScalar( "Selftest of a hash from MultiModel1" );
+            return new SimpleString( "Selftest of a hash from MultiModel1" );
         } else if ( key.equals( "one" )) {
             return m_cListHashModel1;
         } else if ( key.equals( "two" )) {
             return m_cListHashModel2;
         } else if ( key.equals( "size" )) {
-            return new SimpleScalar( "Nasty!" );
+            return new SimpleString( "Nasty!" );
         } else if ( key.equals( "nesting1" )) {
             return m_cHashModel;
         } else {
@@ -83,27 +74,16 @@ public class MultiModel1 implements TemplateHashModel,
         }
     }
 
-    /**
-     * @return true if this object is empty.
-     */
     @Override
     public boolean isEmpty() {
         return false;
     }
 
-    /**
-     * @return the specified index in the list
-     */
     @Override
     public TemplateModel get(int i) throws TemplateException {
         return m_cListModel.get( i );
     }
 
-    /**
-     * Returns the scalar's value as a String.
-     *
-     * @return the String value of this scalar.
-     */
     @Override
     public String getAsString() {
         return "MultiModel1 as a string!";

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java
index 96e4a7a..1e1c356 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel2.java
@@ -26,13 +26,13 @@ import org.apache.freemarker.core.util.CallableUtils;
 import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.TemplateStringModel;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 /**
  * Testcase to see how FreeMarker deals with multiple Template models.
  */
-public class MultiModel2 implements TemplateScalarModel, TemplateFunctionModel {
+public class MultiModel2 implements TemplateStringModel, TemplateFunctionModel {
 
     @Override
     public String getAsString() {
@@ -47,7 +47,7 @@ public class MultiModel2 implements TemplateScalarModel, TemplateFunctionModel {
             aResults.append("<br />");
         }
 
-        return new SimpleScalar( aResults.toString() );
+        return new SimpleString( aResults.toString() );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel3.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel3.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel3.java
index b84150c..4048f73 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel3.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel3.java
@@ -21,46 +21,30 @@ package org.apache.freemarker.core.templatesuite.models;
 
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.TemplateStringModel;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 /**
  * Testcase to see how FreeMarker deals with multiple Template models.
  */
-public class MultiModel3 implements TemplateScalarModel, TemplateHashModel {
+public class MultiModel3 implements TemplateStringModel, TemplateHashModel {
 
-    /**
-     * Returns the scalar's value as a String.
-     *
-     * @return the String value of this scalar.
-     */
     @Override
     public String getAsString() {
         return "Model3 is alive!";
     }
 
-    /**
-     * @return true if this object is empty.
-     */
     @Override
     public boolean isEmpty() {
         return false;
     }
 
-    /**
-     * Gets a <tt>TemplateModel</tt> from the hash.
-     *
-     * @param key the name by which the <tt>TemplateModel</tt>
-     * is identified in the template.
-     * @return the <tt>TemplateModel</tt> referred to by the key,
-     * or null if not found.
-     */
     @Override
     public TemplateModel get(String key) {
         if ( key.equals( "selftest" )) {
-            return new SimpleScalar( "Selftest from MultiModel3!" );
+            return new SimpleString( "Selftest from MultiModel3!" );
         } else if ( key.equals( "message" )) {
-            return new SimpleScalar( "Hello world from MultiModel3!" );
+            return new SimpleString( "Hello world from MultiModel3!" );
         } else {
             return null;
         }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel4.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel4.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel4.java
index 30118d0..f0b516a 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel4.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel4.java
@@ -24,7 +24,7 @@ import org.apache.freemarker.core.model.ObjectWrapper;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.model.impl.SimpleSequence;
 
 /**
@@ -38,32 +38,20 @@ public class MultiModel4 implements TemplateSequenceModel, TemplateHashModel {
         this.m_cList = new SimpleSequence(ow);
     }
 
-    /**
-     * @return the specified index in the list
-     */
     @Override
     public TemplateModel get(int i) throws TemplateException {
         return m_cList.get( i );
     }
 
-    /**
-     * Gets a <tt>TemplateModel</tt> from the hash.
-     *
-     * @param key the name by which the <tt>TemplateModel</tt>
-     * is identified in the template.
-     * @return the <tt>TemplateModel</tt> referred to by the key,
-     * or null if not found.
-     */
     @Override
     public TemplateModel get(String key) {
         if ( key.equals( "size" )) {
-            return new SimpleScalar( "Key size, not the listSize method." );
+            return new SimpleString( "Key size, not the listSize method." );
         } else {
             return null;
         }
     }
 
-
     @Override
     public int size() {
         return m_cList.size();

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel5.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel5.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel5.java
index e7f0a94..02f2cc7 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel5.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/MultiModel5.java
@@ -24,7 +24,7 @@ import org.apache.freemarker.core.model.ObjectWrapper;
 import org.apache.freemarker.core.model.TemplateHashModel;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.model.impl.SimpleSequence;
 
 /**
@@ -34,23 +34,16 @@ public class MultiModel5 implements TemplateSequenceModel, TemplateHashModel {
 
     private final SimpleSequence m_cList;
 
-    /** Creates new MultiModel5 */
     public MultiModel5(ObjectWrapper ow) {
         this.m_cList = new SimpleSequence(ow);
-        m_cList.add( new SimpleScalar( "Dummy to make list non-empty" ));
+        m_cList.add( new SimpleString( "Dummy to make list non-empty" ));
     }
 
-    /**
-     * @return the specified index in the list
-     */
     @Override
     public TemplateModel get(int i) throws TemplateException {
         return m_cList.get( i );
     }
 
-    /**
-     * @return true if this object is empty.
-     */
     @Override
     public boolean isEmpty() {
         return false;
@@ -61,18 +54,10 @@ public class MultiModel5 implements TemplateSequenceModel, TemplateHashModel {
         return m_cList.size();
     }
 
-    /**
-     * Gets a <tt>TemplateModel</tt> from the hash.
-     *
-     * @param key the name by which the <tt>TemplateModel</tt>
-     * is identified in the template.
-     * @return the <tt>TemplateModel</tt> referred to by the key,
-     * or null if not found.
-     */
     @Override
     public TemplateModel get(String key) {
         if ( key.equals( "empty" )) {
-            return new SimpleScalar( "Dummy hash value, for test purposes." );
+            return new SimpleString( "Dummy hash value, for test purposes." );
         } else {
             return null;
         }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel.java
index 98ba89f..dcad29d 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel.java
@@ -19,14 +19,14 @@
 
 package org.apache.freemarker.core.templatesuite.models;
 
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 
 /**
  * Testcase to see how FreeMarker's ?new built-in deals with constructors.
  */
 public class NewTestModel
 implements
-    TemplateScalarModel {
+        TemplateStringModel {
     private final String string;
     
     public NewTestModel() {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel2.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel2.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel2.java
index f715d5c..605e884 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel2.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NewTestModel2.java
@@ -19,14 +19,14 @@
 
 package org.apache.freemarker.core.templatesuite.models;
 
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 
 /**
  * Testcase to see how FreeMarker's ?new built-in deals with constructors.
  */
 public class NewTestModel2
 implements
-    TemplateScalarModel {
+        TemplateStringModel {
     private final String string;
     
     public NewTestModel2() {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NumberAndStringModel.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NumberAndStringModel.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NumberAndStringModel.java
index aae9abd..e3e403e 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NumberAndStringModel.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/NumberAndStringModel.java
@@ -20,10 +20,10 @@
 package org.apache.freemarker.core.templatesuite.models;
 
 import org.apache.freemarker.core.model.TemplateNumberModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 
 public class NumberAndStringModel implements TemplateNumberModel,
-		TemplateScalarModel {
+        TemplateStringModel {
 	
 	private final String s;
 	

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedConstructor.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedConstructor.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedConstructor.java
index c442cfb..eaf2e64 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedConstructor.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedConstructor.java
@@ -19,9 +19,9 @@
 
 package org.apache.freemarker.core.templatesuite.models;
 
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 
-public class OverloadedConstructor implements TemplateScalarModel {
+public class OverloadedConstructor implements TemplateStringModel {
     
     String value;
     

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java
index 4e12135..70247e7 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/OverloadedMethods2.java
@@ -969,12 +969,12 @@ public class OverloadedMethods2 {
         return new Object[] { "a", "b" };
     }
     
-    public TemplateModel getHashAndScalarModel() {
-        return HashAndScalarModel.INSTANCE;
+    public TemplateModel getHashAndStringModel() {
+        return HashAndStringModel.INSTANCE;
     }
 
-    public TemplateModel getBooleanAndScalarModel() {
-        return BooleanAndScalarModel.INSTANCE;
+    public TemplateModel getBooleanAndStringModel() {
+        return BooleanAndStringModel.INSTANCE;
     }
     
     public TemplateModel getAllModels() {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestFunction.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestFunction.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestFunction.java
index 0f6f579..32c5885 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestFunction.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/SimpleTestFunction.java
@@ -25,7 +25,7 @@ import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 /**
  * A simple method model used as a test bed.
@@ -34,7 +34,7 @@ public class SimpleTestFunction implements TemplateFunctionModel {
 
     @Override
     public TemplateModel execute(TemplateModel[] args, CallPlace callPlace, Environment env) throws TemplateException {
-        return new SimpleScalar("Argument value is: " + args[0]);
+        return new SimpleString("Argument value is: " + args[0]);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestBoolean.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestBoolean.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestBoolean.java
index 8339d59..d3ffcdb 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestBoolean.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/TestBoolean.java
@@ -1,9 +1,9 @@
 package org.apache.freemarker.core.templatesuite.models;
 
 import org.apache.freemarker.core.model.TemplateBooleanModel;
-import org.apache.freemarker.core.model.TemplateScalarModel;
+import org.apache.freemarker.core.model.TemplateStringModel;
 
-public class TestBoolean implements TemplateBooleanModel, TemplateScalarModel {
+public class TestBoolean implements TemplateBooleanModel, TemplateStringModel {
     @Override
     public boolean getAsBoolean() {
         return true;

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java
index e6ad111..b758149 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/AllFeaturesFunction.java
@@ -29,7 +29,7 @@ import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateHashModelEx2;
 import org.apache.freemarker.core.model.TemplateModel;
 import org.apache.freemarker.core.model.TemplateSequenceModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 import org.apache.freemarker.core.util.StringToIndexMap;
 
 public class AllFeaturesFunction extends TestTemplateCallableModel implements TemplateFunctionModel {
@@ -84,7 +84,7 @@ public class AllFeaturesFunction extends TestTemplateCallableModel implements Te
         printParam("nVarargs", nOthers, sb);
         sb.append(")");
 
-        return new SimpleScalar(sb.toString());
+        return new SimpleString(sb.toString());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/NamedVarargsOnlyFunction.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/NamedVarargsOnlyFunction.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/NamedVarargsOnlyFunction.java
index 8413647..307bc08 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/NamedVarargsOnlyFunction.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/NamedVarargsOnlyFunction.java
@@ -25,7 +25,7 @@ import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 public class NamedVarargsOnlyFunction extends TestTemplateCallableModel implements TemplateFunctionModel {
 
@@ -50,7 +50,7 @@ public class NamedVarargsOnlyFunction extends TestTemplateCallableModel implemen
         printParam("nVarargs", args[NAMED_VARARGS_ARG_IDX], sb, true);
         sb.append(")");
 
-        return new SimpleScalar(sb.toString());
+        return new SimpleString(sb.toString());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/999afd28/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PositionalVarargsOnlyFunction.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PositionalVarargsOnlyFunction.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PositionalVarargsOnlyFunction.java
index 7c8040d..45f727e 100644
--- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PositionalVarargsOnlyFunction.java
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/userpkg/PositionalVarargsOnlyFunction.java
@@ -25,7 +25,7 @@ import org.apache.freemarker.core.TemplateException;
 import org.apache.freemarker.core.model.ArgumentArrayLayout;
 import org.apache.freemarker.core.model.TemplateFunctionModel;
 import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.impl.SimpleScalar;
+import org.apache.freemarker.core.model.impl.SimpleString;
 
 public class PositionalVarargsOnlyFunction extends TestTemplateCallableModel implements TemplateFunctionModel {
 
@@ -47,7 +47,7 @@ public class PositionalVarargsOnlyFunction extends TestTemplateCallableModel imp
         printParam("pVarargs", args[ARGS_LAYOUT.getPositionalVarargsArgumentIndex()], sb, true);
         sb.append(")");
 
-        return new SimpleScalar(sb.toString());
+        return new SimpleString(sb.toString());
     }
 
     @Override