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