You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2016/11/22 12:25:07 UTC

[02/14] isis git commit: ISIS-1524: Dates not showing in view model

ISIS-1524: Dates not showing in view model

Added support for java.util.Date to MementoService


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/852c5772
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/852c5772
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/852c5772

Branch: refs/heads/master
Commit: 852c5772ec27004430a35d41b61141ff721ffa84
Parents: 2844a93
Author: mwhesse <mw...@gmail.com>
Authored: Sun Nov 6 14:24:43 2016 +0700
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 22 12:07:10 2016 +0000

----------------------------------------------------------------------
 .../runtime/services/memento/Dom4jUtil.java     | 33 ++++++++++++++++++--
 .../memento/MementoServiceDefaultTest.java      |  3 ++
 2 files changed, 33 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/852c5772/core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/Dom4jUtil.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/Dom4jUtil.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/Dom4jUtil.java
index a22e49b..2f1ad27 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/Dom4jUtil.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/Dom4jUtil.java
@@ -21,6 +21,7 @@ import java.io.StringReader;
 import java.io.StringWriter;
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.util.Date;
 
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
@@ -101,7 +102,7 @@ class Dom4jUtil {
     }
 
     private static String encodeForNulls(final Object value) {
-        return value != null ? value.toString() : NULL_MARKER;
+        return value != null ? Parseable.format(value) : NULL_MARKER;
     }
     private static String decodeForNulls(final String valueStr) {
         return NULL_MARKER.equals(valueStr)? null: valueStr;
@@ -186,6 +187,17 @@ class Dom4jUtil {
                 return (T) new LocalDate(str);
             } 
         },
+        JAVA_UTIL_DATE(Date.class) {
+        	@SuppressWarnings({ "unchecked" })
+            @Override
+        	<T> T parseStr(String str, Class<T> cls) {
+                return (T) new Date(Long.parseLong(str));
+            }
+			@Override
+			<T> String format(Object o, Class<T> cls) {
+				return Long.toString(((Date) o).getTime());
+			}
+        },
         ENUM(Enum.class) {
             @SuppressWarnings({ "unchecked", "rawtypes" })
             @Override
@@ -212,11 +224,13 @@ class Dom4jUtil {
             return classes;
         }
         abstract <T> T parseStr(String str, Class<T> cls);
+        <T> String format(Object o, Class<T> cls) {
+        	return o.toString();
+        }
         
         // //////////////////////////////////////
 
-        @SuppressWarnings("unchecked")
-        static <T> T parse(final String str, final Class<?> cls) {
+        static <T> T parse(final String str, final Class<? extends T> cls) {
             assertSupported(cls);
             for (Parseable sc : values()) {
                 for (Class<?> eachCls: sc.getClasses()) {
@@ -229,6 +243,19 @@ class Dom4jUtil {
             }
             return null;
         }
+        
+        static String format(final Object o) {
+        	if(isSupported(o.getClass())) {
+        		for (Parseable sc : values()) {
+            		for (Class<?> eachCls: sc.getClasses()) {
+            			if(eachCls.isAssignableFrom(o.getClass())) {
+            				return sc.format(o, o.getClass());
+            			}
+            		}
+            	}
+        	}
+        	return o.toString();
+        }
 
         static boolean isSupported(final Class<?> cls) {
             for (Parseable sc : values()) {

http://git-wip-us.apache.org/repos/asf/isis/blob/852c5772/core/runtime/src/test/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefaultTest.java
index 7511b57..90cb912 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefaultTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertThat;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.util.Date;
 
 import org.joda.time.LocalDate;
 import org.junit.Before;
@@ -60,6 +61,7 @@ public class MementoServiceDefaultTest {
         memento.set("someBigInteger", new BigInteger("123456789012345678901234567890"));
         memento.set("someBigDecimal", new BigDecimal("123456789012345678901234567890.123456789"));
         memento.set("someLocalDate", new LocalDate(2013,9,3));
+        memento.set("someJavaUtilDate", new Date(300_000_000));
         
         memento.set("someBookmark", new Bookmark("CUS", "12345"));
         memento.set("someNullValue", null);
@@ -83,6 +85,7 @@ public class MementoServiceDefaultTest {
         assertThat(memento2.get("someBigInteger", BigInteger.class), is(new BigInteger("123456789012345678901234567890")));
         assertThat(memento2.get("someBigDecimal", BigDecimal.class), is(new BigDecimal("123456789012345678901234567890.123456789")));
         assertThat(memento2.get("someLocalDate", LocalDate.class), is(new LocalDate(2013,9,3)));
+        assertThat(memento2.get("someJavaUtilDate", Date.class), is(new Date(300_000_000)));
         assertThat(memento2.get("someBookmark", Bookmark.class), is(new Bookmark("CUS", "12345")));
         
         // a nullValue can be grabbed as any type, will always succeed