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/06/16 02:33:55 UTC

[22/23] zest-java git commit: ZEST-156 - removed Scheduler Library, due to serious bug that is nearly impossible to fix.

ZEST-156 - removed Scheduler Library, due to serious bug that is nearly impossible to fix.


Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/8915dfaa
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/8915dfaa
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/8915dfaa

Branch: refs/heads/develop
Commit: 8915dfaab1b703eb868815f212d745d52ed8d1c0
Parents: ab96cf4
Author: Niclas Hedhman <ni...@hedhman.org>
Authored: Thu Jun 16 10:29:58 2016 +0800
Committer: Niclas Hedhman <ni...@hedhman.org>
Committed: Thu Jun 16 10:29:58 2016 +0800

----------------------------------------------------------------------
 libraries/scheduler/build.gradle                |  38 ---
 libraries/scheduler/dev-status.xml              |  38 ---
 libraries/scheduler/src/docs/scheduler.txt      | 195 -------------
 .../zest/library/scheduler/CronSchedule.java    | 121 --------
 .../zest/library/scheduler/OnceSchedule.java    |  69 -----
 .../apache/zest/library/scheduler/Schedule.java | 131 ---------
 .../zest/library/scheduler/ScheduleFactory.java |  41 ---
 .../zest/library/scheduler/Scheduler.java       | 138 ----------
 .../scheduler/SchedulerConfiguration.java       |  47 ----
 .../library/scheduler/SchedulerService.java     |  33 ---
 .../library/scheduler/SchedulesHandler.java     |  88 ------
 .../org/apache/zest/library/scheduler/Task.java |  78 ------
 .../scheduler/bootstrap/SchedulerAssembler.java | 118 --------
 .../library/scheduler/bootstrap/package.html    |  24 --
 .../defaults/DefaultRejectionHandler.java       |  39 ---
 .../defaults/DefaultScheduleFactoryMixin.java   |  91 ------
 .../defaults/DefaultThreadFactory.java          |  57 ----
 .../library/scheduler/defaults/package.html     |  24 --
 .../library/scheduler/internal/Execution.java   | 276 -------------------
 .../scheduler/internal/ScheduleTime.java        |  62 -----
 .../scheduler/internal/SchedulerMixin.java      | 194 -------------
 .../library/scheduler/internal/Schedules.java   |  28 --
 .../library/scheduler/internal/TaskRunner.java  | 115 --------
 .../library/scheduler/internal/package.html     |  24 --
 .../apache/zest/library/scheduler/package.html  |  24 --
 .../library/scheduler/schedule/package.html     |  24 --
 .../library/scheduler/timeline/Timeline.java    |  75 -----
 .../timeline/TimelineForScheduleConcern.java    |  93 -------
 .../scheduler/timeline/TimelineRecord.java      |  81 ------
 .../scheduler/timeline/TimelineRecordStep.java  |  28 --
 .../timeline/TimelineScheduleMixin.java         | 141 ----------
 .../timeline/TimelineScheduleState.java         |  30 --
 .../timeline/TimelineSchedulerServiceMixin.java | 110 --------
 .../library/scheduler/timeline/package.html     |  24 --
 .../scheduler/AbstractSchedulerTest.java        |  76 -----
 .../zest/library/scheduler/Constants.java       |  27 --
 .../library/scheduler/CronScheduleTest.java     |  78 ------
 .../apache/zest/library/scheduler/FooTask.java  |  77 ------
 .../zest/library/scheduler/SchedulerTest.java   | 206 --------------
 .../scheduler/docsupport/SchedulerDocs.java     |  99 -------
 .../src/test/resources/logback-test.xml         |  35 ---
 libraries/scheduler/test-repeatedly.sh          |  35 ---
 manual/src/docs/userguide/libraries.txt         |   4 -
 settings.gradle                                 |   1 -
 44 files changed, 3337 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/scheduler/build.gradle b/libraries/scheduler/build.gradle
deleted file mode 100644
index 520d01f..0000000
--- a/libraries/scheduler/build.gradle
+++ /dev/null
@@ -1,38 +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.
- *
- *
- */
-
-description = "Apache Zest\u2122 Schduler Library for long term timing functionalities."
-
-jar { manifest { name = "Apache Zest\u2122 Library - Scheduler" }}
-
-
-dependencies {
-    compile project( ":org.apache.zest.core:org.apache.zest.core.bootstrap" )
-    compile project( ':org.apache.zest.libraries:org.apache.zest.library.constraints' )
-    compile libraries.sked
-    compile libraries.slf4j_api
-
-    testCompile project( ":org.apache.zest.core:org.apache.zest.core.testsupport" )
-    testCompile project( ":org.apache.zest.extensions:org.apache.zest.extension.indexing-rdf" )
-    testCompile libraries.awaitility
-
-    testRuntime project( ":org.apache.zest.core:org.apache.zest.core.runtime" )
-    testRuntime libraries.logback
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/dev-status.xml
----------------------------------------------------------------------
diff --git a/libraries/scheduler/dev-status.xml b/libraries/scheduler/dev-status.xml
deleted file mode 100644
index 55032e6..0000000
--- a/libraries/scheduler/dev-status.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  ~  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.
-  ~
-  ~
-  -->
-<module xmlns="http://zest.apache.org/schemas/2008/dev-status/1"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://zest.apache.org/schemas/2008/dev-status/1
-        http://zest.apache.org/schemas/2008/dev-status/1/dev-status.xsd">
-  <status>
-    <!--none,early,beta,stable,mature-->
-    <codebase>early</codebase>
-
-    <!-- none, brief, good, complete -->
-    <documentation>good</documentation>
-
-    <!-- none, some, good, complete -->
-    <unittests>good</unittests>
-  </status>
-  <licenses>
-    <license>ALv2</license>
-  </licenses>
-</module>

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/docs/scheduler.txt
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/docs/scheduler.txt b/libraries/scheduler/src/docs/scheduler.txt
deleted file mode 100644
index a5ab18d..0000000
--- a/libraries/scheduler/src/docs/scheduler.txt
+++ /dev/null
@@ -1,195 +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.
-///////////////////////////////////////////////////////////////
-
-[[library-scheduler,Scheduler Library]]
-= Scheduler =
-
-[devstatus]
---------------
-source=libraries/scheduler/dev-status.xml
---------------
-
-The Scheduler library provides an easy way to schedule tasks either for one time execution, CRON expression intervals or a custom algorithm.
-
-An optional Timeline allows you to browse past and future task runs.
-
-include::../../build/docs/buildinfo/artifact.txt[]
-
-== Logging ==
-
-The SLF4J Logger used by this library is named "org.apache.zest.library.scheduler".
-
-== Assembly ==
-
-Use SchedulerAssembler to add the Scheduler service to your Application. This
-Assembler provide a fluent api to programmatically configure configuration defaults and activate the
-Timeline service assembly that allow browsing of past and future Task runs.
-
-Here is a full example:
-
-[snippet,java]
-----
-source=libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/SchedulerTest.java
-tag=assembly
-----
-
-== Configuration ==
-
-SchedulerConfiguration defines configuration properties details:
-
-[snippet,java]
-----
-source=libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulerConfiguration.java
-tag=configuration
-----
-
-== Writing Tasks ==
-
-To write a schedulable Task, compose an Entity with the Task type to be able to schedule it.
-
-The Task contract is quite simple:
-
-[snippet,java]
-----
-source=libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Task.java
-tag=task
-----
-
-Tasks have a mandatory name property and an optional tags property. These properties get copied in
-each TimelineRecord created when the Timeline feature is activated.
-
-The run() method of Tasks is wrapped in a UnitOfWork when called by the Scheduler.
-Thanks to the UnitOfWork handling in Zest, you can split the work done in your Tasks in
-several UnitOfWorks. See UnitOfWork strategy below.
-
-Here is a simple example:
-
-[snippet,java]
------------
-source=libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java
-tag=1
------------
-
-== Scheduling Tasks ==
-
-Tasks are scheduled using the Scheduler service. This creates a Schedule associated to
-the Task that allows you to know if it is running, to change it's cron expression and set it's
-durability.
-
-All Schedules are durable. In other words, it will survive an Application restart, and your application should
-not schedule it again, as the Schedules are when the SchedulerService is activated after bootstrap.
-
-There are three ways to schedule a Task using the Scheduler service: once or with a cron
-expression or providing your own Schedule instance.
-
-=== Scheduling once ===
-
-This is the easiest way to run a background Task once after a given initial delay in seconds.
-
-[snippet,java]
------------
-source=libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java
-tag=2
------------
-
-Since all Schedules are durable, this "once" can be far into the future, and still be executed if the application
-has been restarted.
-
-
-=== Scheduling using a cron expression ===
-
-Cron expression parsing is based on the GNU crontab manpage that can be found here:
-http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5 .
-
-The following extensions are used:
-
-- a mandatory field is added at the begining: seconds.
-- a special string is added: @minutely
-- a special character is added: ? to choose between dayOfMonth and dayOfWeek
-
-The ? special char has the same behavior as in the Quartz Scheduler expression. The wikipedia page
-http://en.wikipedia.org/wiki/CRON_expression
-explains Quartz Scheduler expression, not simple cron expressions. You'll find there about the ? special
-char and maybe that some other extensions you would like to use are missing in this project.
-
-To sum up, cron expressions used here have a precision of one second. The following special strings can be used:
-
-- @minutely
-- @hourly
-- @midnight or @daily
-- @weekly
-- @monthly
-- @annualy or @yearly
-
-
-== Overrun ==
-If the Schedule is running when it is time to be executed, then the execution will be skipped. This means that
-the Task must complete within its period, or executions will be skipped. The sideeffect of that is that this
-reduces thread exhaustion.
-
-When the Task execution is skipped, the overrun() property on the Schedule is incremented by 1.
-
-== Durability ==
-All Schedules are durable and the Task must be an Entity Composite. It also means that Tasks should be schedule
-once and not on each reboot. The SchedulerService will load all Schedules on activation.
-
-While the Task is running, the Schedule will be held in the UnitOfWork of the TaskRunner. This means that IF the
-Schedule is updated, i.e. cancelled or directly manipulating Schedule properties, the UnitOfWork.complete() will fail.
-And if the Task is executing within the same UnitOfWork, any changes made will not take place.
-
-== UnitOfWork strategy ==
-The TaskRunner creates a UnitOfWork and the Task is excuted within that UnitOfWork. This may be very convenient, but
-as noted in Durability above, that UnitOfWork will fail if Schedule properties are updated while the Task is
-running. To avoid that the Task's operations suffers from this, OR if the Task wants a Retry/DiscardOn strategy
-different from the default one, then the Task can simply declare its own. such as;
-
-[snippet,java]
------------
-source=libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java
-tag=strategy
------------
-
-== Custom Schedules ==
-It is possible to implement Schedule directly. It must be declared as an EntityComposite in the assembly, and be
-visible from the SchedulerService. No other considerations should be necessary.
-
-== Observing the Timeline ==
-
-Timeline allow to browse in past and future Task runs. This feature is available only if you activate
-the Timeline assembly in the SchedulerAssembler}, see above.
-
-Once activated, Task success and failures are recorded. Then, the Timeline
-service allow to browse in past (recorded) and in anticipated (future) Task runs.
-
-Use the following in your code to get a Timeline Service injected:
-
-[snippet,java]
------------
-source=libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/docsupport/SchedulerDocs.java
-tag=timeline
------------
-
-Here is the actual Timeline contract:
-
-[snippet,java]
-----
-source=libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/timeline/Timeline.java
-tag=timeline
-----
-

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/CronSchedule.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/CronSchedule.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/CronSchedule.java
deleted file mode 100644
index 5270da0..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/CronSchedule.java
+++ /dev/null
@@ -1,121 +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.library.scheduler;
-
-import java.lang.annotation.Retention;
-import java.time.Instant;
-import org.apache.zest.api.constraint.Constraint;
-import org.apache.zest.api.constraint.ConstraintDeclaration;
-import org.apache.zest.api.constraint.Constraints;
-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.constraints.annotation.InstanceOf;
-import org.apache.zest.library.constraints.annotation.NotEmpty;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-@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 Instant nextRun( Instant from )
-        {
-            Instant actualFrom = from;
-            Instant firstRun = start().get();
-            if( firstRun.isAfter(from ))
-            {
-                actualFrom = firstRun;
-            }
-            // TODO:PM cron "next run" handling mismatch with the underlying cron library
-            Instant nextRun = Instant.ofEpochMilli(
-                createCron().firstRunAfter( actualFrom.plusSeconds( 1 ).toEpochMilli())
-            );
-            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() );
-        }
-    }
-
-    @ConstraintDeclaration
-    @Retention( RUNTIME )
-    @NotEmpty
-    @InstanceOf( String.class )
-    @Constraints( CronExpressionConstraint.class )
-    @interface CronExpression
-    {
-    }
-
-    class CronExpressionConstraint
-        implements Constraint<CronExpression, String>
-    {
-        private static final long serialVersionUID = 1L;
-
-        @Override
-        public boolean isValid( CronExpression annotation, String cronExpression )
-        {
-            return org.codeartisans.sked.cron.CronSchedule.isExpressionValid( cronExpression );
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/OnceSchedule.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/OnceSchedule.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/OnceSchedule.java
deleted file mode 100644
index 7421882..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/OnceSchedule.java
+++ /dev/null
@@ -1,69 +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.library.scheduler;
-
-import java.time.Instant;
-import org.apache.zest.api.mixin.Mixins;
-
-@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 Instant nextRun( Instant from )
-        {
-            if( done().get() )
-            {
-                return Instant.MIN;
-            }
-            done().set( true );
-            Instant runAt = start().get();
-            if( runAt.isAfter( from ) )
-            {
-                return runAt;
-            }
-            return from;
-        }
-
-        @Override
-        public String presentationString()
-        {
-            return start().get().toString();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Schedule.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Schedule.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Schedule.java
deleted file mode 100644
index 6d7191d..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Schedule.java
+++ /dev/null
@@ -1,131 +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.library.scheduler;
-
-import java.time.Instant;
-import java.time.ZonedDateTime;
-import org.apache.zest.api.association.Association;
-import org.apache.zest.api.common.UseDefaults;
-import org.apache.zest.api.entity.EntityComposite;
-import org.apache.zest.api.property.Immutable;
-import org.apache.zest.api.property.Property;
-
-/**
- * Represent the scheduling of a {@link Task}.
- */
-public interface Schedule extends EntityComposite
-{
-    /**
-     * @return The Association to the Task to be executed when it is time.
-     */
-    Association<Task> task();
-
-    /** The first run of this Schedule.
-     *
-     * @return The property containing the first time this Schedule will be run.
-     */
-    @Immutable
-    Property<Instant> start();
-
-    /** Returns true if the Schedule has been cancelled.
-     *
-     * @return true if the Schedule has been cancelled.
-     */
-    @UseDefaults
-    Property<Boolean> cancelled();
-
-    /** Returns true if the Schedule is currently running.
-     *
-     * @return true if the Schedule is currently running.
-     */
-    @UseDefaults
-    Property<Boolean> running();
-
-    /** Returns the number of times the {@link Task} has been executed.
-     * <p>
-     * Each time the {@link Task#run} method completes, with or without an {@link Exception}, this
-     * counter is incremented by 1.
-     * </p>
-     *
-     * @return true the number of Exception that has occurred when running the {@link Task}.
-     */
-    @UseDefaults
-    Property<Long> executionCounter();
-
-    /** Returns the number of Exception that has occurred when running the {@link Task}.
-     * <p>
-     * Each time the {@link Task#run} method throws a {@link RuntimeException}, this property
-     * is incremenented by 1,
-     * </p>
-     *
-     * @return true the number of Exception that has occurred when running the {@link Task}.
-     */
-    @UseDefaults
-    Property<Long> exceptionCounter();
-
-    /** Returns true if the Schedule is done and will not be executed any more times.
-     *
-     * @return true if the Schedule is done and will not be executed any more times.
-     */
-    @UseDefaults
-    Property<Boolean> done();
-
-    /** Returns the number of times the Schedule has been skipped, due to the Task was still running.
-     *
-      * @return the number of times the Schedule has been skipped, due to the Task was still running.
-     */
-    @UseDefaults
-    Property<Long> overrun();
-
-    /**
-     * Called just before the {@link org.apache.zest.library.scheduler.Task#run()} method is called.
-     */
-    void taskStarting();
-
-    /**
-     * Called directly after the {@link org.apache.zest.library.scheduler.Task#run()} method has been completed and
-     * returned from the method normally.
-     */
-    void taskCompletedSuccessfully();
-
-    /**
-     * Called directly after the {@link org.apache.zest.library.scheduler.Task#run()} method has been completed but
-     * threw a RuntimeException.
-     * @param ex The execption that was thrown in the Task. If the thrown Exception was an
-     *           {@link java.lang.reflect.UndeclaredThrowableException} then the underlying exception is passed here.
-     */
-    void taskCompletedWithException( Throwable ex );
-
-    /**
-     * Compute the next time this schedule is to be run.
-     *
-     * @param from The starting time when to look for the next time it will run.
-     *
-     * @return The exact absolute time when this Schedule is to be run next time, or -1 if never
-     */
-    Instant nextRun( Instant from );
-
-    /**
-     * Return a representation of the Schedule in a human understandable format.
-     *
-     * @return A String representing this schedule.
-     */
-    String presentationString();
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/ScheduleFactory.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/ScheduleFactory.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/ScheduleFactory.java
deleted file mode 100644
index c5fdd81..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/ScheduleFactory.java
+++ /dev/null
@@ -1,41 +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.library.scheduler;
-
-import java.time.Instant;
-import java.time.ZonedDateTime;
-import org.apache.zest.api.concern.Concerns;
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkConcern;
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
-import org.apache.zest.library.scheduler.defaults.DefaultScheduleFactoryMixin;
-import org.apache.zest.api.mixin.Mixins;
-
-import static org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation.Propagation.MANDATORY;
-
-@Mixins( DefaultScheduleFactoryMixin.class )
-@Concerns( UnitOfWorkConcern.class )
-public interface ScheduleFactory
-{
-    @UnitOfWorkPropagation( MANDATORY)
-    Schedule newCronSchedule( Task task, String cronExpression, Instant start );
-
-    @UnitOfWorkPropagation( MANDATORY)
-    Schedule newOnceSchedule( Task task, Instant runAt );
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Scheduler.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Scheduler.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Scheduler.java
deleted file mode 100644
index ac081d6..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Scheduler.java
+++ /dev/null
@@ -1,138 +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.library.scheduler;
-
-import java.time.Instant;
-import org.apache.zest.library.scheduler.internal.Schedules;
-import org.apache.zest.api.concern.Concerns;
-import org.apache.zest.api.structure.Application;
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkConcern;
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
-import org.apache.zest.library.scheduler.bootstrap.SchedulerAssembler;
-import org.apache.zest.library.scheduler.timeline.Timeline;
-
-import static org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation.Propagation.MANDATORY;
-
-/**
- * Scheduler.
- * <p>
- * This is the only interface you should use in your application for scheduling tasks.
- * </p>
- * <p>
- * See {@link SchedulerConfiguration} for configuration properties.
- * </p>
- * <p>
- * See in {@link SchedulerAssembler} how to assemble a {@link Scheduler} and optional {@link Timeline}.
- * </p>
- * <p>
- * By default, a {@link Schedule} is not durable. In other words, it do not survive an {@link Application} restart.
- * </p>
- * <p>
- * All {@link Schedule}s are durable and stored in the visible {@link org.apache.zest.spi.entitystore.EntityStore} like
- * any ordinary {@link org.apache.zest.api.entity.EntityComposite}. There is also a {@link Schedules}
- * entity composite that has Associations to all active, completed and cancelled schedules.
- * </p>
- */
-@Concerns( UnitOfWorkConcern.class )
-public interface Scheduler
-{
-    /**
-     * Schedule a Task to be run after a given initial delay in seconds.
-     *
-     * @param task                Task to be scheduled once
-     * @param initialSecondsDelay Initial delay the Task will be run after, in seconds
-     *
-     * @return The newly created Schedule
-     */
-    @UnitOfWorkPropagation( MANDATORY )
-    Schedule scheduleOnce( Task task, int initialSecondsDelay );
-
-    /**
-     * Schedule a Task to be run after a given initial delay in seconds.
-     *
-     * @param task  Task to be scheduled once
-     * @param runAt The future point in time when the Schedule will be run.
-     *
-     * @return The newly created Schedule
-     */
-    @UnitOfWorkPropagation( MANDATORY )
-    Schedule scheduleOnce( Task task, Instant runAt );
-
-    /**
-     * Schedule a Task using a CronExpression.
-     *
-     * @param task           Task to be scheduled once
-     * @param cronExpression CronExpression for creating the Schedule for the given Task
-     *
-     * @return The newly created Schedule
-     */
-    @UnitOfWorkPropagation( MANDATORY )
-    Schedule scheduleCron( Task task, @CronSchedule.CronExpression String cronExpression );
-
-    /**
-     * Schedule a Task using a CronExpression with a given initial delay in milliseconds.
-     *
-     * @param task           Task to be scheduled once
-     * @param cronExpression CronExpression for creating the Schedule for the given Task
-     * @param initialDelay   Initial delay the Schedule will be active after, in milliseconds
-     *
-     * @return The newly created Schedule
-     */
-    @UnitOfWorkPropagation( MANDATORY )
-    Schedule scheduleCron( Task task, @CronSchedule.CronExpression String cronExpression, long initialDelay );
-
-    /**
-     * Schedule a Task using a CronExpression starting at a given date.
-     *
-     * @param task           Task to be scheduled once
-     * @param cronExpression CronExpression for creating the Schedule for the given Task
-     * @param start          Date from which the Schedule will become active
-     *
-     * @return The newly created Schedule
-     */
-    @UnitOfWorkPropagation( MANDATORY )
-    Schedule scheduleCron( Task task, @CronSchedule.CronExpression String cronExpression, Instant start );
-
-    /** Schedules a custom Schedule.
-     *
-     *
-     * @param schedule The Schedule instance to be scheduled.
-     */
-    @UnitOfWorkPropagation( MANDATORY )
-    void scheduleCron( Schedule schedule );
-
-    /** Cancels a Schedule.
-     * Reads the Schedule from the EntityStore and calls {@link #cancelSchedule(Schedule)}.
-     *
-     * @param scheduleId The identity of the Schedule to be cancelled.
-     */
-    @UnitOfWorkPropagation( MANDATORY )
-    void cancelSchedule( String scheduleId );
-
-    /** Cancels the provided Schedule.
-     *
-     * Cancellation can be done before, while and after execution of the Schedule. If the execution
-     * is in progress, it will not be interrupted.
-     *
-     * @param schedule The schedule to be cancelled.
-     */
-    @UnitOfWorkPropagation( MANDATORY )
-    public void cancelSchedule( Schedule schedule );
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulerConfiguration.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulerConfiguration.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulerConfiguration.java
deleted file mode 100644
index 73fbb84..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulerConfiguration.java
+++ /dev/null
@@ -1,47 +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.library.scheduler;
-
-import org.apache.zest.api.common.Optional;
-import org.apache.zest.api.common.UseDefaults;
-import org.apache.zest.api.property.Property;
-
-/**
- * Configuration for the {@link Scheduler}.
- *
- * Every property has a default value, you can use a {@link Scheduler} without providing any.
- */
-public interface SchedulerConfiguration
-{
-// START SNIPPET: configuration
-    /**
-     * @return Number of worker threads, optional and defaults to the number of available cores.
-     */
-    @Optional @UseDefaults
-    Property<Integer> workersCount();
-
-    /**
-     * @return Size of the queue to use for holding tasks before they are run, optional and defaults to 10.
-     */
-    @Optional @UseDefaults
-    Property<Integer> workQueueSize();
-
-// END SNIPPET: configuration
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulerService.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulerService.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulerService.java
deleted file mode 100644
index c71717c..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulerService.java
+++ /dev/null
@@ -1,33 +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.library.scheduler;
-
-import org.apache.zest.api.entity.Identity;
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.service.ServiceActivation;
-import org.apache.zest.library.scheduler.defaults.DefaultRejectionHandler;
-import org.apache.zest.library.scheduler.defaults.DefaultThreadFactory;
-import org.apache.zest.library.scheduler.internal.SchedulerMixin;
-
-@Mixins( { SchedulerMixin.class, DefaultThreadFactory.class, DefaultRejectionHandler.class } )
-public interface SchedulerService
-    extends Scheduler, ServiceActivation, Identity
-{
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulesHandler.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulesHandler.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulesHandler.java
deleted file mode 100644
index a9b4602..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/SchedulesHandler.java
+++ /dev/null
@@ -1,88 +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.library.scheduler;
-
-import org.apache.zest.api.entity.Identity;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.injection.scope.This;
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.unitofwork.NoSuchEntityException;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
-import org.apache.zest.library.scheduler.internal.Schedules;
-
-@Mixins( SchedulesHandler.SchedulesHandlerMixin.class )
-public interface SchedulesHandler
-{
-    @UnitOfWorkPropagation( UnitOfWorkPropagation.Propagation.MANDATORY )
-    Schedules getActiveSchedules();
-
-    @UnitOfWorkPropagation( UnitOfWorkPropagation.Propagation.MANDATORY )
-    Schedules getCancelledSchedules();
-
-    class SchedulesHandlerMixin implements SchedulesHandler
-    {
-        @This
-        private Identity me;
-
-        @Structure
-        private UnitOfWorkFactory module;
-
-        @Override
-        public Schedules getActiveSchedules()
-        {
-            return getOrCreateSchedules( getActiveSchedulesIdentity() );
-        }
-
-        @Override
-        public Schedules getCancelledSchedules()
-        {
-            return getOrCreateSchedules( getCancelledSchedulesIdentity() );
-        }
-
-        public String getActiveSchedulesIdentity()
-        {
-            return "Schedules-Active:" + me.identity().get();
-        }
-
-        public String getCancelledSchedulesIdentity()
-        {
-            return "Schedules-Cancelled:" + me.identity().get();
-        }
-
-        private Schedules getOrCreateSchedules( String identity )
-        {
-            UnitOfWork uow = module.currentUnitOfWork();
-            Schedules schedules;
-            try
-            {
-                schedules = uow.get( Schedules.class, identity );
-            }
-            catch( NoSuchEntityException e )
-            {
-                // Create a new Schedules entity for keeping track of them all.
-                schedules = uow.newEntity( Schedules.class, identity );
-            }
-            return schedules;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Task.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Task.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Task.java
deleted file mode 100644
index edd67ba..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/Task.java
+++ /dev/null
@@ -1,78 +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.library.scheduler;
-
-import java.util.List;
-import org.apache.zest.api.common.UseDefaults;
-import org.apache.zest.api.concern.Concerns;
-import org.apache.zest.api.property.Property;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkConcern;
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
-
-/**
- * Compose an Entity using this type to be able to Schedule it.
- *<p>
- * A Task is associated from a {@link Schedule}, and upon time to execute
- * the SchedulerService will dispatch a TaskRunner in a new thread, and establish a UnitOfWork (Usecase name of "Task Runner").
- *</p>
- *<p>
- * The {@code Task} type declares the {@link UnitOfWorkConcern} and therefor the {@code Task} implementation may
- * declare the {@link UnitOfWorkPropagation} annotation with the
- * {@link org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation.Propagation#REQUIRES_NEW} and a different
- * {@link UnitOfWork} strategy, such as {@code Retries} and {@code DiscardOn}.
- *
- *</p>
- *
- * Here is a simple example:
- * <pre><code>
- *  interface MyTask
- *      extends Task
- *  {
- *      Property&lt;String customState();
- *      Association&lt;AnotherEntity&gt; anotherEntity();
- *  }
- *
- *  class MyTaskMixin
- *      implements Runnable
- *  {
- *      &#64;This MyTaskEntity me;
- *
- *      public void run()
- *      {
- *          me.customState().set( me.anotherEntity().get().doSomeStuff( me.customState().get() ) );
- *      }
- *  }
- * </code></pre>
- *
- * Finaly, {@literal MyTask} must be assembled into an {@literal EntityComposite}.
- */
-// START SNIPPET: task
-@Concerns( UnitOfWorkConcern.class )
-public interface Task
-    extends Runnable
-{
-    Property<String> name();
-
-    @UseDefaults
-    Property<List<String>> tags();
-
-}
-// END SNIPPET: task

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/bootstrap/SchedulerAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/bootstrap/SchedulerAssembler.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/bootstrap/SchedulerAssembler.java
deleted file mode 100644
index 7ff8d93..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/bootstrap/SchedulerAssembler.java
+++ /dev/null
@@ -1,118 +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.library.scheduler.bootstrap;
-
-import org.apache.zest.api.unitofwork.concern.UnitOfWorkConcern;
-import org.apache.zest.bootstrap.Assemblers;
-import org.apache.zest.bootstrap.AssemblyException;
-import org.apache.zest.bootstrap.EntityDeclaration;
-import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.bootstrap.ServiceDeclaration;
-import org.apache.zest.bootstrap.ValueDeclaration;
-import org.apache.zest.library.scheduler.SchedulerConfiguration;
-import org.apache.zest.library.scheduler.SchedulerService;
-import org.apache.zest.library.scheduler.internal.TaskRunner;
-import org.apache.zest.library.scheduler.ScheduleFactory;
-import org.apache.zest.library.scheduler.internal.Schedules;
-import org.apache.zest.library.scheduler.CronSchedule;
-import org.apache.zest.library.scheduler.OnceSchedule;
-import org.apache.zest.library.scheduler.timeline.Timeline;
-import org.apache.zest.library.scheduler.timeline.TimelineForScheduleConcern;
-import org.apache.zest.library.scheduler.timeline.TimelineRecord;
-import org.apache.zest.library.scheduler.timeline.TimelineScheduleMixin;
-import org.apache.zest.library.scheduler.timeline.TimelineSchedulerServiceMixin;
-
-/**
- * Assembler for Scheduler.
- *
- * Use this Assembler to add the Scheduler service to your application.
- * This Assembler provide a fluent api to programmatically configure configuration defaults and
- * activate the Timeline service assembly that allow to browse in past and future Task runs.
- *
- * Here is a full example:
- * <pre>
- *      new SchedulerAssembler().
- *              visibleIn( Visibility.layer ).
- *              withConfig( configModuleAssembly, Visibility.application ).
- *              withTimeline().
- *              assemble( module );
- * </pre>
- */
-public class SchedulerAssembler
-    extends Assemblers.VisibilityConfig<SchedulerAssembler>
-{
-
-    private static final int DEFAULT_WORKERS_COUNT = Runtime.getRuntime().availableProcessors() + 1;
-    private static final int DEFAULT_WORKQUEUE_SIZE = 10;
-
-    private boolean timeline;
-
-    /**
-     * Activate the assembly of Timeline related services.
-     *
-     * @return SchedulerAssembler
-     */
-    public SchedulerAssembler withTimeline()
-    {
-        timeline = true;
-        return this;
-    }
-
-    @Override
-    public void assemble( ModuleAssembly assembly )
-        throws AssemblyException
-    {
-        assembly.services( ScheduleFactory.class );
-        assembly.entities( Schedules.class );
-        EntityDeclaration scheduleEntities = assembly.entities( CronSchedule.class, OnceSchedule.class );
-
-        ValueDeclaration scheduleValues = assembly.values( CronSchedule.class, OnceSchedule.class );
-
-        ServiceDeclaration schedulerDeclaration = assembly.services( SchedulerService.class )
-            .visibleIn( visibility() )
-            .instantiateOnStartup();
-
-        assembly.transients( Runnable.class ).withMixins( TaskRunner.class ).withConcerns( UnitOfWorkConcern.class );
-
-        if( timeline )
-        {
-            scheduleEntities.withTypes( Timeline.class )
-                .withMixins( TimelineScheduleMixin.class )
-                .withConcerns( TimelineForScheduleConcern.class );
-
-            scheduleValues.withTypes( Timeline.class )
-                .withMixins( TimelineScheduleMixin.class )
-                .withConcerns( TimelineForScheduleConcern.class );
-
-            // Internal
-            assembly.values( TimelineRecord.class );
-            schedulerDeclaration.withTypes( Timeline.class ).withMixins( TimelineSchedulerServiceMixin.class );
-        }
-
-        if( hasConfig() )
-        {
-            configModule().entities( SchedulerConfiguration.class )
-                .visibleIn( configVisibility() );
-            SchedulerConfiguration defaults = assembly.forMixin( SchedulerConfiguration.class ).declareDefaults();
-            defaults.workersCount().set( DEFAULT_WORKERS_COUNT );
-            defaults.workQueueSize().set( DEFAULT_WORKQUEUE_SIZE );
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/bootstrap/package.html
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/bootstrap/package.html b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/bootstrap/package.html
deleted file mode 100644
index 6466780..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/bootstrap/package.html
+++ /dev/null
@@ -1,24 +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 Assembly.</h2>
-    </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultRejectionHandler.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultRejectionHandler.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultRejectionHandler.java
deleted file mode 100644
index 2b5b2e3..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultRejectionHandler.java
+++ /dev/null
@@ -1,39 +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.library.scheduler.defaults;
-
-import java.util.concurrent.RejectedExecutionHandler;
-import java.util.concurrent.ThreadPoolExecutor;
-import org.apache.zest.library.scheduler.SchedulerService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DefaultRejectionHandler
-    implements RejectedExecutionHandler
-{
-    private static final Logger LOGGER = LoggerFactory.getLogger( SchedulerService.class );
-
-    @Override
-    public void rejectedExecution( Runnable r, ThreadPoolExecutor executor )
-    {
-        LOGGER.error( "Runnable [" + r + "] was rejected by executor [" + executor + "]" );
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultScheduleFactoryMixin.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultScheduleFactoryMixin.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultScheduleFactoryMixin.java
deleted file mode 100644
index 2d21e27..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultScheduleFactoryMixin.java
+++ /dev/null
@@ -1,91 +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.library.scheduler.defaults;
-
-import java.time.Instant;
-import org.apache.zest.api.entity.EntityBuilder;
-import org.apache.zest.api.injection.scope.Service;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.library.scheduler.CronSchedule;
-import org.apache.zest.library.scheduler.OnceSchedule;
-import org.apache.zest.library.scheduler.Schedule;
-import org.apache.zest.library.scheduler.ScheduleFactory;
-import org.apache.zest.library.scheduler.SchedulerService;
-import org.apache.zest.library.scheduler.Task;
-import org.apache.zest.spi.uuid.UuidIdentityGeneratorService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DefaultScheduleFactoryMixin
-    implements ScheduleFactory
-{
-    private static final Logger logger = LoggerFactory.getLogger( ScheduleFactory.class );
-
-    @Structure
-    private UnitOfWorkFactory uowf;
-
-    @Service
-    private SchedulerService scheduler;
-
-    @Service
-    private UuidIdentityGeneratorService uuid;
-
-    @Override
-    public CronSchedule newCronSchedule( Task task, String cronExpression, Instant start )
-    {
-        return newPersistentCronSchedule( task, cronExpression, start );
-    }
-
-    @Override
-    public Schedule newOnceSchedule( Task task, Instant runAt )
-    {
-        return newPersistentOnceSchedule( task, runAt );
-    }
-
-    private CronSchedule newPersistentCronSchedule( Task task, String cronExpression, Instant start )
-    {
-        UnitOfWork uow = uowf.currentUnitOfWork();
-        EntityBuilder<CronSchedule> builder = uow.newEntityBuilder( CronSchedule.class );
-        CronSchedule instance = builder.instance();
-        instance.task().set( task );
-        instance.start().set( start );
-        instance.identity().set( uuid.generate( CronSchedule.class ) );
-        instance.cronExpression().set( cronExpression );
-        CronSchedule schedule = builder.newInstance();
-        logger.info( "Schedule {} created: {}", schedule.presentationString(), schedule.identity().get() );
-        return schedule;
-    }
-
-    private Schedule newPersistentOnceSchedule( Task task, Instant runAt )
-    {
-        UnitOfWork uow = uowf.currentUnitOfWork();
-        EntityBuilder<OnceSchedule> builder = uow.newEntityBuilder( OnceSchedule.class );
-        OnceSchedule builderInstance = builder.instance();
-        builderInstance.task().set( task );
-        builderInstance.start().set( runAt );
-        builderInstance.identity().set( uuid.generate( OnceSchedule.class ) );
-        OnceSchedule schedule = builder.newInstance();
-        logger.info( "Schedule {} created: {}", schedule.presentationString(), schedule.identity().get() );
-        return schedule;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultThreadFactory.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultThreadFactory.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultThreadFactory.java
deleted file mode 100644
index 85d137c..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/DefaultThreadFactory.java
+++ /dev/null
@@ -1,57 +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.library.scheduler.defaults;
-
-import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.zest.api.injection.scope.This;
-import org.apache.zest.library.scheduler.internal.Execution;
-import org.apache.zest.library.scheduler.SchedulerService;
-
-public class DefaultThreadFactory
-    implements java.util.concurrent.ThreadFactory
-{
-    private static final AtomicInteger POOL_NUMBER = new AtomicInteger( 1 );
-    private final ThreadGroup group;
-    private final AtomicInteger threadNumber = new AtomicInteger( 1 );
-    private final String namePrefix;
-
-    protected DefaultThreadFactory( @This SchedulerService me )
-    {
-        SecurityManager sm = System.getSecurityManager();
-        group = ( sm != null ) ? sm.getThreadGroup() : Execution.ExecutionMixin.TG;
-        namePrefix = me.identity().get() + "-P" + POOL_NUMBER.getAndIncrement() + "W";
-    }
-
-    @Override
-    public Thread newThread( Runnable runnable )
-    {
-        Thread thread = new Thread( group, runnable, namePrefix + threadNumber.getAndIncrement(), 0 );
-        if( thread.isDaemon() )
-        {
-            thread.setDaemon( false );
-        }
-        if( thread.getPriority() != Thread.NORM_PRIORITY )
-        {
-            thread.setPriority( Thread.NORM_PRIORITY );
-        }
-        return thread;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/package.html
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/package.html b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/package.html
deleted file mode 100644
index 86177ff..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/defaults/package.html
+++ /dev/null
@@ -1,24 +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 Defaults.</h2>
-    </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Execution.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Execution.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Execution.java
deleted file mode 100644
index 6ca01af..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Execution.java
+++ /dev/null
@@ -1,276 +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.library.scheduler.internal;
-
-import java.time.Duration;
-import java.time.Instant;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionHandler;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import org.apache.zest.api.composite.TransientBuilderFactory;
-import org.apache.zest.api.configuration.Configuration;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.injection.scope.This;
-import org.apache.zest.api.mixin.Mixins;
-import org.apache.zest.api.unitofwork.NoSuchEntityException;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.library.scheduler.Schedule;
-import org.apache.zest.library.scheduler.Scheduler;
-import org.apache.zest.library.scheduler.SchedulerConfiguration;
-
-/**
- * This composite handles the Execution of Schedules.
- *
- * The composite is internal and should never be used by clients.
- */
-@Mixins( Execution.ExecutionMixin.class )
-public interface Execution
-{
-    void dispatchForExecution( Schedule schedule );
-
-    void start()
-        throws Exception;
-
-    void stop()
-        throws Exception;
-
-    void updateNextTime( ScheduleTime schedule );   // This method is public, only because the UnitOfWorkConcern is wanted.
-
-    class ExecutionMixin
-        implements Execution, Runnable
-    {
-        public static final ThreadGroup TG = new ThreadGroup( "Zest Scheduling" );
-
-        private final Object lock = new Object();
-
-        @Structure
-        private UnitOfWorkFactory uowf;
-
-        @Structure
-        private TransientBuilderFactory tbf;
-
-        @This
-        private Scheduler scheduler;
-
-        @This
-        private Configuration<SchedulerConfiguration> config;
-
-        @This
-        private ThreadFactory threadFactory;
-
-        @This
-        private RejectedExecutionHandler rejectionHandler;
-
-        private final SortedSet<ScheduleTime> timingQueue = new TreeSet<>();
-        private volatile boolean running;
-        private ThreadPoolExecutor taskExecutor;
-        private volatile Thread scheduleThread;
-
-        @Override
-        public void run()
-        {
-            running = true;
-            while( running )
-            {
-                try
-                {
-                    ScheduleTime scheduleTime = timing();
-                    if( scheduleTime != null )
-                    {
-                        waitFor( scheduleTime );
-
-                        if( isTime( scheduleTime ) ) // We might have been awakened to reschedule
-                        {
-                            updateNextTime( scheduleTime );
-                        }
-                    }
-                    else
-                    {
-                        waitFor( 100 );
-                    }
-                }
-                catch( Throwable e )
-                {
-                    e.printStackTrace();
-                }
-            }
-        }
-
-        private ScheduleTime timing()
-        {
-            synchronized( lock )
-            {
-                if( timingQueue.size() == 0 )
-                {
-                    return null;
-                }
-                return timingQueue.first();
-            }
-        }
-
-        private boolean isTime( ScheduleTime scheduleTime )
-        {
-            return scheduleTime.nextTime().isBefore( Instant.now() );
-        }
-
-        private void waitFor( ScheduleTime scheduleTime )
-            throws InterruptedException
-        {
-            Duration waitingTime = Duration.between( Instant.now(), scheduleTime.nextTime() );
-            waitFor( waitingTime.toMillis() );
-        }
-
-        private void waitFor( long waitingTime )
-        {
-            if( waitingTime > 0 )
-            {
-                synchronized( lock )
-                {
-                    try
-                    {
-                        lock.wait( waitingTime );
-                    }
-                    catch( InterruptedException e )
-                    {
-                        // should be ignored.
-                    }
-                }
-            }
-        }
-
-        @Override
-        public void updateNextTime( ScheduleTime oldScheduleTime )
-        {
-            try (UnitOfWork uow = uowf.newUnitOfWork()) // This will discard() the UoW when block is exited. We are only doing reads, so fine.
-            {
-                submitTaskForExecution( oldScheduleTime );
-                Schedule schedule = uow.get( Schedule.class, oldScheduleTime.scheduleIdentity() );
-                Instant nextTime = schedule.nextRun( Instant.now() );
-                if( nextTime.isAfter( Instant.MIN ) )
-                {
-                    ScheduleTime newScheduleTime = new ScheduleTime( oldScheduleTime.scheduleIdentity(), nextTime );
-                    synchronized( lock )
-                    {
-                        // Re-add to the Timing Queue, to re-position the sorting.
-                        timingQueue.remove( oldScheduleTime );
-                        timingQueue.add( newScheduleTime );
-                    }
-                }
-                else
-                {
-                    synchronized( lock )
-                    {
-                        timingQueue.remove( oldScheduleTime );
-                    }
-                }
-            }
-            catch( NoSuchEntityException e )
-            {
-                e.printStackTrace();
-//                scheduler.cancelSchedule( oldScheduleTime.scheduleIdentity() );
-            }
-        }
-
-        private void submitTaskForExecution( ScheduleTime scheduleTime )
-        {
-            Runnable taskRunner = tbf.newTransient( Runnable.class, scheduleTime );
-            this.taskExecutor.submit( taskRunner );
-        }
-
-        @Override
-        public void dispatchForExecution( Schedule schedule )
-        {
-            Instant nextRun = schedule.nextRun( Instant.now() );
-            if( nextRun.equals( Instant.MIN ) )
-            {
-                return;
-            }
-            synchronized( lock )
-            {
-                timingQueue.add( new ScheduleTime( schedule.identity().get(), nextRun ) );
-                lock.notifyAll();
-            }
-        }
-
-        @Override
-        public void start()
-            throws Exception
-        {
-            SchedulerConfiguration configuration = config.get();
-            Integer workersCount = configuration.workersCount().get();
-            Integer workQueueSize = configuration.workQueueSize().get();
-            createThreadPoolExecutor( workersCount, workQueueSize );
-            taskExecutor.prestartAllCoreThreads();
-
-            SecurityManager sm = System.getSecurityManager();
-            ThreadGroup threadGroup = sm != null ? sm.getThreadGroup() : TG;
-            scheduleThread = new Thread( threadGroup, this, "Scheduler" );
-            scheduleThread.start();
-        }
-
-        private void createThreadPoolExecutor( Integer workersCount, Integer workQueueSize )
-        {
-            int corePoolSize = 2;
-            if( workersCount > 4 )
-            {
-                corePoolSize = workersCount / 4 + 1;
-            }
-            if( corePoolSize > 50 )
-            {
-                corePoolSize = 20;
-            }
-            if( workersCount > 200 )
-            {
-                workersCount = 200;
-            }
-            taskExecutor = new ThreadPoolExecutor( corePoolSize, workersCount,
-                                                   0, TimeUnit.MILLISECONDS,
-                                                   new LinkedBlockingQueue<>( workQueueSize ),
-                                                   threadFactory, rejectionHandler );
-        }
-
-        @Override
-        public void stop()
-            throws Exception
-        {
-            running = false;
-            synchronized( this )
-            {
-                scheduleThread.interrupt();
-            }
-            taskExecutor.shutdown();
-            try
-            {
-                taskExecutor.awaitTermination( 5, TimeUnit.SECONDS );
-            }
-            catch( InterruptedException e )
-            {
-                e.printStackTrace();
-            }
-            taskExecutor.shutdownNow();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/ScheduleTime.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/ScheduleTime.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/ScheduleTime.java
deleted file mode 100644
index caf9a75..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/ScheduleTime.java
+++ /dev/null
@@ -1,62 +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.library.scheduler.internal;
-
-import java.time.Instant;
-import org.apache.zest.api.util.NullArgumentException;
-
-public final class ScheduleTime
-    implements Comparable<ScheduleTime>
-{
-    private final String scheduleIdentity;
-    private final Instant nextTime;
-
-    public ScheduleTime( String scheduleIdentity, Instant nextTime )
-    {
-        NullArgumentException.validateNotEmpty( "scheduleIdentity", scheduleIdentity );
-        this.scheduleIdentity = scheduleIdentity;
-        this.nextTime = nextTime;
-    }
-
-    public Instant nextTime()
-    {
-        return nextTime;
-    }
-
-    public String scheduleIdentity()
-    {
-        return scheduleIdentity;
-    }
-
-    @Override
-    public int compareTo( ScheduleTime another )
-    {
-        if( this.scheduleIdentity.equals( another.scheduleIdentity ) )
-        {
-            return 0;
-        }
-
-        if( this.nextTime.isBefore(another.nextTime) )
-        {
-            return -1;
-        }
-        return 1;
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/SchedulerMixin.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/SchedulerMixin.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/SchedulerMixin.java
deleted file mode 100644
index 43dc826..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/SchedulerMixin.java
+++ /dev/null
@@ -1,194 +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.library.scheduler.internal;
-
-import java.time.Instant;
-import org.apache.zest.api.configuration.Configuration;
-import org.apache.zest.api.injection.scope.Service;
-import org.apache.zest.api.injection.scope.Structure;
-import org.apache.zest.api.injection.scope.This;
-import org.apache.zest.api.service.ServiceActivation;
-import org.apache.zest.api.unitofwork.NoSuchEntityException;
-import org.apache.zest.api.unitofwork.UnitOfWork;
-import org.apache.zest.api.unitofwork.UnitOfWorkCompletionException;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.api.usecase.UsecaseBuilder;
-import org.apache.zest.library.scheduler.CronSchedule;
-import org.apache.zest.library.scheduler.Schedule;
-import org.apache.zest.library.scheduler.ScheduleFactory;
-import org.apache.zest.library.scheduler.Scheduler;
-import org.apache.zest.library.scheduler.SchedulerConfiguration;
-import org.apache.zest.library.scheduler.SchedulerService;
-import org.apache.zest.library.scheduler.SchedulesHandler;
-import org.apache.zest.library.scheduler.Task;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SchedulerMixin
-    implements Scheduler, ServiceActivation
-{
-    private static final Logger LOGGER = LoggerFactory.getLogger( Scheduler.class );
-
-    @Service
-    private ScheduleFactory scheduleFactory;
-
-    @Structure
-    private UnitOfWorkFactory uowf;
-
-    @This
-    private SchedulerService me;
-
-    @This
-    private SchedulesHandler schedulesHandler;
-
-    @This
-    private Execution execution;
-
-    @This
-    private Configuration<SchedulerConfiguration> config;
-
-    @Override
-    public Schedule scheduleOnce( Task task, int initialSecondsDelay )
-    {
-        Schedule schedule = scheduleFactory.newOnceSchedule( task, Instant.now().plusSeconds( initialSecondsDelay ) );
-        saveAndDispatch( schedule );
-        return schedule;
-    }
-
-    @Override
-    public Schedule scheduleOnce( Task task, Instant runAt )
-    {
-        Schedule schedule = scheduleFactory.newOnceSchedule( task, runAt );
-        saveAndDispatch( schedule );
-        return schedule;
-    }
-
-    @Override
-    public Schedule scheduleCron( Task task, String cronExpression )
-    {
-        Schedule schedule = scheduleFactory.newCronSchedule( task, cronExpression, Instant.now() );
-        saveAndDispatch( schedule );
-        return schedule;
-    }
-
-    @Override
-    public Schedule scheduleCron( Task task, @CronSchedule.CronExpression String cronExpression, Instant start )
-    {
-        Schedule schedule = scheduleFactory.newCronSchedule( task, cronExpression, start );
-        saveAndDispatch( schedule );
-        return schedule;
-    }
-
-    @Override
-    public void scheduleCron( Schedule schedule )
-    {
-        saveAndDispatch( schedule );
-    }
-
-    @Override
-    public Schedule scheduleCron( Task task, String cronExpression, long initialDelay )
-    {
-        Instant start = Instant.now().plusMillis( initialDelay );
-        Schedule schedule = scheduleFactory.newCronSchedule( task, cronExpression, start );
-        saveAndDispatch( schedule );
-        return schedule;
-    }
-
-    @Override
-    public void cancelSchedule( String scheduleId )
-    {
-        UnitOfWork uow = uowf.currentUnitOfWork();
-        Schedule schedule;
-        try
-        {
-            schedule = uow.get( Schedule.class, scheduleId );
-        }
-        catch( NoSuchEntityException e )
-        {
-            return;
-        }
-        cancelSchedule( schedule );
-    }
-
-    @Override
-    public void cancelSchedule( Schedule schedule )
-    {
-        Schedules active = schedulesHandler.getActiveSchedules();
-        if( active.schedules().remove( schedule ) )
-        {
-            schedule.cancelled().set( true );
-        }
-    }
-
-    private void saveAndDispatch( Schedule schedule )
-    {
-        Schedules schedules = schedulesHandler.getActiveSchedules();
-        schedules.schedules().add( schedule );
-        execution.dispatchForExecution( schedule );
-    }
-
-    private void loadSchedules()
-        throws UnitOfWorkCompletionException
-    {
-        try (UnitOfWork ignored = uowf.newUnitOfWork( UsecaseBuilder.newUsecase( "Initialize Schedules" ) ))
-        {
-            Schedules schedules = schedulesHandler.getActiveSchedules();
-            for( Schedule schedule : schedules.schedules() )
-            {
-                dispatch( schedule );
-            }
-        }
-    }
-
-    private void dispatch( Schedule schedule )
-    {
-        try
-        {
-            if( !schedule.cancelled().get() && !schedule.done().get() )
-            {
-                execution.dispatchForExecution( schedule );
-            }
-        }
-        catch( Exception e )
-        {
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    public void activateService()
-        throws Exception
-    {
-        // Throws IllegalArgument if corePoolSize or keepAliveTime less than zero,
-        // or if workersCount less than or equal to zero,
-        // or if corePoolSize greater than workersCount.
-        execution.start();
-        loadSchedules();
-        LOGGER.debug( "Activated" );
-    }
-
-    @Override
-    public void passivateService()
-        throws Exception
-    {
-        execution.stop();
-        LOGGER.debug( "Passivated" );
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-java/blob/8915dfaa/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Schedules.java
----------------------------------------------------------------------
diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Schedules.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Schedules.java
deleted file mode 100644
index 8aa567a..0000000
--- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Schedules.java
+++ /dev/null
@@ -1,28 +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.library.scheduler.internal;
-
-import org.apache.zest.api.association.ManyAssociation;
-import org.apache.zest.library.scheduler.Schedule;
-
-public interface Schedules
-{
-    ManyAssociation<Schedule> schedules();
-}