01 /* 
02  * Copyright 2008-2015 the original author or authors. 
03  * 
04  * Licensed under the Apache License, Version 2.0 (the "License"); 
05  * you may not use this file except in compliance with the License. 
06  * You may obtain a copy of the License at 
07  * 
08  *     http://www.apache.org/licenses/LICENSE-2.0 
09  * 
10  * Unless required by applicable law or agreed to in writing, software 
11  * distributed under the License is distributed on an "AS IS" BASIS, 
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
13  * See the License for the specific language governing permissions and 
14  * limitations under the License. 
15  */ 
16 package org.codehaus.griffon.runtime.core.threading; 
17  
18 import griffon.core.threading.ThreadingHandler; 
19 import griffon.core.threading.UIThreadManager; 
20  
21 import javax.annotation.Nonnull; 
22 import javax.annotation.Nullable; 
23 import javax.inject.Inject; 
24 import java.util.concurrent.Callable; 
25 import java.util.concurrent.ExecutorService; 
26 import java.util.concurrent.Future; 
27  
28 import static java.util.Objects.requireNonNull; 
29  
30 /** 
31  * Base implementation of the ThreadingHandler interface. 
32  * 
33  * @author Andres Almiray 
34  * @since 2.0.0 
35  */ 
36 public abstract class AbstractThreadingHandler implements ThreadingHandler { 
37     private UIThreadManager uiThreadManager; 
38  
39     @Inject 
40     public void setUIThreadManager(@Nonnull UIThreadManager uiThreadManager) { 
41         this.uiThreadManager = requireNonNull(uiThreadManager, "Argument 'uiThreadManager' must not be bull"); 
42     } 
43  
44     public boolean isUIThread() { 
45         return uiThreadManager.isUIThread(); 
46     } 
47  
48     public void runInsideUIAsync(@Nonnull Runnable runnable) { 
49         uiThreadManager.runInsideUIAsync(runnable); 
50     } 
51  
52     public void runInsideUISync(@Nonnull Runnable runnable) { 
53         uiThreadManager.runInsideUISync(runnable); 
54     } 
55  
56     public void runOutsideUI(@Nonnull Runnable runnable) { 
57         uiThreadManager.runOutsideUI(runnable); 
58     } 
59  
60     @Nonnull 
61     public <R> Future<R> runFuture(@Nonnull ExecutorService executorService, @Nonnull Callable<R> callable) { 
62         return uiThreadManager.runFuture(executorService, callable); 
63     } 
64  
65     @Nonnull 
66     public <R> Future<R> runFuture(@Nonnull Callable<R> callable) { 
67         return uiThreadManager.runFuture(callable); 
68     } 
69  
70     @Nullable 
71     @Override 
72     public <R> R runInsideUISync(@Nonnull Callable<R> callable) { 
73         return uiThreadManager.runInsideUISync(callable); 
74     } 
75 }
    
    |