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 2015/11/15 12:05:51 UTC

[2/3] zest-java git commit: ZEST-128 - Chasing race condition problems.

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronExpression.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronExpression.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronExpression.java
deleted file mode 100644
index abba61b..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronExpression.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2010-2012, Paul Merlin.
- * Copyright (c) 2012, Niclas Hedhman.
- *
- * Licensed  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.library.scheduler.schedule.cron;
-
-import java.lang.annotation.Retention;
-import org.apache.zest.api.constraint.ConstraintDeclaration;
-import org.apache.zest.api.constraint.Constraints;
-import org.apache.zest.library.constraints.annotation.InstanceOf;
-import org.apache.zest.library.constraints.annotation.NotEmpty;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-@ConstraintDeclaration
-@Retention( RUNTIME )
-@NotEmpty
-@InstanceOf( String.class )
-@Constraints( CronExpressionConstraint.class )
-public @interface CronExpression
-{
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronExpressionConstraint.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronExpressionConstraint.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronExpressionConstraint.java
deleted file mode 100644
index 02013e7..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronExpressionConstraint.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2010-2012, Paul Merlin.
- * Copyright (c) 2012, Niclas Hedhman.
- *
- * Licensed  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.library.scheduler.schedule.cron;
-
-import org.codeartisans.sked.cron.CronSchedule;
-import org.apache.zest.api.constraint.Constraint;
-
-public class CronExpressionConstraint
-    implements Constraint<CronExpression, String>
-{
-    private static final long serialVersionUID = 1L;
-
-    @Override
-    public boolean isValid( CronExpression annotation, String cronExpression )
-    {
-        return CronSchedule.isExpressionValid( cronExpression );
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronSchedule.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronSchedule.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronSchedule.java
deleted file mode 100644
index 4597e75..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/CronSchedule.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2010-2012, Paul Merlin. All Rights Reserved.
- * Copyright (c) 2012, Niclas Hedhman. All Rights Reserved.
- *
- * Licensed 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.library.scheduler.schedule.cron;
-
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.property.Immutable;
-import org.apache.zest.api.property.Property;
-import org.apache.zest.library.scheduler.schedule.Schedule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Mixins( CronSchedule.CronScheduleMixin.class )
-public interface CronSchedule
-    extends Schedule
-{
-    /**
-     * The Cron expression indicating when the Schedule is to be run.
-     * The Schedule can NOT be changed once it is set. If this is needed, delete this Schedule and attach the Task
-     * to a new Schedule.
-     *
-     * @return The cron expression that will be used on {@link org.apache.zest.api.unitofwork.UnitOfWork} completion to compute next run
-     */
-    @CronExpression
-    @Immutable
-    Property<String> cronExpression();
-
-    abstract class CronScheduleMixin
-        implements CronSchedule
-    {
-        private static final Logger LOGGER = LoggerFactory.getLogger( Schedule.class );
-
-        @Override
-        public void taskStarting()
-        {
-        }
-
-        @Override
-        public void taskCompletedSuccessfully()
-        {
-        }
-
-        @Override
-        public void taskCompletedWithException( Throwable ex )
-        {
-        }
-
-        @Override
-        public String presentationString()
-        {
-            return cronExpression().get();
-        }
-
-        @Override
-        public long nextRun( long from )
-        {
-            long actualFrom = from;
-            long firstRun = start().get().getMillis();
-            if( firstRun > from )
-            {
-                actualFrom = firstRun;
-            }
-            Long nextRun = createCron().firstRunAfter( actualFrom );
-            LOGGER.info( "CronSchedule::nextRun({}) is {}", from, firstRun );
-            return nextRun;
-        }
-
-        private org.codeartisans.sked.cron.CronSchedule createCron()
-        {
-            return new org.codeartisans.sked.cron.CronSchedule( cronExpression().get() );
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/package.html
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/package.html b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/package.html
deleted file mode 100644
index f3fd2c2..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/cron/package.html
+++ /dev/null
@@ -1,21 +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.
--->
-<html>
-    <body>
-        <h2>Scheduler CRON Schedules.</h2>
-    </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/once/OnceSchedule.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/once/OnceSchedule.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/once/OnceSchedule.java
deleted file mode 100644
index 8c78cc6..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/once/OnceSchedule.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2010-2012, Paul Merlin. All Rights Reserved.
- * Copyright (c) 2012, Niclas Hedhman. All Rights Reserved.
- *
- * Licensed 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.library.scheduler.schedule.once;
-
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.library.scheduler.schedule.Schedule;
-
-@Mixins( OnceSchedule.OnceScheduleMixin.class )
-public interface OnceSchedule
-    extends Schedule
-{
-    abstract class OnceScheduleMixin
-        implements OnceSchedule
-    {
-        @Override
-        public void taskStarting()
-        {
-        }
-
-        @Override
-        public void taskCompletedSuccessfully()
-        {
-        }
-
-        @Override
-        public void taskCompletedWithException( Throwable ex )
-        {
-        }
-
-        @Override
-        public long nextRun( long from )
-        {
-            if( done().get() )
-            {
-                return Long.MIN_VALUE;
-            }
-            done().set( true );
-            long runAt = start().get().getMillis();
-            if( runAt >= from )
-            {
-                return runAt;
-            }
-            return from;
-        }
-
-        @Override
-        public String presentationString()
-        {
-            return start().get().toString();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/once/package.html
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/once/package.html b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/once/package.html
deleted file mode 100644
index c12fd5b..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/schedule/once/package.html
+++ /dev/null
@@ -1,21 +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.
--->
-<html>
-    <body>
-        <h2>Scheduler Once Schedules.</h2>
-    </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineForScheduleConcern.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineForScheduleConcern.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineForScheduleConcern.java
index 6bb5c3e..2ec856d 100644
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineForScheduleConcern.java
+++ b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineForScheduleConcern.java
@@ -26,7 +26,7 @@ import org.apache.zest.api.injection.scope.Structure;
 import org.apache.zest.api.injection.scope.This;
 import org.apache.zest.api.structure.Module;
 import org.apache.zest.api.value.ValueBuilder;
-import org.apache.zest.library.scheduler.schedule.Schedule;
+import org.apache.zest.library.scheduler.Schedule;
 
 public abstract class TimelineForScheduleConcern
     extends ConcernOf<Schedule>

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineScheduleMixin.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineScheduleMixin.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineScheduleMixin.java
index d66898e..01d9628 100644
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineScheduleMixin.java
+++ b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineScheduleMixin.java
@@ -21,12 +21,11 @@ import java.util.Collections;
 import java.util.List;
 import java.util.SortedSet;
 import java.util.TreeSet;
-import org.joda.time.DateTime;
 import org.apache.zest.api.injection.scope.Structure;
 import org.apache.zest.api.injection.scope.This;
 import org.apache.zest.api.structure.Module;
 import org.apache.zest.api.value.ValueBuilder;
-import org.apache.zest.library.scheduler.schedule.Schedule;
+import org.apache.zest.library.scheduler.Schedule;
 
 public class TimelineScheduleMixin
     implements Timeline

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineSchedulerServiceMixin.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineSchedulerServiceMixin.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineSchedulerServiceMixin.java
index 3e097b4..d04934c 100644
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineSchedulerServiceMixin.java
+++ b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/TimelineSchedulerServiceMixin.java
@@ -25,8 +25,8 @@ import org.apache.zest.api.structure.Module;
 import org.apache.zest.functional.Iterables;
 import org.apache.zest.library.scheduler.SchedulerService;
 import org.apache.zest.library.scheduler.SchedulesHandler;
-import org.apache.zest.library.scheduler.schedule.Schedule;
-import org.apache.zest.library.scheduler.schedule.Schedules;
+import org.apache.zest.library.scheduler.Schedule;
+import org.apache.zest.library.scheduler.internal.Schedules;
 
 /**
  * WARN TimelineService Mixin use SortedSets to keep records ordered and repeatedly search for the next run.

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java
index 76063f0..ad210a2 100644
--- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java
+++ b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java
@@ -22,13 +22,13 @@ package org.apache.zest.library.scheduler;
 
 import org.apache.zest.api.entity.EntityBuilder;
 import org.apache.zest.api.unitofwork.UnitOfWork;
+import org.apache.zest.api.value.ValueSerialization;
 import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
 import org.apache.zest.entitystore.memory.MemoryEntityStoreService;
-import org.apache.zest.library.scheduler.schedule.cron.CronSchedule;
 import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
 import org.apache.zest.test.AbstractZestTest;
-import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationAssembler;
+import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationService;
 import org.joda.time.DateTime;
 import org.junit.Test;
 
@@ -41,7 +41,8 @@ public class CronScheduleTest extends AbstractZestTest
     public void assemble( ModuleAssembly module )
         throws AssemblyException
     {
-        new OrgJsonValueSerializationAssembler().assemble( module );
+        module.services( OrgJsonValueSerializationService.class )
+            .taggedWith( ValueSerialization.Formats.JSON );
         module.services( MemoryEntityStoreService.class );
         module.services( UuidIdentityGeneratorService.class );
         module.entities( CronSchedule.class );

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java
index 5c0a226..15a356c 100644
--- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java
+++ b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java
@@ -27,7 +27,6 @@ import org.apache.zest.api.usecase.UsecaseBuilder;
 import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
 import org.apache.zest.library.scheduler.bootstrap.SchedulerAssembler;
-import org.apache.zest.library.scheduler.schedule.Schedule;
 import org.apache.zest.library.scheduler.timeline.Timeline;
 import org.joda.time.DateTime;
 import org.joda.time.Interval;

http://git-wip-us.apache.org/repos/asf/zest-java/blob/73b7f196/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java
index 9a78638..998d36b 100644
--- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java
+++ b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java
@@ -27,7 +27,7 @@ import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
 import org.apache.zest.api.unitofwork.concern.UnitOfWorkRetry;
 import org.apache.zest.library.scheduler.Scheduler;
 import org.apache.zest.library.scheduler.Task;
-import org.apache.zest.library.scheduler.schedule.Schedule;
+import org.apache.zest.library.scheduler.Schedule;
 import org.apache.zest.library.scheduler.timeline.Timeline;
 
 public class SchedulerDocs