View Javadoc

1   /*
2    * This file is part of AceLogger.
3    * 
4    * AceLogger is free software: you can redistribute it and/or modify it under the terms of the GNU
5    * Lesser General Public License as published by the Free Software Foundation, either version 3 of
6    * the License, or (at your option) any later version.
7    * 
8    * AceLogger is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
9    * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10   * Lesser General Public License for more details.
11   * 
12   * You should have received a copy of the GNU Lesser General Public License along with AceLogger.
13   * If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>.
14   */
15  package net.sourceforge.acelogger.execution.manager;
16  
17  import java.util.Collections;
18  import java.util.List;
19  
20  /**
21   * An implementation of {@link ExecutorManager} that executes tasks synchronously in the same
22   * caller's thread.
23   * 
24   * @author Zardi (https://sourceforge.net/users/daniel_zardi)
25   * @version 1.0.0
26   * @since 1.0.0
27   */
28  public class SynchronousExecutorManager extends BaseExecutorManager {
29  
30  	/**
31  	 * Indicates if this executor manager was shutdown or not.
32  	 */
33  	private boolean shutdown;
34  
35  	/**
36  	 * Constructs a new SynchronousExecutorManager with the supplied identifier.
37  	 * 
38  	 * @param identifier
39  	 *            A string that identifies this executor manager.
40  	 * @since 1.0.0
41  	 */
42  	public SynchronousExecutorManager(String identifier) {
43  		super(identifier);
44  		shutdown = false;
45  	}
46  
47  	/** {@inheritDoc} */
48  	public void execute(Runnable command) {
49  		command.run();
50  	}
51  
52  	/** {@inheritDoc} */
53  	public boolean isTerminated() {
54  		return shutdown;
55  	}
56  
57  	/** {@inheritDoc} */
58  	public boolean orderProperShutdown() {
59  		shutdown = true;
60  		return shutdown;
61  	}
62  
63  	/** {@inheritDoc} */
64  	public boolean awaitTermination(long terminationTimeout) {
65  		// TODO: should this check for a illegal state? this can be called only after shutdown
66  		return true;
67  	}
68  
69  	/** {@inheritDoc} */
70  	public List<Runnable> terminateAndRetrieveTasks() {
71  		// TODO: should this check for a illegal state? this can be called only after shutdown
72  		return Collections.emptyList();
73  	}
74  
75  }