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 2015/09/07 00:54:45 UTC

[3/3] incubator-freemarker git commit: Added public Environment methods for getting TemplateDateFormat objects. Other formatting code clean up and JavaDoc comments.

Added public Environment methods for getting TemplateDateFormat objects. Other formatting code clean up and JavaDoc comments.


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

Branch: refs/heads/2.3-gae
Commit: 52dcb977368e9fc1fffdd9c10a5f227b92007852
Parents: 0eccad5
Author: ddekany <dd...@apache.org>
Authored: Mon Sep 7 00:41:50 2015 +0200
Committer: ddekany <dd...@apache.org>
Committed: Mon Sep 7 00:54:15 2015 +0200

----------------------------------------------------------------------
 .../core/BuiltInsForMultipleTypes.java          |   51 +-
 src/main/java/freemarker/core/Environment.java  | 1482 ++++++++++--------
 .../core/ISOTemplateDateFormatFactory.java      |    7 +-
 .../core/JavaTemplateDateFormatFactory.java     |    6 +-
 .../core/TemplateDateFormatFactory.java         |   34 +-
 .../core/XSTemplateDateFormatFactory.java       |    7 +-
 src/main/java/freemarker/core/_CoreAPI.java     |   17 +
 .../freemarker/template/TemplateException.java  |    4 +
 .../java/freemarker/template/_TemplateAPI.java  |    5 +
 src/manual/book.xml                             |   19 +-
 .../java/freemarker/core/DateFormatTest.java    |  108 ++
 ...EpochMillisDivTemplateDateFormatFactory.java |    5 +-
 .../EpochMillisTemplateDateFormatFactory.java   |    5 +-
 ...AndTZSensitiveTemplateDateFormatFactory.java |    5 +-
 .../java/freemarker/core/NumberFormatTest.java  |    2 +-
 15 files changed, 1065 insertions(+), 692 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/52dcb977/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
----------------------------------------------------------------------
diff --git a/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java b/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
index 86b5206..fe22206 100644
--- a/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
+++ b/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
@@ -148,8 +148,12 @@ class BuiltInsForMultipleTypes {
             throws TemplateModelException {
                 this.text = text;
                 this.env = env;
-                // Deliberately creating a snapshot here:
-                this.defaultFormat = env.getTemplateDateFormat(dateType, Date.class, target);
+                try {
+                    this.defaultFormat = env.getTemplateDateFormat(dateType, Date.class, target);
+                } catch (TemplateException e) {
+                    // Must convert TemplateException-s to TemplateModelException-s due to API restriction.
+                    throw _CoreAPI.convertToTemplateModelException(e); 
+                }
             }
             
             public Object exec(List args) throws TemplateModelException {
@@ -158,9 +162,14 @@ class BuiltInsForMultipleTypes {
             }
             
             public TemplateModel get(String pattern) throws TemplateModelException {
-                return new SimpleDate(
-                    parse(env.getTemplateDateFormat(dateType, Date.class, pattern, target)),
-                    dateType);
+                TemplateDateFormat format;
+                try {
+                    format = env.getTemplateDateFormat(pattern, dateType, Date.class, target, dateBI.this);
+                } catch (TemplateException e) {
+                    // Must convert TemplateException-s to TemplateModelException-s due to API restriction.
+                    throw _CoreAPI.convertToTemplateModelException(e); 
+                }
+                return new SimpleDate(parse(format), dateType);
             }
     
             public Date getAsDate() throws TemplateModelException {
@@ -521,10 +530,15 @@ class BuiltInsForMultipleTypes {
                 this.env = env;
                 
                 final int dateType = dateModel.getDateType();
-                this.defaultFormat = dateType == TemplateDateModel.UNKNOWN
-                        ? null  // Lazy unknown type error in getAsString()
-                        : env.getTemplateDateFormat(
-                                dateType, EvalUtil.modelToDate(dateModel, target).getClass(), target);
+                try {
+                    this.defaultFormat = dateType == TemplateDateModel.UNKNOWN
+                            ? null  // Lazy unknown type error in getAsString()
+                            : env.getTemplateDateFormat(
+                                    dateType, EvalUtil.modelToDate(dateModel, target).getClass(), target);
+                } catch (TemplateException e) {
+                    // Must convert TemplateException-s to TemplateModelException-s due to API restriction.
+                    throw _CoreAPI.convertToTemplateModelException(e); 
+                }
             }
     
             public Object exec(List args) throws TemplateModelException {
@@ -534,7 +548,12 @@ class BuiltInsForMultipleTypes {
 
             public TemplateModel get(String key)
             throws TemplateModelException {
-                return new SimpleScalar(env.formatDate(dateModel, key, target));
+                try {
+                    return new SimpleScalar(env.formatDate(dateModel, key, target, stringBI.this));
+                } catch (TemplateException e) {
+                    // Must convert TemplateException-s to TemplateModelException-s due to API restriction.
+                    throw _CoreAPI.convertToTemplateModelException(e); 
+                }
             }
             
             public String getAsString()
@@ -582,8 +601,7 @@ class BuiltInsForMultipleTypes {
                     defaultFormat = env.getTemplateNumberFormat(stringBI.this);
                 } catch (TemplateException e) {
                     // Must convert TemplateException-s to TemplateModelException-s due to API restriction.
-                    throw new _TemplateModelException(
-                            stringBI.this, e.getCause(), env, e.getMessage()); 
+                    throw _CoreAPI.convertToTemplateModelException(e); 
                 }
             }
     
@@ -598,8 +616,7 @@ class BuiltInsForMultipleTypes {
                     format = env.getTemplateNumberFormat(key, stringBI.this);
                 } catch (TemplateException e) {
                     // Must convert TemplateException-s to TemplateModelException-s due to API restriction.
-                    throw new _TemplateModelException(
-                            stringBI.this, e.getCause(), env, e.getMessage()); 
+                    throw _CoreAPI.convertToTemplateModelException(e); 
                 }
                 
                 String result;
@@ -611,8 +628,7 @@ class BuiltInsForMultipleTypes {
                     }
                 } catch (TemplateException e) {
                     // Must convert TemplateException-s to TemplateModelException-s due to API restriction.
-                    throw new _TemplateModelException(
-                            target, e.getCause(), env, e.getMessage()); 
+                    throw _CoreAPI.convertToTemplateModelException(e); 
                 }
                 
                 return new SimpleScalar(result);
@@ -629,8 +645,7 @@ class BuiltInsForMultipleTypes {
                         }
                     } catch (TemplateException e) {
                         // Must convert TemplateException-s to TemplateModelException-s due to API restriction.
-                        throw new _TemplateModelException(
-                                target, e.getCause(), env, e.getMessage()); 
+                        throw _CoreAPI.convertToTemplateModelException(e); 
                     }
                 }
                 return cachedValue;