You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2016/08/19 12:18:41 UTC
[07/25] zest-java git commit: ZEST-124 - Replaced Joda Time API with
Java Time API,
and I also removed the java.util.Date support and all uses except where
required when interfacing with other systems.
ZEST-124 - Replaced Joda Time API with Java Time API, and I also removed the java.util.Date support and all uses except where required when interfacing with other systems.
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/49bab608
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/49bab608
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/49bab608
Branch: refs/heads/ValueSerializationCleaning
Commit: 49bab608265a1d618b8391513881f34eaf8b5c0a
Parents: 3b07170
Author: Niclas Hedhman <ni...@hedhman.org>
Authored: Sun Jun 12 14:23:23 2016 +0800
Committer: Niclas Hedhman <ni...@hedhman.org>
Committed: Sun Jun 12 22:51:04 2016 +0800
----------------------------------------------------------------------
build.gradle | 1 -
core/api/build.gradle | 1 -
.../zest/api/composite/PropertyMapper.java | 96 +++-
.../java/org/apache/zest/api/util/Dates.java | 104 -----
.../runtime/property/PropertyEqualityTest.java | 67 +--
.../apache/zest/runtime/query/model/Person.java | 4 +-
.../org/apache/zest/spi/entity/EntityState.java | 1 +
.../entitystore/helpers/DefaultEntityState.java | 8 +-
.../spi/value/ValueDeserializerAdapter.java | 29 +-
.../zest/spi/value/ValueSerializerAdapter.java | 43 +-
.../test/entity/AbstractEntityStoreTest.java | 48 +-
.../zest/test/indexing/AbstractQueryTest.java | 97 ++--
.../org/apache/zest/test/indexing/TestData.java | 24 +-
.../apache/zest/test/indexing/model/Person.java | 12 +-
.../test/value/AbstractJsonDateFormatTest.java | 108 ++++-
.../AbstractPlainValueSerializationTest.java | 43 +-
...AbstractValueCompositeSerializationTest.java | 50 +--
def.xml | 334 ++++++++++++++
.../rdf/query/internal/RdfQueryParserImpl.java | 21 +-
.../solr/internal/SolrEntityIndexerMixin.java | 3 +-
.../index/sql/support/common/QNameInfo.java | 18 +-
.../postgresql/PostgreSQLTypeHelper.java | 9 +-
.../support/skeletons/AbstractSQLStartup.java | 26 +-
.../jackson/JacksonValueDeserializer.java | 4 +-
libraries.gradle | 2 -
.../apache/zest/library/alarm/AlarmEvent.java | 4 +-
.../apache/zest/library/alarm/AlarmStatus.java | 6 +-
.../apache/zest/library/alarm/AlarmSystem.java | 4 +-
.../alarm/ExtendedAlarmModelService.java | 6 +-
.../library/alarm/SimpleAlarmModelService.java | 6 +-
.../alarm/StandardAlarmModelService.java | 6 +-
.../library/alarm/ExtendedAlarmModelTest.java | 4 +-
.../library/alarm/SimpleAlarmModelTest.java | 4 +-
.../library/alarm/StandardAlarmModelTest.java | 4 +-
.../zest/library/appbrowser/AppBrowserTest.java | 1 -
.../library/circuitbreaker/CircuitBreaker.java | 26 +-
.../circuitbreaker/jmx/CircuitBreakerJMX.java | 11 +-
.../conversion/values/EntityToValueTest.java | 9 +-
.../library/conversion/values/TestModel.java | 34 +-
.../conversion/values/ValueToEntityTest.java | 4 +-
.../rest/server/DomainEventSourceResource.java | 16 +-
.../application/api/ApplicationEvent.java | 4 +-
.../factory/ApplicationEventFactoryService.java | 5 +-
.../replay/ApplicationEventPlayerService.java | 12 +-
.../source/helper/ApplicationEvents.java | 53 +--
.../domain/api/UnitOfWorkDomainEventsValue.java | 3 +-
.../factory/UnitOfWorkNotificationConcern.java | 3 +-
.../domain/replay/DomainEventPlayerService.java | 109 +++--
.../domain/source/helper/Events.java | 12 -
.../domain/source/helper/EventRouterTest.java | 5 +-
.../domain/source/helper/EventsTest.java | 5 +-
.../source/helper/UnitOfWorkRouterTest.java | 5 +-
.../rdf/entity/EntityTypeSerializer.java | 28 +-
.../zest/library/rest/client/ClientCache.java | 209 +++++----
.../responsereader/TableResponseReader.java | 22 +-
.../library/rest/common/table/TableBuilder.java | 442 ++++++++++---------
.../rest/server/api/ResourceValidity.java | 40 +-
.../requestreader/DefaultRequestReader.java | 37 +-
.../responsewriter/TableResponseWriter.java | 13 +-
.../zest/library/rest/admin/EntityResource.java | 11 +-
.../zest/library/rest/admin/RestTest.java | 3 +-
libraries/scheduler/dev-status.xml | 2 +-
.../zest/library/scheduler/CronSchedule.java | 13 +-
.../zest/library/scheduler/OnceSchedule.java | 9 +-
.../apache/zest/library/scheduler/Schedule.java | 8 +-
.../zest/library/scheduler/ScheduleFactory.java | 7 +-
.../zest/library/scheduler/Scheduler.java | 6 +-
.../defaults/DefaultScheduleFactoryMixin.java | 10 +-
.../library/scheduler/internal/Execution.java | 32 +-
.../scheduler/internal/ScheduleTime.java | 9 +-
.../scheduler/internal/SchedulerMixin.java | 27 +-
.../library/scheduler/timeline/Timeline.java | 3 +-
.../timeline/TimelineForScheduleConcern.java | 3 +-
.../scheduler/timeline/TimelineRecord.java | 3 +-
.../timeline/TimelineScheduleMixin.java | 27 +-
.../timeline/TimelineSchedulerServiceMixin.java | 3 +-
.../library/scheduler/CronScheduleTest.java | 12 +-
.../zest/library/scheduler/SchedulerTest.java | 20 +-
.../manual/recipes/createEntity/Accident.java | 6 +-
.../dcicargo/pathfinder_a/api/TransitEdge.java | 14 +-
.../internal/GraphTraversalServiceImpl.java | 18 +-
.../bootstrap/DCISampleApplication_a.java | 12 +-
.../sample_a/bootstrap/sampledata/BaseData.java | 23 +-
.../bootstrap/sampledata/BaseDataService.java | 98 ++--
.../bootstrap/sampledata/SampleDataService.java | 49 +-
.../communication/query/TrackingQueries.java | 2 +-
.../query/dto/HandlingEventDTO.java | 4 +-
.../web/booking/BookNewCargoPage.java | 8 +-
.../web/booking/CargoDetailsPage.java | 13 +-
.../web/booking/CargoListPage.java | 19 +-
.../communication/web/booking/RoutePanel.java | 8 +-
.../web/handling/RegisterHandlingEventPage.java | 14 +-
.../web/tracking/HandlingHistoryPanel.java | 3 +-
.../web/tracking/NextHandlingEventPanel.java | 5 +-
.../web/tracking/TrackCargoPage.java | 17 +-
.../context/shipping/booking/BookNewCargo.java | 20 +-
.../shipping/booking/BuildDeliverySnapshot.java | 45 +-
.../handling/RegisterHandlingEvent.java | 32 +-
.../context/support/ApplicationEvents.java | 12 +-
.../context/support/FoundNoRoutesException.java | 8 +-
.../RegisterHandlingEventAttemptDTO.java | 6 +-
.../context/support/RoutingService.java | 7 +-
.../data/shipping/cargo/RouteSpecification.java | 6 +-
.../data/shipping/delivery/Delivery.java | 7 +-
.../delivery/ExpectedHandlingEvent.java | 4 +-
.../data/shipping/handling/HandlingEvent.java | 6 +-
.../data/shipping/handling/HandlingEvents.java | 14 +-
.../data/shipping/itinerary/Itinerary.java | 26 +-
.../sample_a/data/shipping/itinerary/Leg.java | 7 +-
.../data/shipping/voyage/CarrierMovement.java | 6 +-
.../wicket/form/DateTextFieldWithPicker.java | 33 +-
.../wicket/prevnext/PrevNext.java | 5 +-
.../web/booking/CargoDetailsPage.html | 4 +-
.../communication/web/booking/RoutePanel.html | 4 +-
.../shipping/booking/BookNewCargoTest.java | 61 ++-
.../booking/BuildDeliverySnapshotTest.java | 135 +++---
.../handling/RegisterHandlingEventTest.java | 54 +--
.../pathfinder_b/api/GraphTraversalService.java | 4 +-
.../dcicargo/pathfinder_b/api/TransitEdge.java | 24 +-
.../dcicargo/pathfinder_b/api/TransitPath.java | 5 +-
.../pathfinder_b/internal/GraphDAO.java | 30 +-
.../internal/GraphTraversalServiceImpl.java | 12 +-
.../bootstrap/DCISampleApplication_b.java | 4 +-
.../sample_b/bootstrap/sampledata/BaseData.java | 44 +-
.../bootstrap/sampledata/SampleDataService.java | 54 +--
.../communication/query/TrackingQueries.java | 2 +-
.../query/dto/HandlingEventDTO.java | 4 +-
.../web/booking/BookNewCargoPage.java | 7 +-
.../web/booking/CargoDetailsPage.java | 14 +-
.../web/booking/CargoListPage.java | 12 +-
.../communication/web/booking/RoutePanel.java | 10 +-
.../IncidentLoggingApplicationMockupPage.java | 16 +-
.../web/tracking/HandlingHistoryPanel.java | 10 +-
.../web/tracking/NextHandlingEventPanel.java | 5 +-
.../web/tracking/TrackCargoPage.java | 7 +-
.../interaction/booking/BookNewCargo.java | 13 +-
.../booking/routing/AssignCargoToRoute.java | 43 +-
.../DeriveUpdatedRouteSpecification.java | 14 +-
.../inspection/event/InspectArrivedCargo.java | 24 +-
.../inspection/event/InspectCargoInCustoms.java | 4 +-
.../inspection/event/InspectClaimedCargo.java | 8 +-
.../inspection/event/InspectLoadedCargo.java | 49 +-
.../inspection/event/InspectReceivedCargo.java | 30 +-
.../inspection/event/InspectUnhandledCargo.java | 6 +-
.../inspection/event/InspectUnloadedCargo.java | 28 +-
.../parsing/ParseHandlingEventData.java | 17 +-
.../parsing/dto/ParsedHandlingEventData.java | 27 +-
.../registration/RegisterHandlingEvent.java | 4 +-
.../CannotRegisterHandlingEventException.java | 11 +-
.../exception/ChronologicalException.java | 6 +-
.../context/service/routing/RoutingService.java | 11 +-
.../exception/FoundNoRoutesException.java | 8 +-
.../data/factory/HandlingEventFactory.java | 14 +-
.../RouteSpecificationFactoryService.java | 23 +-
.../structure/cargo/RouteSpecification.java | 31 +-
.../data/structure/delivery/Delivery.java | 7 +-
.../structure/delivery/NextHandlingEvent.java | 4 +-
.../data/structure/handling/HandlingEvent.java | 27 +-
.../data/structure/itinerary/Itinerary.java | 26 +-
.../sample_b/data/structure/itinerary/Leg.java | 6 +-
.../data/structure/voyage/CarrierMovement.java | 6 +-
.../sample_b/data/structure/voyage/Voyage.java | 5 +-
.../wicket/form/DateTextFieldWithPicker.java | 31 +-
.../web/booking/CargoDetailsPage.html | 4 +-
.../communication/web/booking/RoutePanel.html | 4 +-
.../bootstrap/test/TestApplication.java | 112 ++---
.../booking/routing/AssignCargoToRouteTest.java | 6 +-
.../event/InspectArrivedCargoTest.java | 4 +-
.../event/InspectCargoInCustomsTest.java | 4 +-
.../event/InspectClaimedCargoTest.java | 8 +-
.../event/InspectLoadedCargoTest.java | 6 +-
.../event/InspectReceivedCargoTest.java | 2 +-
.../event/InspectUnhandledCargoTest.java | 4 +-
.../event/InspectUnloadedCargoTest.java | 6 +-
.../parsing/ParseHandlingEventDataTest.java | 22 +-
.../registration/RegisterHandlingEventTest.java | 8 +-
.../sample/forum/context/view/ViewPost.java | 20 +-
.../zest/sample/forum/data/entity/Post.java | 4 +-
.../zest/sample/rental/domain/Booking.java | 6 +-
.../apache/zest/sample/rental/domain/Car.java | 6 +-
.../zest/sample/rental/domain/Period.java | 6 +-
.../zest/sample/rental/domain/RentalShop.java | 33 +-
.../sample/rental/domain/dev/InitialData.java | 71 ++-
.../apache/zest/sample/rental/web/MainPage.java | 8 +-
tools/shell/src/dist/bin/zest-boot | 2 +
.../demo/thirtyminutes/ThirtyMinutesDocs.java | 14 +-
186 files changed, 2471 insertions(+), 1964 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
index 67f1ad9..0591ba7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -164,7 +164,6 @@ allprojects {
options.noTimestamp = true
options.links = [
'http://docs.oracle.com/javase/7/docs/api/',
- 'http://www.joda.org/joda-time/apidocs/',
'http://www.json.org/javadoc/',
'http://junit.org/javadoc/latest/'
]
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/api/build.gradle
----------------------------------------------------------------------
diff --git a/core/api/build.gradle b/core/api/build.gradle
index 595b47d..f9e42b8 100644
--- a/core/api/build.gradle
+++ b/core/api/build.gradle
@@ -23,7 +23,6 @@ jar { manifest { name = "Apache Zest\u2122 Core API"}}
dependencies {
compile project( ':org.apache.zest.core:org.apache.zest.core.io' )
- compile libraries.jodatime
testCompile project( ':org.apache.zest.core:org.apache.zest.core.testsupport' )
testCompile project( ':org.apache.zest.libraries:org.apache.zest.library.constraints' )
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/api/src/main/java/org/apache/zest/api/composite/PropertyMapper.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/zest/api/composite/PropertyMapper.java b/core/api/src/main/java/org/apache/zest/api/composite/PropertyMapper.java
index e23683b..63911ac 100644
--- a/core/api/src/main/java/org/apache/zest/api/composite/PropertyMapper.java
+++ b/core/api/src/main/java/org/apache/zest/api/composite/PropertyMapper.java
@@ -28,9 +28,15 @@ import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.OffsetDateTime;
+import java.time.Period;
+import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -41,7 +47,6 @@ import org.apache.zest.api.ZestAPI;
import org.apache.zest.api.property.GenericPropertyInfo;
import org.apache.zest.api.property.Property;
import org.apache.zest.api.util.Classes;
-import org.apache.zest.api.util.Dates;
import org.apache.zest.api.value.ValueComposite;
/**
@@ -63,7 +68,13 @@ public final class PropertyMapper
STRATEGY.put( Character.class, new CharMapper() );
STRATEGY.put( Float.class, new FloatMapper() );
STRATEGY.put( Double.class, new DoubleMapper() );
- STRATEGY.put( Date.class, new DateMapper() );
+ STRATEGY.put( LocalDate.class, new LocalDateMapper() );
+ STRATEGY.put( LocalDateTime.class, new LocalDateTimeMapper() );
+ STRATEGY.put( ZonedDateTime.class, new ZonedDateTimeMapper() );
+ STRATEGY.put( OffsetDateTime.class, new OffsetDateTimeMapper() );
+ STRATEGY.put( Instant.class, new InstantMapper() );
+ STRATEGY.put( Duration.class, new DurationMapper() );
+ STRATEGY.put( Period.class, new PeriodMapper() );
STRATEGY.put( Boolean.class, new BooleanMapper() );
STRATEGY.put( BigDecimal.class, new BigDecimalMapper() );
STRATEGY.put( BigInteger.class, new BigIntegerMapper() );
@@ -140,7 +151,7 @@ public final class PropertyMapper
{
strategy = STRATEGY.get( type );
}
- if( strategy == null ) // If null, try with the ValueComposite Mapper...
+ if( strategy == null ) // If null, try with the ValueComposite Mapper...
{
strategy = STRATEGY.get( ValueComposite.class );
}
@@ -446,13 +457,73 @@ public final class PropertyMapper
}
}
- private static class DateMapper
+ private static class LocalDateMapper
implements MappingStrategy
{
@Override
public Object map( Composite composite, Type type, String value )
{
- return Dates.fromString( value.trim() );
+ return LocalDate.parse( value.trim() );
+ }
+ }
+
+ private static class LocalDateTimeMapper
+ implements MappingStrategy
+ {
+ @Override
+ public Object map( Composite composite, Type type, String value )
+ {
+ return LocalDateTime.parse( value.trim() );
+ }
+ }
+
+ private static class ZonedDateTimeMapper
+ implements MappingStrategy
+ {
+ @Override
+ public Object map( Composite composite, Type type, String value )
+ {
+ return ZonedDateTime.parse( value.trim() );
+ }
+ }
+
+ private static class OffsetDateTimeMapper
+ implements MappingStrategy
+ {
+ @Override
+ public Object map( Composite composite, Type type, String value )
+ {
+ return OffsetDateTime.parse( value.trim() );
+ }
+ }
+
+ private static class InstantMapper
+ implements MappingStrategy
+ {
+ @Override
+ public Object map( Composite composite, Type type, String value )
+ {
+ return Instant.parse( value.trim() );
+ }
+ }
+
+ private static class DurationMapper
+ implements MappingStrategy
+ {
+ @Override
+ public Object map( Composite composite, Type type, String value )
+ {
+ return Duration.parse( value.trim() );
+ }
+ }
+
+ private static class PeriodMapper
+ implements MappingStrategy
+ {
+ @Override
+ public Object map( Composite composite, Type type, String value )
+ {
+ return Period.parse( value.trim() );
}
}
@@ -463,7 +534,10 @@ public final class PropertyMapper
@SuppressWarnings( "unchecked" )
public Object map( Composite composite, Type type, String value )
{
- return ZestAPI.FUNCTION_COMPOSITE_INSTANCE_OF.apply( composite ).module().instance().newValueFromSerializedState( (Class<Object>) type, value );
+ return ZestAPI.FUNCTION_COMPOSITE_INSTANCE_OF.apply( composite )
+ .module()
+ .instance()
+ .newValueFromSerializedState( (Class<Object>) type, value );
}
}
@@ -471,7 +545,7 @@ public final class PropertyMapper
implements MappingStrategy
{
@Override
- @SuppressWarnings( {"raw", "unchecked"} )
+ @SuppressWarnings( { "raw", "unchecked" } )
public Object map( final Composite composite, Type type, String value )
{
final Class arrayType = ( (Class) type ).getComponentType();
@@ -502,7 +576,7 @@ public final class PropertyMapper
implements MappingStrategy
{
@Override
- @SuppressWarnings( {"raw", "unchecked"} )
+ @SuppressWarnings( { "raw", "unchecked" } )
public Object map( final Composite composite, Type type, String value )
{
final Type dataType = ( (ParameterizedType) type ).getActualTypeArguments()[ 0 ];
@@ -523,7 +597,7 @@ public final class PropertyMapper
implements MappingStrategy
{
@Override
- @SuppressWarnings( {"raw", "unchecked"} )
+ @SuppressWarnings( { "raw", "unchecked" } )
public Object map( final Composite composite, Type type, String value )
{
final Type dataType = ( (ParameterizedType) type ).getActualTypeArguments()[ 0 ];
@@ -544,7 +618,7 @@ public final class PropertyMapper
implements MappingStrategy
{
@Override
- @SuppressWarnings( {"raw", "unchecked"} )
+ @SuppressWarnings( { "raw", "unchecked" } )
public Object map( final Composite composite, Type generictype, String value )
{
ParameterizedType type = (ParameterizedType) generictype;
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/api/src/main/java/org/apache/zest/api/util/Dates.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/zest/api/util/Dates.java b/core/api/src/main/java/org/apache/zest/api/util/Dates.java
deleted file mode 100644
index edd5392..0000000
--- a/core/api/src/main/java/org/apache/zest/api/util/Dates.java
+++ /dev/null
@@ -1,104 +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.zest.api.util;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.TimeZone;
-
-/**
- * Useful methods for handling Dates.
- */
-public final class Dates
-{
- // Formatters are not thread-safe. Create one per thread
- private static final ThreadLocal<DateFormat> ISO8601 = new ThreadLocal<DateFormat>()
- {
- @Override
- protected DateFormat initialValue()
- {
- return new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSSZ" );
- }
- };
-
- private static final ThreadLocal<DateFormat> ISO8601_UTC = new ThreadLocal<DateFormat>()
- {
- @Override
- protected DateFormat initialValue()
- {
- SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" );
- dateFormat.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
- return dateFormat;
- }
- };
-
- /**
- * @param stringDate a string representing a date as either ISO8601, @millis@ or /Date() formats
- * @return a Date
- */
- public static Date fromString( String stringDate )
- {
- try
- {
- Date date = ISO8601_UTC.get().parse( stringDate );
- return date;
- }
- catch( ParseException e )
- {
- try
- {
- Date date = ISO8601.get().parse( stringDate );
- return date;
- }
- catch( ParseException e1 )
- {
- // @millis@ format
- if( stringDate.startsWith( "@" ) && stringDate.endsWith( "@" ) )
- {
- long time = Long.parseLong( stringDate.substring( 1, stringDate.length() - 1 ) );
- Date date = new Date( time );
- return date;
- }
- else if( stringDate.startsWith( "/Date(" ) && stringDate.endsWith( ")/" ) ) // Microsoft format
- {
- long time = Long.parseLong( stringDate.substring( 6, stringDate.length() - 2 ) );
- Date date = new Date( time );
- return date;
- }
- throw new IllegalStateException( "Illegal date:" + stringDate );
- }
- }
- }
-
- /**
- * @param date a Date
- * @return String representation in ISO8601 UTC
- */
- public static String toUtcString( Date date )
- {
- return ISO8601_UTC.get().format( date );
- }
-
- private Dates()
- {
- }
-}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/runtime/src/test/java/org/apache/zest/runtime/property/PropertyEqualityTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/zest/runtime/property/PropertyEqualityTest.java b/core/runtime/src/test/java/org/apache/zest/runtime/property/PropertyEqualityTest.java
index 2cf33d5..56bf92e 100644
--- a/core/runtime/src/test/java/org/apache/zest/runtime/property/PropertyEqualityTest.java
+++ b/core/runtime/src/test/java/org/apache/zest/runtime/property/PropertyEqualityTest.java
@@ -21,26 +21,25 @@ package org.apache.zest.runtime.property;
import java.math.BigDecimal;
import java.math.BigInteger;
-import java.util.Date;
-import org.apache.zest.api.value.ValueBuilderFactory;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
-import org.junit.Test;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZonedDateTime;
import org.apache.zest.api.common.Optional;
import org.apache.zest.api.property.Property;
import org.apache.zest.api.property.PropertyDescriptor;
-import org.apache.zest.api.structure.Module;
import org.apache.zest.api.value.ValueBuilder;
+import org.apache.zest.api.value.ValueBuilderFactory;
import org.apache.zest.api.value.ValueDescriptor;
import org.apache.zest.bootstrap.AssemblyException;
import org.apache.zest.bootstrap.ModuleAssembly;
import org.apache.zest.test.AbstractZestTest;
+import org.junit.Test;
+import static java.time.ZoneOffset.UTC;
import static org.hamcrest.CoreMatchers.allOf;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.not;
-import static org.joda.time.DateTimeZone.UTC;
import static org.junit.Assert.assertThat;
/**
@@ -60,7 +59,7 @@ public class PropertyEqualityTest
module.values( PrimitivesValue.class, Some.class, AnotherSome.class, Other.class );
}
- public enum AnEnum
+ private enum AnEnum
{
BAZAR, CATHEDRAL
@@ -101,9 +100,9 @@ public class PropertyEqualityTest
Property<BigDecimal> bigDecimalProperty();
- Property<Date> dateProperty();
+ Property<Instant> instantProperty();
- Property<DateTime> dateTimeProperty();
+ Property<ZonedDateTime> dateTimeProperty();
Property<LocalDate> localDateProperty();
@@ -127,7 +126,7 @@ public class PropertyEqualityTest
@Test
public void givenValuesOfTheSameTypeWhenTestingPropertyDescriptorEqualityExpectEquals()
{
- Some some = buildSomeValue(valueBuilderFactory);
+ Some some = buildSomeValue( valueBuilderFactory );
ValueDescriptor someDescriptor = zest.api().valueDescriptorFor( some );
PropertyDescriptor someCharPropDesc = someDescriptor.state().findPropertyModelByName( "characterProperty" );
@@ -152,7 +151,8 @@ public class PropertyEqualityTest
PrimitivesValue primitive = buildPrimitivesValue( valueBuilderFactory );
ValueDescriptor primitiveDescriptor = zest.api().valueDescriptorFor( primitive );
- PropertyDescriptor primitiveCharPropDesc = primitiveDescriptor.state().findPropertyModelByName( "characterProperty" );
+ PropertyDescriptor primitiveCharPropDesc = primitiveDescriptor.state()
+ .findPropertyModelByName( "characterProperty" );
assertThat( "PropertyDescriptors equal",
someCharPropDesc,
@@ -297,7 +297,7 @@ public class PropertyEqualityTest
return primitive;
}
- public static PrimitivesValue buildPrimitivesValueWithDifferentState( ValueBuilderFactory vbf )
+ private static PrimitivesValue buildPrimitivesValueWithDifferentState( ValueBuilderFactory vbf )
{
PrimitivesValue primitive;
{
@@ -317,10 +317,12 @@ public class PropertyEqualityTest
return primitive;
}
- public static Some buildSomeValue(ValueBuilderFactory vbf)
+ public static Some buildSomeValue( ValueBuilderFactory vbf )
{
Some some;
{
+ ZonedDateTime refDate = ZonedDateTime.of( 2020, 3, 4, 13, 24, 35, 0, UTC );
+
ValueBuilder<Some> builder = vbf.newValueBuilder( Some.class );
builder.prototype().characterProperty().set( 'q' );
builder.prototype().stringProperty().set( "foo" );
@@ -334,10 +336,10 @@ public class PropertyEqualityTest
builder.prototype().enumProperty().set( AnEnum.BAZAR );
builder.prototype().bigIntegerProperty().set( new BigInteger( "42" ) );
builder.prototype().bigDecimalProperty().set( new BigDecimal( "42.23" ) );
- builder.prototype().dateProperty().set( new DateTime( "2020-03-04T13:24:35", UTC ).toDate() );
- builder.prototype().dateTimeProperty().set( new DateTime( "2020-03-04T13:24:35", UTC ) );
- builder.prototype().localDateProperty().set( new LocalDate( "2020-03-04" ) );
- builder.prototype().localDateTimeProperty().set( new LocalDateTime( "2020-03-04T13:23:00", UTC ) );
+ builder.prototype().instantProperty().set( refDate.toInstant() );
+ builder.prototype().dateTimeProperty().set( refDate );
+ builder.prototype().localDateProperty().set( LocalDate.of( 2020, 3, 4 ) );
+ builder.prototype().localDateTimeProperty().set( LocalDateTime.of( 2020, 3, 4, 13, 23, 0 ) );
some = builder.newInstance();
}
return some;
@@ -347,6 +349,7 @@ public class PropertyEqualityTest
{
Some some;
{
+ ZonedDateTime refDate = ZonedDateTime.of( 2030, 2, 8, 9, 9, 9, 0, UTC );
ValueBuilder<Some> builder = vbf.newValueBuilder( Some.class );
builder.prototype().characterProperty().set( 'i' );
builder.prototype().stringProperty().set( "bar" );
@@ -360,10 +363,10 @@ public class PropertyEqualityTest
builder.prototype().enumProperty().set( AnEnum.CATHEDRAL );
builder.prototype().bigIntegerProperty().set( new BigInteger( "23" ) );
builder.prototype().bigDecimalProperty().set( new BigDecimal( "23.42" ) );
- builder.prototype().dateProperty().set( new DateTime( "2030-02-08T09:09:09", UTC ).toDate() );
- builder.prototype().dateTimeProperty().set( new DateTime( "2030-02-08T09:09:09", UTC ) );
- builder.prototype().localDateProperty().set( new LocalDate( "2030-02-08" ) );
- builder.prototype().localDateTimeProperty().set( new LocalDateTime( "2030-02-08T09:09:09", UTC ) );
+ builder.prototype().instantProperty().set( refDate.toInstant() );
+ builder.prototype().dateTimeProperty().set( refDate );
+ builder.prototype().localDateProperty().set( LocalDate.of( 2030, 2, 8 ) );
+ builder.prototype().localDateTimeProperty().set( LocalDateTime.of( 2030, 2, 8, 9, 9, 9 ) );
some = builder.newInstance();
}
return some;
@@ -373,6 +376,7 @@ public class PropertyEqualityTest
{
AnotherSome anotherSome;
{
+ ZonedDateTime refDate = ZonedDateTime.of( 2020, 3, 4, 13, 24, 35, 0, UTC );
ValueBuilder<AnotherSome> builder = vbf.newValueBuilder( AnotherSome.class );
builder.prototype().characterProperty().set( 'q' );
builder.prototype().stringProperty().set( "foo" );
@@ -386,10 +390,10 @@ public class PropertyEqualityTest
builder.prototype().enumProperty().set( AnEnum.BAZAR );
builder.prototype().bigIntegerProperty().set( new BigInteger( "42" ) );
builder.prototype().bigDecimalProperty().set( new BigDecimal( "42.23" ) );
- builder.prototype().dateProperty().set( new DateTime( "2020-03-04T13:24:35", UTC ).toDate() );
- builder.prototype().dateTimeProperty().set( new DateTime( "2020-03-04T13:24:35", UTC ) );
- builder.prototype().localDateProperty().set( new LocalDate( "2020-03-04" ) );
- builder.prototype().localDateTimeProperty().set( new LocalDateTime( "2020-03-04T13:23:00", UTC ) );
+ builder.prototype().instantProperty().set( refDate.toInstant() );
+ builder.prototype().dateTimeProperty().set( refDate );
+ builder.prototype().localDateProperty().set( refDate.toLocalDate() );
+ builder.prototype().localDateTimeProperty().set( LocalDateTime.of( 2020, 3, 4, 13, 23, 0 ) );
anotherSome = builder.newInstance();
}
return anotherSome;
@@ -412,10 +416,11 @@ public class PropertyEqualityTest
builder.prototype().enumProperty().set( AnEnum.CATHEDRAL );
builder.prototype().bigIntegerProperty().set( new BigInteger( "23" ) );
builder.prototype().bigDecimalProperty().set( new BigDecimal( "23.42" ) );
- builder.prototype().dateProperty().set( new DateTime( "2030-02-08T09:09:09", UTC ).toDate() );
- builder.prototype().dateTimeProperty().set( new DateTime( "2030-02-08T09:09:09", UTC ) );
- builder.prototype().localDateProperty().set( new LocalDate( "2030-02-08" ) );
- builder.prototype().localDateTimeProperty().set( new LocalDateTime( "2030-02-08T09:09:09", UTC ) );
+ ZonedDateTime refDate = ZonedDateTime.of( 2030, 2, 8, 9, 9, 9, 0, UTC );
+ builder.prototype().instantProperty().set( refDate.toInstant() );
+ builder.prototype().dateTimeProperty().set( refDate );
+ builder.prototype().localDateProperty().set( LocalDate.of( 2030, 2, 8 ) );
+ builder.prototype().localDateTimeProperty().set( LocalDateTime.of( 2030, 2, 8, 9, 9, 9 ) );
anotherSome = builder.newInstance();
}
return anotherSome;
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/runtime/src/test/java/org/apache/zest/runtime/query/model/Person.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/zest/runtime/query/model/Person.java b/core/runtime/src/test/java/org/apache/zest/runtime/query/model/Person.java
index a4eff58..8f1b842 100644
--- a/core/runtime/src/test/java/org/apache/zest/runtime/query/model/Person.java
+++ b/core/runtime/src/test/java/org/apache/zest/runtime/query/model/Person.java
@@ -19,7 +19,7 @@
*/
package org.apache.zest.runtime.query.model;
-import java.util.Date;
+import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import org.apache.zest.api.association.Association;
@@ -50,7 +50,7 @@ public interface Person
Property<String> email();
@Optional
- Property<Map<Date, String>> datesToRemember();
+ Property<Map<LocalDate, String>> datesToRemember();
@Optional
Property<List<String>> tags();
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/spi/src/main/java/org/apache/zest/spi/entity/EntityState.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/zest/spi/entity/EntityState.java b/core/spi/src/main/java/org/apache/zest/spi/entity/EntityState.java
index 6031851..95b13f2 100644
--- a/core/spi/src/main/java/org/apache/zest/spi/entity/EntityState.java
+++ b/core/spi/src/main/java/org/apache/zest/spi/entity/EntityState.java
@@ -19,6 +19,7 @@
*/
package org.apache.zest.spi.entity;
+import java.time.Instant;
import org.apache.zest.api.common.QualifiedName;
import org.apache.zest.api.entity.EntityDescriptor;
import org.apache.zest.api.entity.EntityReference;
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/DefaultEntityState.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/DefaultEntityState.java b/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/DefaultEntityState.java
index a95fa57..3375670 100644
--- a/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/DefaultEntityState.java
+++ b/core/spi/src/main/java/org/apache/zest/spi/entitystore/helpers/DefaultEntityState.java
@@ -61,10 +61,10 @@ public final class DefaultEntityState
identity,
EntityStatus.NEW,
entityDescriptor,
- new HashMap<QualifiedName, Object>(),
- new HashMap<QualifiedName, EntityReference>(),
- new HashMap<QualifiedName, List<EntityReference>>(),
- new HashMap<QualifiedName, Map<String, EntityReference>>() );
+ new HashMap<>(),
+ new HashMap<>(),
+ new HashMap<>(),
+ new HashMap<>() );
}
public DefaultEntityState( String version,
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java b/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java
index a3c72e1..93a8d7e 100644
--- a/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java
+++ b/core/spi/src/main/java/org/apache/zest/spi/value/ValueDeserializerAdapter.java
@@ -24,11 +24,18 @@ import java.io.InputStream;
import java.io.ObjectInputStream;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.OffsetDateTime;
+import java.time.Period;
+import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collection;
import java.util.Collections;
-import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -44,14 +51,10 @@ import org.apache.zest.api.type.MapType;
import org.apache.zest.api.type.Serialization;
import org.apache.zest.api.type.ValueCompositeType;
import org.apache.zest.api.type.ValueType;
-import org.apache.zest.api.util.Dates;
import org.apache.zest.api.value.ValueBuilder;
import org.apache.zest.api.value.ValueDescriptor;
import org.apache.zest.api.value.ValueDeserializer;
import org.apache.zest.api.value.ValueSerializationException;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
import static org.apache.zest.functional.Iterables.empty;
@@ -80,8 +83,8 @@ import static org.apache.zest.functional.Iterables.empty;
* <li>BigInteger and BigDecimal depends on {@link org.apache.zest.api.value.ValueSerializer.Options};</li>
* <li>Date as String in ISO-8601, {@literal @millis@} or {@literal /Date(..)} Microsoft format;</li>
* <li>DateTime (JodaTime) as a ISO-8601 String with optional timezone offset;</li>
- * <li>LocalDateTime (JodaTime) as whatever {@link LocalDateTime#LocalDateTime(java.lang.Object)} accept as {@literal instant};</li>
- * <li>LocalDate (JodaTime) as whatever {@link LocalDate#LocalDate(java.lang.Object)} accept as {@literal instant};</li>
+ * <li>LocalDateTime (JodaTime) as whatever {@link LocalDateTime#parse} accept as {@literal instant};</li>
+ * <li>LocalDate (JodaTime) as whatever {@link LocalDate#parse} accept as {@literal instant};</li>
* </ul>
*
* @param <InputType> Implementor pull-parser type
@@ -157,10 +160,14 @@ public abstract class ValueDeserializerAdapter<InputType, InputNodeType>
registerDeserializer( BigInteger.class, input -> new BigInteger( input.toString() ) );
// Date types
- registerDeserializer( Date.class, input -> Dates.fromString( input.toString() ) );
- registerDeserializer( DateTime.class, input -> DateTime.parse( input.toString() ) );
- registerDeserializer( LocalDateTime.class, LocalDateTime::new );
- registerDeserializer( LocalDate.class, LocalDate::new );
+ registerDeserializer( Instant.class, input -> Instant.parse( input.toString() ) );
+ registerDeserializer( ZonedDateTime.class, input -> ZonedDateTime.parse( input.toString() ) );
+ registerDeserializer( OffsetDateTime.class, input -> OffsetDateTime.parse( input.toString() ) );
+ registerDeserializer( LocalDateTime.class, input -> LocalDateTime.parse( input.toString() ) );
+ registerDeserializer( LocalDate.class, input -> LocalDate.parse( input.toString() ));
+ registerDeserializer( LocalTime.class, input -> LocalTime.parse( input.toString() ));
+ registerDeserializer( Duration.class, input -> Duration.parse( input.toString() ));
+ registerDeserializer( Period.class, input -> Period.parse( input.toString() ));
// Other supported types
registerDeserializer( EntityReference.class, input -> EntityReference.parseEntityReference( input.toString() ) );
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/spi/src/main/java/org/apache/zest/spi/value/ValueSerializerAdapter.java
----------------------------------------------------------------------
diff --git a/core/spi/src/main/java/org/apache/zest/spi/value/ValueSerializerAdapter.java b/core/spi/src/main/java/org/apache/zest/spi/value/ValueSerializerAdapter.java
index 6e0a2ad..e428f4e 100644
--- a/core/spi/src/main/java/org/apache/zest/spi/value/ValueSerializerAdapter.java
+++ b/core/spi/src/main/java/org/apache/zest/spi/value/ValueSerializerAdapter.java
@@ -24,8 +24,15 @@ import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.OffsetDateTime;
+import java.time.Period;
+import java.time.ZonedDateTime;
import java.util.Base64;
-import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;
@@ -39,14 +46,10 @@ import org.apache.zest.api.composite.CompositeInstance;
import org.apache.zest.api.entity.EntityComposite;
import org.apache.zest.api.entity.EntityReference;
import org.apache.zest.api.property.Property;
-import org.apache.zest.api.util.Dates;
import org.apache.zest.api.value.ValueComposite;
import org.apache.zest.api.value.ValueDescriptor;
import org.apache.zest.api.value.ValueSerializationException;
import org.apache.zest.api.value.ValueSerializer;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
/**
* Adapter for pull-parsing capable ValueSerializers.
@@ -83,7 +86,7 @@ public abstract class ValueSerializerAdapter<OutputType>
implements ValueSerializer
{
- public static interface ComplexSerializer<T, OutputType>
+ public interface ComplexSerializer<T, OutputType>
{
void serialize( Options options, T object, OutputType output )
throws Exception;
@@ -128,25 +131,29 @@ public abstract class ValueSerializerAdapter<OutputType>
public ValueSerializerAdapter()
{
// Primitive Value types
- registerSerializer( String.class, ValueSerializerAdapter.<Object, String>identitySerializer() );
- registerSerializer( Character.class, ValueSerializerAdapter.<Object, Character>identitySerializer() );
- registerSerializer( Boolean.class, ValueSerializerAdapter.<Object, Boolean>identitySerializer() );
- registerSerializer( Integer.class, ValueSerializerAdapter.<Object, Integer>identitySerializer() );
- registerSerializer( Long.class, ValueSerializerAdapter.<Object, Long>identitySerializer() );
- registerSerializer( Short.class, ValueSerializerAdapter.<Object, Short>identitySerializer() );
- registerSerializer( Byte.class, ValueSerializerAdapter.<Object, Byte>identitySerializer() );
- registerSerializer( Float.class, ValueSerializerAdapter.<Object, Float>identitySerializer() );
- registerSerializer( Double.class, ValueSerializerAdapter.<Object, Double>identitySerializer() );
+ registerSerializer( String.class, ValueSerializerAdapter.identitySerializer() );
+ registerSerializer( Character.class, ValueSerializerAdapter.identitySerializer() );
+ registerSerializer( Boolean.class, ValueSerializerAdapter.identitySerializer() );
+ registerSerializer( Integer.class, ValueSerializerAdapter.identitySerializer() );
+ registerSerializer( Long.class, ValueSerializerAdapter.identitySerializer() );
+ registerSerializer( Short.class, ValueSerializerAdapter.identitySerializer() );
+ registerSerializer( Byte.class, ValueSerializerAdapter.identitySerializer() );
+ registerSerializer( Float.class, ValueSerializerAdapter.identitySerializer() );
+ registerSerializer( Double.class, ValueSerializerAdapter.identitySerializer() );
// Number types
registerSerializer( BigDecimal.class, ( options, bigDecimal ) -> bigDecimal.toString() );
registerSerializer( BigInteger.class, ( options, bigInteger ) -> bigInteger.toString() );
// Date types
- registerSerializer( Date.class, ( options, date ) -> Dates.toUtcString( date ) );
- registerSerializer( DateTime.class, ( options, date ) -> date.toString() );
+ registerSerializer( Instant.class, ( options, date ) -> date.toString() );
+ registerSerializer( Duration.class, ( options, date ) -> date.toString() );
+ registerSerializer( Period.class, ( options, date ) -> date.toString() );
+ registerSerializer( ZonedDateTime.class, ( options, date ) -> date.toString() );
+ registerSerializer( OffsetDateTime.class, ( options, date ) -> date.toString() );
registerSerializer( LocalDateTime.class, ( options, date ) -> date.toString() );
registerSerializer( LocalDate.class, ( options, date ) -> date.toString() );
+ registerSerializer( LocalTime.class, ( options, date ) -> date.toString() );
// Other supported types
registerSerializer( EntityReference.class, ( options, ref ) -> ref.toString() );
@@ -155,7 +162,7 @@ public abstract class ValueSerializerAdapter<OutputType>
@Override
public final <T> Function<T, String> serialize()
{
- return object -> serialize( object );
+ return this::serialize;
}
@Override
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/testsupport/src/main/java/org/apache/zest/test/entity/AbstractEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/entity/AbstractEntityStoreTest.java b/core/testsupport/src/main/java/org/apache/zest/test/entity/AbstractEntityStoreTest.java
index 73455ec..b050570 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/entity/AbstractEntityStoreTest.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/entity/AbstractEntityStoreTest.java
@@ -21,17 +21,13 @@ package org.apache.zest.test.entity;
import java.math.BigDecimal;
import java.math.BigInteger;
-import java.util.Date;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.structure.Module;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
-import org.junit.After;
-import org.junit.Test;
import org.apache.zest.api.association.Association;
import org.apache.zest.api.association.ManyAssociation;
import org.apache.zest.api.association.NamedAssociation;
@@ -40,7 +36,9 @@ import org.apache.zest.api.common.UseDefaults;
import org.apache.zest.api.entity.EntityBuilder;
import org.apache.zest.api.entity.EntityComposite;
import org.apache.zest.api.injection.scope.Service;
+import org.apache.zest.api.injection.scope.Structure;
import org.apache.zest.api.property.Property;
+import org.apache.zest.api.structure.Module;
import org.apache.zest.api.unitofwork.ConcurrentEntityModificationException;
import org.apache.zest.api.unitofwork.NoSuchEntityException;
import org.apache.zest.api.unitofwork.UnitOfWork;
@@ -52,11 +50,13 @@ import org.apache.zest.bootstrap.ModuleAssembly;
import org.apache.zest.spi.entitystore.EntityStore;
import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
import org.apache.zest.test.AbstractZestTest;
+import org.junit.After;
+import org.junit.Test;
+import static java.time.ZoneOffset.UTC;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
-import static org.joda.time.DateTimeZone.UTC;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
@@ -72,6 +72,7 @@ public abstract class AbstractEntityStoreTest
@Structure
private Module moduleInstance;
+ private ZonedDateTime refDate = ZonedDateTime.of( 2020, 3, 4, 13, 24, 35, 0, UTC );
@Override
public void assemble( ModuleAssembly module )
@@ -96,7 +97,7 @@ public abstract class AbstractEntityStoreTest
{
// Create entity
EntityBuilder<TestEntity> builder = unitOfWork.newEntityBuilder( TestEntity.class );
- builder.instance().dateValue().set( new Date() );
+ builder.instance().instantValue().set( Instant.now() );
TestEntity instance = builder.newInstance();
instance.name().set( "Test" );
@@ -107,10 +108,10 @@ public abstract class AbstractEntityStoreTest
instance.booleanValue().set( Boolean.TRUE );
instance.bigIntegerValue().set( new BigInteger( "42" ) );
instance.bigDecimalValue().set( new BigDecimal( "42" ) );
- instance.dateValue().set( new DateTime( "2020-03-04T13:24:35", UTC ).toDate() );
- instance.dateTimeValue().set( new DateTime( "2020-03-04T13:24:35", UTC ) );
- instance.localDateTimeValue().set( new LocalDateTime( "2020-03-04T13:23:00" ) );
- instance.localDateValue().set( new LocalDate( "2020-03-04" ) );
+ instance.instantValue().set( refDate.toInstant() );
+ instance.dateTimeValue().set( refDate );
+ instance.localDateTimeValue().set( LocalDateTime.of( 2020, 3, 4, 13, 23, 00 ) );
+ instance.localDateValue().set( LocalDate.of( 2020, 3, 4 ) );
instance.association().set( instance );
ValueBuilder<Tjabba> valueBuilder4 = moduleInstance.newValueBuilder( Tjabba.class );
@@ -192,21 +193,21 @@ public abstract class AbstractEntityStoreTest
instance.bigDecimalValue().get(),
equalTo( new BigDecimal( "42" ) ) );
- assertThat( "property 'dateValue' has correct value",
- instance.dateValue().get(),
- equalTo( new DateTime( "2020-03-04T13:24:35", UTC ).toDate() ) );
+ assertThat( "property 'instantValue' has correct value",
+ instance.instantValue().get(),
+ equalTo( refDate.toInstant() ) );
assertThat( "property 'dateTimeValue' has correct value",
instance.dateTimeValue().get(),
- equalTo( new DateTime( "2020-03-04T13:24:35", UTC ) ) );
+ equalTo( refDate ) );
assertThat( "property 'localDateTimeValue' has correct value",
instance.localDateTimeValue().get(),
- equalTo( new LocalDateTime( "2020-03-04T13:23:00", UTC ) ) );
+ equalTo( LocalDateTime.of( 2020, 3, 4, 13, 23, 0 ) ) );
assertThat( "property 'localDateValue' has correct value",
instance.localDateValue().get(),
- equalTo( new LocalDate( "2020-03-04" ) ) );
+ equalTo( LocalDate.of( 2020, 3, 4 ) ) );
assertThat( "property 'name' has correct value",
instance.name().get(),
@@ -506,10 +507,10 @@ public abstract class AbstractEntityStoreTest
Property<BigDecimal> bigDecimalValue();
@Optional
- Property<Date> dateValue();
+ Property<Instant> instantValue();
@Optional
- Property<DateTime> dateTimeValue();
+ Property<ZonedDateTime> dateTimeValue();
@Optional
Property<LocalDateTime> localDateTimeValue();
@@ -580,7 +581,6 @@ public abstract class AbstractEntityStoreTest
public interface TestValue2
extends ValueComposite
{
-
Property<String> stringValue();
Property<Tjabba> anotherValue();
@@ -588,8 +588,6 @@ public abstract class AbstractEntityStoreTest
public enum TestEnum
{
-
VALUE1, VALUE2, VALUE3
}
-
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractQueryTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractQueryTest.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractQueryTest.java
index 9b40b62..8a0dc57 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractQueryTest.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/AbstractQueryTest.java
@@ -22,19 +22,18 @@ package org.apache.zest.test.indexing;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.Map;
import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.structure.Module;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
-import org.junit.Ignore;
-import org.junit.Test;
import org.apache.zest.api.query.NotQueryableException;
import org.apache.zest.api.query.Query;
import org.apache.zest.api.query.QueryBuilder;
import org.apache.zest.api.query.grammar.OrderBy;
+import org.apache.zest.api.structure.Module;
import org.apache.zest.spi.query.EntityFinderException;
import org.apache.zest.spi.query.IndexExporter;
import org.apache.zest.test.indexing.model.Account;
@@ -46,12 +45,10 @@ import org.apache.zest.test.indexing.model.Male;
import org.apache.zest.test.indexing.model.Nameable;
import org.apache.zest.test.indexing.model.Person;
import org.apache.zest.test.indexing.model.QueryParam;
+import org.junit.Ignore;
+import org.junit.Test;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.joda.time.DateTimeZone.UTC;
-import static org.joda.time.DateTimeZone.forID;
-import static org.junit.Assert.assertThat;
+import static java.time.ZoneOffset.UTC;
import static org.apache.zest.api.query.QueryExpressions.and;
import static org.apache.zest.api.query.QueryExpressions.contains;
import static org.apache.zest.api.query.QueryExpressions.containsName;
@@ -70,6 +67,9 @@ import static org.apache.zest.api.query.QueryExpressions.orderBy;
import static org.apache.zest.api.query.QueryExpressions.templateFor;
import static org.apache.zest.test.indexing.NameableAssert.verifyOrderedResults;
import static org.apache.zest.test.indexing.NameableAssert.verifyUnorderedResults;
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
/**
* Abstract satisfiedBy with tests for simple queries against Index/Query engines.
@@ -79,7 +79,7 @@ public abstract class AbstractQueryTest
{
@Structure
Module moduleInstance;
-
+ private ZonedDateTime refDate;
@Test
public void showNetwork()
@@ -117,7 +117,7 @@ public abstract class AbstractQueryTest
QueryBuilder<Nameable> qb = this.moduleInstance.newQueryBuilder( Nameable.class );
Query<Nameable> query = unitOfWork.newQuery( qb );
System.out.println( "*** script03: " + query );
- verifyUnorderedResults( query, "Felix", "Joe Doe", "Ann Doe", "Jack Doe", "Penang", "Kuala Lumpur", "Cooking", "Gaming",
+ verifyUnorderedResults( query, "Felix", "Joe Doe", "Ann Doe", "Jack Doe", "Penang", "Kuala Lumpur", "Cooking", "Gaming",
"Programming", "Cars" );
}
@@ -152,10 +152,10 @@ public abstract class AbstractQueryTest
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
Query<Person> query = unitOfWork.newQuery( qb.where( eq( person.mother()
- .get()
- .placeOfBirth()
- .get()
- .name(), "Kuala Lumpur" ) )
+ .get()
+ .placeOfBirth()
+ .get()
+ .name(), "Kuala Lumpur" ) )
);
System.out.println( "*** script05: " + query );
verifyUnorderedResults( query, "Joe Doe" );
@@ -441,10 +441,10 @@ public abstract class AbstractQueryTest
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
Query<Person> query = unitOfWork.newQuery( qb.where( eq( person.personalWebsite()
- .get()
- .protocol()
- .get()
- .value(), "http" ) )
+ .get()
+ .protocol()
+ .get()
+ .value(), "http" ) )
);
System.out.println( "*** script29: " + query );
verifyUnorderedResults( query, "Jack Doe" );
@@ -573,8 +573,9 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ refDate = ZonedDateTime.of( 2010, 3, 4, 13, 24, 35, 0, UTC );
Query<Person> query = unitOfWork.newQuery( qb.where(
- eq( person.dateValue(), new DateTime( "2010-03-04T13:24:35", UTC ).toDate() ) ) );
+ eq( person.instantValue(), refDate.toInstant() ) ) );
System.out.println( "*** script40_Date: " + query );
verifyUnorderedResults( query, "Jack Doe" );
@@ -586,7 +587,7 @@ public abstract class AbstractQueryTest
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
Query<Person> query = unitOfWork.newQuery( qb.where(
- ne( person.dateValue(), new DateTime( "2010-03-04T13:24:35", UTC ).toDate() ) ) );
+ ne( person.instantValue(), refDate.toInstant() ) ) );
System.out.println( "*** script41_Date: " + query );
verifyUnorderedResults( query, "Joe Doe" );
@@ -597,8 +598,9 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ ZonedDateTime cetTime = ZonedDateTime.of( 2010, 3, 4, 14, 24, 35, 0, ZoneId.of( "CET" ) );
Query<Person> query = unitOfWork.newQuery( qb.where(
- ne( person.dateValue(), new DateTime( "2010-03-04T14:24:35", forID( "CET" ) ).toDate() ) ) );
+ ne( person.instantValue(), cetTime.toInstant() ) ) );
System.out.println( "*** script42_Date: " + query );
verifyUnorderedResults( query, "Joe Doe" );
@@ -609,9 +611,11 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ ZonedDateTime start = ZonedDateTime.of( 2005, 3, 4, 13, 24, 35, 0, UTC );
+ ZonedDateTime end = ZonedDateTime.of( 2015, 3, 4, 13, 24, 35, 0, UTC );
Query<Person> query = unitOfWork.newQuery( qb.where(
- and( gt( person.dateValue(), new DateTime( "2005-03-04T13:24:35", UTC ).toDate() ),
- lt( person.dateValue(), new DateTime( "2015-03-04T13:24:35", UTC ).toDate() ) ) ) );
+ and( gt( person.instantValue(), start.toInstant() ),
+ lt( person.instantValue(), end.toInstant() ) ) ) );
System.out.println( "*** script43_Date: " + query );
verifyUnorderedResults( query, "Jack Doe" );
@@ -622,8 +626,9 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ ZonedDateTime time = ZonedDateTime.of( 2010, 3, 4, 13, 24, 35, 0, UTC );
Query<Person> query = unitOfWork.newQuery( qb.where(
- eq( person.dateTimeValue(), new DateTime( "2010-03-04T13:24:35", UTC ) ) ) );
+ eq( person.dateTimeValue(), time ) ) );
System.out.println( "*** script40_DateTime: " + query );
verifyUnorderedResults( query, "Jack Doe" );
@@ -634,8 +639,9 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ ZonedDateTime time = ZonedDateTime.of( 2010, 3, 4, 13, 24, 35, 0, UTC );
Query<Person> query = unitOfWork.newQuery( qb.where(
- ne( person.dateTimeValue(), new DateTime( "2010-03-04T13:24:35", UTC ) ) ) );
+ ne( person.dateTimeValue(), time ) ) );
System.out.println( "*** script41_DateTime: " + query );
verifyUnorderedResults( query, "Joe Doe" );
@@ -646,8 +652,9 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ ZonedDateTime time = ZonedDateTime.of( 2010, 3, 4, 13, 24, 35, 0, ZoneId.of( "CET" ) );
Query<Person> query = unitOfWork.newQuery( qb.where(
- ne( person.dateTimeValue(), new DateTime( "2010-03-04T14:24:35", forID( "CET" ) ) ) ) );
+ ne( person.dateTimeValue(), time ) ) );
System.out.println( "*** script42_DateTime: " + query );
verifyUnorderedResults( query, "Jack Doe", "Joe Doe" );
@@ -658,9 +665,11 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ ZonedDateTime start = ZonedDateTime.of( 2005, 3, 4, 13, 24, 35, 0, UTC );
+ ZonedDateTime end = ZonedDateTime.of( 2015, 3, 4, 13, 24, 35, 0, UTC );
Query<Person> query = unitOfWork.newQuery( qb.where(
- and( gt( person.dateTimeValue(), new DateTime( "2005-03-04T13:24:35", UTC ) ),
- lt( person.dateTimeValue(), new DateTime( "2015-03-04T13:24:35", UTC ) ) ) ) );
+ and( gt( person.dateTimeValue(), start ),
+ lt( person.dateTimeValue(), end ) ) ) );
System.out.println( "*** script43_DateTime: " + query );
verifyUnorderedResults( query, "Jack Doe" );
@@ -672,7 +681,7 @@ public abstract class AbstractQueryTest
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
Query<Person> query = unitOfWork.newQuery( qb.where(
- eq( person.localDateTimeValue(), new LocalDateTime( "2010-03-04T13:23:00", UTC ) ) ) );
+ eq( person.localDateTimeValue(), LocalDateTime.of( 2010, 3, 4, 13, 23, 0 ) ) ) );
System.out.println( "*** script40_LocalDateTime: " + query );
verifyUnorderedResults( query, "Jack Doe" );
@@ -684,7 +693,7 @@ public abstract class AbstractQueryTest
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
Query<Person> query = unitOfWork.newQuery( qb.where(
- ne( person.localDateTimeValue(), new LocalDateTime( "2010-03-04T13:23:00", UTC ) ) ) );
+ ne( person.localDateTimeValue(), LocalDateTime.of( 2010, 3, 4, 13, 23, 0 ) ) ) );
System.out.println( "*** script41_LocalDateTime: " + query );
verifyUnorderedResults( query, "Joe Doe" );
@@ -695,8 +704,9 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ ZonedDateTime time = ZonedDateTime.of( 2010, 3, 4, 13, 24, 35, 0, ZoneId.of( "CET" ) );
Query<Person> query = unitOfWork.newQuery( qb.where(
- ne( person.localDateTimeValue(), new LocalDateTime( "2010-03-04T13:23:00", forID( "CET" ) ) ) ) );
+ ne( person.localDateTimeValue(), time.toLocalDateTime() ) ) );
System.out.println( "*** script42_LocalDateTime: " + query );
verifyUnorderedResults( query, "Joe Doe" );
@@ -707,9 +717,11 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ LocalDateTime start = ZonedDateTime.of( 2005, 3, 4, 13, 24, 35, 0, UTC ).toLocalDateTime();
+ LocalDateTime end = ZonedDateTime.of( 2015, 3, 4, 13, 24, 35, 0, UTC ).toLocalDateTime();
Query<Person> query = unitOfWork.newQuery( qb.where(
- and( gt( person.localDateTimeValue(), new LocalDateTime( "2005-03-04T13:24:35", UTC ) ),
- lt( person.localDateTimeValue(), new LocalDateTime( "2015-03-04T13:24:35", UTC ) ) ) ) );
+ and( gt( person.localDateTimeValue(), start ),
+ lt( person.localDateTimeValue(), end ) ) ) );
System.out.println( "*** script43_LocalDateTime: " + query );
verifyUnorderedResults( query, "Jack Doe" );
@@ -721,7 +733,7 @@ public abstract class AbstractQueryTest
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
Query<Person> query = unitOfWork.newQuery( qb.where(
- eq( person.localDateValue(), new LocalDate( "2010-03-04", UTC ) ) ) );
+ eq( person.localDateValue(), LocalDate.of( 2010,3,4 ) ) ) );
System.out.println( "*** script40_LocalDate: " + query );
verifyUnorderedResults( query, "Jack Doe" );
@@ -733,7 +745,7 @@ public abstract class AbstractQueryTest
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
Query<Person> query = unitOfWork.newQuery( qb.where(
- ne( person.localDateValue(), new LocalDate( "2010-03-04", UTC ) ) ) );
+ ne( person.localDateValue(), LocalDate.of( 2010,3,4 ) ) ) );
System.out.println( "*** script41_LocalDate: " + query );
verifyUnorderedResults( query, "Joe Doe" );
@@ -744,8 +756,9 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ LocalDate time = ZonedDateTime.of(2010,3,4,13,24,35,0, ZoneId.of("CET")).toLocalDate();
Query<Person> query = unitOfWork.newQuery( qb.where(
- ne( person.localDateValue(), new LocalDate( "2010-03-04", forID( "CET" ) ) ) ) );
+ ne( person.localDateValue(), time ) ) );
System.out.println( "*** script42_LocalDate: " + query );
verifyUnorderedResults( query, "Joe Doe" );
@@ -756,9 +769,11 @@ public abstract class AbstractQueryTest
{
QueryBuilder<Person> qb = this.moduleInstance.newQueryBuilder( Person.class );
Person person = templateFor( Person.class );
+ LocalDate start = ZonedDateTime.of(2010,3,4,13,24,35,0,UTC).toLocalDate();
+ LocalDate end = ZonedDateTime.of(2010,3,4,13,24,35,0,UTC).toLocalDate();
Query<Person> query = unitOfWork.newQuery( qb.where(
- and( gt( person.localDateValue(), new LocalDate( "2005-03-04", UTC ) ),
- lt( person.localDateValue(), new LocalDate( "2015-03-04", UTC ) ) ) ) );
+ and( gt( person.localDateValue(), start),
+ lt( person.localDateValue(), end ) ) ) );
System.out.println( "*** script43_LocalDate: " + query );
verifyUnorderedResults( query, "Jack Doe" );
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java
index 7c5d2fa..8d20a6e 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/TestData.java
@@ -21,6 +21,9 @@ package org.apache.zest.test.indexing;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
import org.apache.zest.api.entity.EntityBuilder;
@@ -39,11 +42,8 @@ import org.apache.zest.test.indexing.model.Person;
import org.apache.zest.test.indexing.model.Protocol;
import org.apache.zest.test.indexing.model.QueryParam;
import org.apache.zest.test.indexing.model.URL;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
-import static org.joda.time.DateTimeZone.UTC;
+import static java.time.ZoneOffset.UTC;
/**
* Utility class to populate Index/Query tests data.
@@ -176,10 +176,10 @@ public class TestData
joeDoe.address().set( address );
joeDoe.bigInteger().set( new BigInteger( "23232323232323232323232323" ) );
joeDoe.bigDecimal().set( new BigDecimal( "23.4276931348623157e+309" ) );
- joeDoe.dateValue().set( new DateTime( "2020-03-04T13:24:35", UTC ).toDate() );
- joeDoe.dateTimeValue().set( new DateTime( "2020-03-04T13:24:35", UTC ) );
- joeDoe.localDateTimeValue().set( new LocalDateTime( "2020-03-04T13:23:00" ) );
- joeDoe.localDateValue().set( new LocalDate( "2020-03-04" ) );
+ joeDoe.instantValue().set( ZonedDateTime.of( 2020, 3, 4, 13, 24, 35, 0, UTC ).toInstant() );
+ joeDoe.dateTimeValue().set( ZonedDateTime.of( 2020, 3, 4, 13, 24, 35, 0, UTC ) );
+ joeDoe.localDateTimeValue().set( LocalDateTime.of( 2020, 3, 4, 13, 23, 0 ) );
+ joeDoe.localDateValue().set( LocalDate.of( 2020, 3, 4 ) );
NameableAssert.trace( joeDoe );
}
@@ -201,10 +201,10 @@ public class TestData
jackDoe.address().set( address );
jackDoe.bigInteger().set( new BigInteger( "42424242424242424242424242" ) );
jackDoe.bigDecimal().set( new BigDecimal( "42.2376931348623157e+309" ) );
- jackDoe.dateValue().set( new DateTime( "2010-03-04T13:24:35", UTC ).toDate() );
- jackDoe.dateTimeValue().set( new DateTime( "2010-03-04T13:24:35", UTC ) );
- jackDoe.localDateTimeValue().set( new LocalDateTime( "2010-03-04T13:23:00" ) );
- jackDoe.localDateValue().set( new LocalDate( "2010-03-04" ) );
+ jackDoe.instantValue().set( ZonedDateTime.of( 2010, 3, 4, 13, 24, 35, 0, UTC ).toInstant() );
+ jackDoe.dateTimeValue().set( ZonedDateTime.of( 2010, 3, 4, 13, 24, 35, 0, UTC ) );
+ jackDoe.localDateTimeValue().set( LocalDateTime.of( 2010, 3, 4, 13, 23, 0 ) );
+ jackDoe.localDateValue().set( LocalDate.of( 2010, 3, 4 ) );
ValueBuilder<URL> urlBuilder = module.newValueBuilder( URL.class );
ValueBuilder<Protocol> protocolBuilder = module.newValueBuilder( Protocol.class );
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Person.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Person.java b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Person.java
index e9bfd11..1046879 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Person.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/indexing/model/Person.java
@@ -21,11 +21,11 @@ package org.apache.zest.test.indexing.model;
import java.math.BigDecimal;
import java.math.BigInteger;
-import java.util.Date;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZonedDateTime;
import java.util.Map;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
import org.apache.zest.api.association.Association;
import org.apache.zest.api.association.ManyAssociation;
import org.apache.zest.api.association.NamedAssociation;
@@ -86,10 +86,10 @@ public interface Person
Property<BigDecimal> bigDecimal();
@Optional
- Property<Date> dateValue();
+ Property<Instant> instantValue();
@Optional
- Property<DateTime> dateTimeValue();
+ Property<ZonedDateTime> dateTimeValue();
@Optional
Property<LocalDateTime> localDateTimeValue();
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractJsonDateFormatTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractJsonDateFormatTest.java b/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractJsonDateFormatTest.java
index 3ad92cc..4cb33ba 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractJsonDateFormatTest.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractJsonDateFormatTest.java
@@ -19,12 +19,17 @@
*/
package org.apache.zest.test.value;
-import java.util.Date;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.OffsetDateTime;
+import java.time.Period;
+import java.time.ZoneId;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
import java.util.List;
-import org.joda.time.DateTime;
-import org.joda.time.DateTimeZone;
-import org.junit.Before;
-import org.junit.Test;
import org.apache.zest.api.injection.scope.Service;
import org.apache.zest.api.type.CollectionType;
import org.apache.zest.api.type.ValueType;
@@ -32,8 +37,10 @@ import org.apache.zest.api.value.ValueDeserializer;
import org.apache.zest.bootstrap.AssemblyException;
import org.apache.zest.bootstrap.ModuleAssembly;
import org.apache.zest.test.AbstractZestTest;
+import org.junit.Test;
-import static org.junit.Assert.*;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
/**
* Assert that a JSON ValueDeserializer support various date formats.
@@ -43,7 +50,14 @@ public class AbstractJsonDateFormatTest
extends AbstractZestTest
{
- private final ValueType dateType = new ValueType( Date.class );
+ private final ValueType offsetDateTimeType = new ValueType( OffsetDateTime.class );
+ private final ValueType zonedDateTimeType = new ValueType( ZonedDateTime.class );
+ private final ValueType localDateTimeType = new ValueType( LocalDateTime.class );
+ private final ValueType localTimeType = new ValueType( LocalTime.class );
+ private final ValueType localDateType = new ValueType( LocalDate.class );
+ private final ValueType instantType = new ValueType( Instant.class );
+ private final ValueType durationType = new ValueType( Duration.class );
+ private final ValueType periodType = new ValueType( Period.class );
@Override
public void assemble( ModuleAssembly module )
@@ -55,31 +69,83 @@ public class AbstractJsonDateFormatTest
protected ValueDeserializer valueDeserializer;
@Test
- public void givenISO6801DateFormatWhenConvertingFromSerializedStateExpectValidDate()
+ public void givenLocalDateTimeFormatWhenConvertingFromSerializedStateExpectValidDate()
+ throws Exception
+ {
+ CollectionType collectionType = new CollectionType( List.class, localDateTimeType );
+ List<LocalDateTime> value = valueDeserializer.deserialize( module, collectionType, "[\"2009-08-12T14:54:27\"]" );
+ LocalDateTime expected = LocalDateTime.of( 2009, 8, 12, 14, 54, 27 );
+ assertThat( value.get( 0 ), equalTo( expected ) );
+ }
+
+ @Test
+ public void givenLocalDateFormatWhenConvertingFromSerializedStateExpectValidDate()
+ throws Exception
+ {
+ CollectionType collectionType = new CollectionType( List.class, localDateType );
+ List<LocalDate> value = valueDeserializer.deserialize( module, collectionType, "[\"2009-08-12\"]" );
+ LocalDate expected = LocalDate.of( 2009, 8, 12 );
+ assertThat( value.get( 0 ), equalTo( expected ) );
+ }
+
+ @Test
+ public void givenLocalTimeFormatWhenConvertingFromSerializedStateExpectValidDate()
+ throws Exception
+ {
+ CollectionType collectionType = new CollectionType( List.class, localTimeType );
+ List<LocalTime> value = valueDeserializer.deserialize( module, collectionType, "[\"14:54:27\"]" );
+ LocalTime expected = LocalTime.of( 14, 54, 27 );
+ assertThat( value.get( 0 ), equalTo( expected ) );
+ }
+
+ @Test
+ public void givenOffsetDateTimeFormatWhenConvertingFromSerializedStateExpectValidDate()
+ throws Exception
+ {
+ CollectionType collectionType = new CollectionType( List.class, offsetDateTimeType );
+ List<OffsetDateTime> value = valueDeserializer.deserialize( module, collectionType, "[\"2009-08-12T14:54:27.895+08:00\"]" );
+ OffsetDateTime expected = OffsetDateTime.of( 2009, 8, 12, 14, 54, 27, 895000000, ZoneOffset.ofHours( 8 ) );
+ assertThat( value.get( 0 ), equalTo( expected ) );
+ }
+
+ @Test
+ public void givenZonedDateTimeFormatWhenConvertingFromSerializedStateExpectValidDate()
throws Exception
{
- CollectionType collectionType = new CollectionType( List.class, dateType );
- List<Date> value = valueDeserializer.deserialize( module, collectionType, "[\"2009-08-12T14:54:27.895+0800\"]" );
- assertEquals( new DateTime( "2009-08-12T06:54:27.895Z", DateTimeZone.UTC ).toDate(), value.get( 0 ) );
+ CollectionType collectionType = new CollectionType( List.class, zonedDateTimeType );
+ List<ZonedDateTime> value = valueDeserializer.deserialize( module, collectionType, "[\"2009-08-12T14:54:27.895+02:00[CET]\"]" );
+ ZonedDateTime expected = ZonedDateTime.of( 2009, 8, 12, 14, 54, 27, 895000000, ZoneId.of( "CET" ) );
+ assertThat( value.get( 0 ), equalTo( expected ) );
}
@Test
- public void givenAtDateFormatWhenConvertingFromSerializedStateExpectValidDate()
+ public void givenInstantFormatWhenConvertingFromSerializedStateExpectValidDate()
throws Exception
{
- long tstamp = System.currentTimeMillis();
- CollectionType collectionType = new CollectionType( List.class, dateType );
- List<Date> value = valueDeserializer.deserialize( module, collectionType, "[\"@" + tstamp + "@\"]" );
- assertEquals( new Date( tstamp ), value.get( 0 ) );
+ CollectionType collectionType = new CollectionType( List.class, instantType);
+ List<Instant> value = valueDeserializer.deserialize( module, collectionType, "[\"2016-06-11T08:47:12.620Z\"]" );
+ Instant expected = Instant.parse("2016-06-11T08:47:12.620Z" );
+ assertThat( value.get( 0 ), equalTo( expected ) );
}
@Test
- public void givenMicrosoftDateFormatWhenConvertingFromSerializedStateExpectValidDate()
+ public void givenDurationFormatWhenConvertingFromSerializedStateExpectValidDate()
throws Exception
{
- long tstamp = System.currentTimeMillis();
- CollectionType collectionType = new CollectionType( List.class, dateType );
- List<Date> value = valueDeserializer.deserialize( module, collectionType, "[\"/Date(" + tstamp + ")/\"]" );
- assertEquals( new Date( tstamp ), value.get( 0 ) );
+ CollectionType collectionType = new CollectionType( List.class, durationType );
+ List<Duration> value = valueDeserializer.deserialize( module, collectionType, "[\"PT3.5S\"]" );
+ Duration expected = Duration.ofMillis( 3500 );
+ assertThat( value.get( 0 ), equalTo( expected ) );
}
+
+ @Test
+ public void givenPeriodFormatWhenConvertingFromSerializedStateExpectValidDate()
+ throws Exception
+ {
+ CollectionType collectionType = new CollectionType( List.class, periodType );
+ List<ZonedDateTime> value = valueDeserializer.deserialize( module, collectionType, "[\"P3Y5M13D\"]" );
+ Period expected = Period.of( 3, 5, 13);
+ assertThat( value.get( 0 ), equalTo( expected ) );
+ }
+
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/49bab608/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractPlainValueSerializationTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractPlainValueSerializationTest.java b/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractPlainValueSerializationTest.java
index f00af68..3ac1039 100644
--- a/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractPlainValueSerializationTest.java
+++ b/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractPlainValueSerializationTest.java
@@ -21,7 +21,11 @@ package org.apache.zest.test.value;
import java.math.BigDecimal;
import java.math.BigInteger;
-import java.util.Date;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
import org.apache.zest.api.entity.EntityBuilder;
import org.apache.zest.api.entity.EntityReference;
import org.apache.zest.api.injection.scope.Service;
@@ -35,16 +39,10 @@ import org.apache.zest.bootstrap.ModuleAssembly;
import org.apache.zest.entitystore.memory.MemoryEntityStoreService;
import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
import org.apache.zest.test.AbstractZestTest;
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalDateTime;
import org.junit.Test;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.hamcrest.core.IsNot.not;
-import static org.joda.time.DateTimeZone.UTC;
-import static org.joda.time.DateTimeZone.forID;
-import static org.joda.time.DateTimeZone.forOffsetHours;
import static org.junit.Assert.assertThat;
/**
@@ -194,46 +192,33 @@ public abstract class AbstractPlainValueSerializationTest
}
@Test
- public void givenDateValueWhenSerializingAndDeserializingExpectEquals()
- {
- String serialized = valueSerialization.serialize( new DateTime( "2020-03-04T13:24:35", forID( "CET" ) ).toDate() );
- assertThat( serialized, equalTo( "2020-03-04T12:24:35.000Z" ) );
-
- Date deserialized = valueSerialization.deserialize( module, Date.class, serialized );
- assertThat( deserialized, equalTo( new DateTime( "2020-03-04T13:24:35", forID( "CET" ) ).toDate() ) );
- assertThat( deserialized, equalTo( new DateTime( "2020-03-04T12:24:35", UTC ).toDate() ) );
- }
-
- @Test
public void givenDateTimeValueWhenSerializingAndDeserializingExpectEquals()
{
- // We specify the TimeZone explicitely here so that serialized/deserialized is equals
- // See https://github.com/JodaOrg/joda-time/issues/106
- String serialized = valueSerialization.serialize( new DateTime( "2020-03-04T13:24:35", forOffsetHours( 1 ) ) );
- assertThat( serialized, equalTo( "2020-03-04T13:24:35.000+01:00" ) );
- DateTime deserialized = valueSerialization.deserialize( module, DateTime.class, serialized );
- assertThat( deserialized, equalTo( new DateTime( "2020-03-04T13:24:35", forOffsetHours( 1 ) ) ) );
+ String serialized = valueSerialization.serialize( OffsetDateTime.of( 2020, 3, 4, 13, 24, 35, 123000000, ZoneOffset.ofHours( 1 ) ) );
+ assertThat( serialized, equalTo( "2020-03-04T13:24:35.123+01:00" ) );
+ ZonedDateTime deserialized = valueSerialization.deserialize( module, ZonedDateTime.class, serialized );
+ assertThat( deserialized, equalTo( ZonedDateTime.of( 2020, 3, 4, 13, 24, 35, 123000000, ZoneOffset.ofHours( 1 ) ) ) );
}
@Test
public void givenLocalDateTimeValueWhenSerializingAndDeserializingExpectEquals()
{
// Serialized without TimeZone
- String serialized = valueSerialization.serialize( new LocalDateTime( "2020-03-04T13:23:00", forID( "CET" ) ) );
- assertThat( serialized, equalTo( "2020-03-04T13:23:00.000" ) );
+ String serialized = valueSerialization.serialize( LocalDateTime.of( 2020, 3, 4, 13, 23, 12 ) );
+ assertThat( serialized, equalTo( "2020-03-04T13:23:12" ) );
LocalDateTime deserialized = valueSerialization.deserialize( module, LocalDateTime.class, serialized );
- assertThat( deserialized, equalTo( new LocalDateTime( "2020-03-04T13:23:00", UTC ) ) );
+ assertThat( deserialized, equalTo( LocalDateTime.of( 2020, 3, 4, 13, 23, 12 ) ) );
}
@Test
public void givenLocalDateValueWhenSerializingAndDeserializingExpectEquals()
{
- String serialized = valueSerialization.serialize( new LocalDate( "2020-03-04" ) );
+ String serialized = valueSerialization.serialize( LocalDate.of( 2020, 3, 4 ) );
assertThat( serialized, equalTo( "2020-03-04" ) );
LocalDate deserialized = valueSerialization.deserialize( module, LocalDate.class, serialized );
- assertThat( deserialized, equalTo( new LocalDate( "2020-03-04" ) ) );
+ assertThat( deserialized, equalTo( LocalDate.of( 2020,3,4 ) ) );
}
@Test