You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/03/15 12:23:49 UTC
[isis] branch master updated: ISIS-1887 pull in java.sql.Timestamp
support from -legacy
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new f39fc20 ISIS-1887 pull in java.sql.Timestamp support from -legacy
f39fc20 is described below
commit f39fc20d9144a7b314de7e99c6b23052eed07ee5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Mar 15 13:23:45 2018 +0100
ISIS-1887 pull in java.sql.Timestamp support from -legacy
refactoring: no longer depending on deprecated Isis time value types
---
.../plugins/ProgrammingModelIsisTimePlugin.java | 3 -
.../facets/value/timestampsql/EpochMillis.java | 40 +++++++++
.../EpochMillisValueSemanticsProviderAbstract.java | 98 ++++++++++++++++++++++
...ampValueFacetUsingSemanticsProviderFactory.java | 0
.../JavaSqlTimeStampValueSemanticsProvider.java | 11 +--
.../dflt/ProgrammingModelFacetsJava5.java | 2 +
6 files changed, 144 insertions(+), 10 deletions(-)
diff --git a/core/metamodel-legacy/src/main/java/org/apache/isis/progmodels/plugins/ProgrammingModelIsisTimePlugin.java b/core/metamodel-legacy/src/main/java/org/apache/isis/progmodels/plugins/ProgrammingModelIsisTimePlugin.java
index e9588ff..a4e3d6d 100644
--- a/core/metamodel-legacy/src/main/java/org/apache/isis/progmodels/plugins/ProgrammingModelIsisTimePlugin.java
+++ b/core/metamodel-legacy/src/main/java/org/apache/isis/progmodels/plugins/ProgrammingModelIsisTimePlugin.java
@@ -4,7 +4,6 @@ import org.apache.isis.core.metamodel.facets.value.date.DateValueFacetUsingSeman
import org.apache.isis.core.metamodel.facets.value.datetime.DateTimeValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.time.TimeValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.timestamp.TimeStampValueFacetUsingSemanticsProviderFactory;
-import org.apache.isis.core.metamodel.facets.value.timestampsql.JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModelPlugin;
public class ProgrammingModelIsisTimePlugin implements ProgrammingModelPlugin {
@@ -17,8 +16,6 @@ public class ProgrammingModelIsisTimePlugin implements ProgrammingModelPlugin {
collector.addFactory(new TimeStampValueFacetUsingSemanticsProviderFactory(), FacetFactoryCategory.VALUE);
collector.addFactory(new TimeValueFacetUsingSemanticsProviderFactory(), FacetFactoryCategory.VALUE);
-
- collector.addFactory(new JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory(), FacetFactoryCategory.VALUE);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/EpochMillis.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/EpochMillis.java
new file mode 100644
index 0000000..0d5b883
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/EpochMillis.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.isis.core.metamodel.facets.value.timestampsql;
+
+import java.util.Date;
+
+class EpochMillis {
+
+ private final long epochMillis;
+
+ public EpochMillis(long epochMillis) {
+ this.epochMillis = epochMillis;
+ }
+
+ public long epochMillis() {
+ return epochMillis;
+ }
+
+ public Date toJavaUtilDate() {
+ return new Date(epochMillis);
+ }
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/EpochMillisValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/EpochMillisValueSemanticsProviderAbstract.java
new file mode 100644
index 0000000..c9d5525
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/EpochMillisValueSemanticsProviderAbstract.java
@@ -0,0 +1,98 @@
+/*
+ * 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.isis.core.metamodel.facets.value.timestampsql;
+
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
+
+import org.apache.isis.core.commons.config.ConfigurationConstants;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+
+abstract class EpochMillisValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
+
+ private static final Object DEFAULT_VALUE = null; // no default
+ private static final int TYPICAL_LENGTH = 25;
+
+ protected static void initFormats(final Map<String, DateFormat> formats) {
+ formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd'T'HHmmssSSS"));
+ formats.put("short", DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG));
+ }
+
+ @SuppressWarnings("unchecked")
+ public EpochMillisValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final ServicesInjector context) {
+ super("timestamp", holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE, context);
+ final String formatRequired = getConfiguration().getString(ConfigurationConstants.ROOT + "value.format.timestamp");
+ if (formatRequired == null) {
+ format = formats().get(defaultFormat());
+ } else {
+ setMask(formatRequired);
+ }
+ }
+
+ @Override
+ protected T add(final T original, final int years, final int months, final int days, final int hours, final int minutes) {
+ return original;
+ }
+
+ @Override
+ protected String defaultFormat() {
+ return "short";
+ }
+
+ @Override
+ public String toString() {
+ return "TimeStampValueSemanticsProvider: " + format;
+ }
+
+ @Override
+ protected DateFormat format() {
+
+ final Locale locale = Locale.getDefault();
+ final TimeZone timeZone = TimeZone.getDefault();
+
+ final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale);
+ dateFormat.setTimeZone(timeZone);
+
+ return dateFormat;
+ }
+
+ protected List<DateFormat> formatsToTry() {
+ final List<DateFormat> formats = new ArrayList<DateFormat>();
+
+ final Locale locale = Locale.getDefault();
+ final TimeZone timeZone = TimeZone.getDefault();
+
+ formats.add(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG, locale));
+ formats.add(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale));
+ formats.add(createDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
+
+ for (final DateFormat format : formats) {
+ format.setTimeZone(timeZone);
+ }
+
+ return formats;
+ }
+}
diff --git a/core/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java
similarity index 100%
rename from core/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java
diff --git a/core/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
similarity index 88%
rename from core/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
index c43e4f4..6f0d3a9 100644
--- a/core/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
@@ -24,25 +24,22 @@ import java.text.DateFormat;
import java.util.Date;
import java.util.Map;
-import com.google.common.collect.Maps;
-
import org.apache.isis.applib.adapters.EncoderDecoder;
import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.internal.collections._Maps;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.parseable.InvalidEntryException;
import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
-
-import org.apache.isis.core.metamodel.facets.value.timestamp.TimeStampValueSemanticsProviderAbstract;
import org.apache.isis.core.metamodel.services.ServicesInjector;
public class JavaSqlTimeStampValueSemanticsProvider
-extends TimeStampValueSemanticsProviderAbstract<java.sql.Timestamp> {
+extends EpochMillisValueSemanticsProviderAbstract<java.sql.Timestamp> {
public static final boolean isAPropertyDefaultFacet() {
return PropertyDefaultFacet.class.isAssignableFrom(JavaSqlTimeStampValueSemanticsProvider.class);
}
- private static Map<String, DateFormat> formats = Maps.newHashMap();
+ private static Map<String, DateFormat> formats = _Maps.newHashMap();
static {
initFormats(formats);
@@ -66,7 +63,7 @@ extends TimeStampValueSemanticsProviderAbstract<java.sql.Timestamp> {
@Override
protected Date dateValue(final Object value) {
- return new Date(((Timestamp) value).getTime());
+ return ((EpochMillis) value).toJavaUtilDate();
}
@Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index 88ae176..6656023 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -160,6 +160,7 @@ import org.apache.isis.core.metamodel.facets.value.shortint.ShortPrimitiveValueF
import org.apache.isis.core.metamodel.facets.value.shortint.ShortWrapperValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.string.StringValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.timesql.JavaSqlTimeValueFacetUsingSemanticsProviderFactory;
+import org.apache.isis.core.metamodel.facets.value.timestampsql.JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.url.URLValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.uuid.UUIDValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.postprocessors.param.ActionCollectionParameterDefaultsAndChoicesPostProcessor;
@@ -372,6 +373,7 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
addFactory(new BigDecimalValueFacetUsingSemanticsProviderFactory());
addFactory(new JavaSqlDateValueFacetUsingSemanticsProviderFactory());
addFactory(new JavaSqlTimeValueFacetUsingSemanticsProviderFactory());
+ addFactory(new JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory());
addFactory(new JavaUtilDateValueFacetUsingSemanticsProviderFactory());
addFactory(new StringValueFacetUsingSemanticsProviderFactory());
addFactory(new URLValueFacetUsingSemanticsProviderFactory());
--
To stop receiving notification emails like this one, please contact
ahuber@apache.org.