6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package javafx.concurrent;
27
28 /**
29 * The Task and Service tests need to do a little trickery due to threading.
30 * Although in practice they run on different threads (ie: the UI and
31 * background threads), while testing I want to be able to run predictably
32 * and quickly on just the test thread. This implementation of
33 * Service is used as the base implementation of all Services which are
34 * tested. It will simply run the given command immediately, and makes
35 * sure the checkThread does nothing.
36 */
37 public abstract class TestServiceFactory {
38 public final Thread appThread = Thread.currentThread();
39 public ServiceTestBase test;
40 protected AbstractTask currentTask;
41
42 protected abstract AbstractTask createTestTask();
43 protected Service<String> createService() {
44 return new Service<String>() {
45 @Override protected Task<String> createTask() {
46 currentTask = createTestTask();
47 currentTask.test = test;
48 currentTask.appThread = appThread;
49 return currentTask;
50 }
51
52 @Override boolean isFxApplicationThread() {
53 return Thread.currentThread() == appThread;
54 }
55
56 @Override void runLater(Runnable r) {
57 if (test != null) {
58 test.eventQueue.add(r);
59 } else {
60 r.run();
61 }
62 }
63 };
64 }
65
66 public final AbstractTask getCurrentTask() { return currentTask; }
67 }
|
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package test.javafx.concurrent;
27
28 import javafx.concurrent.Service;
29 import javafx.concurrent.ServiceShim;
30 import javafx.concurrent.Task;
31
32 /**
33 * The Task and Service tests need to do a little trickery due to threading.
34 * Although in practice they run on different threads (ie: the UI and
35 * background threads), while testing I want to be able to run predictably
36 * and quickly on just the test thread. This implementation of
37 * Service is used as the base implementation of all Services which are
38 * tested. It will simply run the given command immediately, and makes
39 * sure the checkThread does nothing.
40 */
41 public abstract class TestServiceFactory {
42 public final Thread appThread = Thread.currentThread();
43 public ServiceTestBase test;
44 public AbstractTask currentTask;
45
46 public abstract AbstractTask createTestTask();
47 public Service<String> createService() {
48 return new ServiceShim<String>() {
49 @Override protected Task<String> createTask() {
50 currentTask = createTestTask();
51 currentTask.set_test(test);
52 currentTask.appThread = appThread;
53 return currentTask;
54 }
55
56 @Override public boolean isFxApplicationThread() {
57 return Thread.currentThread() == appThread;
58 }
59
60 @Override public void runLater(Runnable r) {
61 if (test != null) {
62 test.eventQueue.add(r);
63 } else {
64 r.run();
65 }
66 }
67 };
68 }
69
70 public final AbstractTask getCurrentTask() { return currentTask; }
71 }
|