Author: mickw
Date: 2006-04-30 00:39:18 +0200 (Sun, 30 Apr 2006)
New Revision: 2830
Added:
trunk/src/java/no/schibstedsok/front/searchportal/executor/AbstractSearchCommandExecutor.java
Modified:
trunk/src/java/no/schibstedsok/front/searchportal/executor/ParallelSearchCommandExecutor.java
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchCommandExecutor.java
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchTask.java
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchTaskExecutorService.java
trunk/src/java/no/schibstedsok/front/searchportal/executor/SequentialSearchCommandExecutor.java
trunk/src/java/no/schibstedsok/front/searchportal/executor/ThreadPoolInspector.java
Log:
cleaning up executor package. checkstyle violations.
use of AbstracrSearchCommandExecutor and Executors.newSingleThreadExecutor()
for SequentialSearchCommandExecutor.
Added:
trunk/src/java/no/schibstedsok/front/searchportal/executor/AbstractSearchCommandExecutor.java
===================================================================
---
trunk/src/java/no/schibstedsok/front/searchportal/executor/AbstractSearchCommandExecutor.java
(rev 0)
+++
trunk/src/java/no/schibstedsok/front/searchportal/executor/AbstractSearchCommandExecutor.java
2006-04-29 22:39:18 UTC (rev 2830)
@@ -0,0 +1,83 @@
+/*
+ * AbstractSearchCommandExecutor.java
+ *
+ * Created on 29 April 2006, 22:26
+ *
+ */
+
+package no.schibstedsok.front.searchportal.executor;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import no.schibstedsok.front.searchportal.result.SearchResult;
+import org.apache.log4j.Logger;
+
+/**
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Michael Semb Wever</a>
+ * @version $Id$
+ */
+abstract class AbstractSearchCommandExecutor implements SearchCommandExecutor {
+
+
+ protected transient static final Logger LOG =
Logger.getLogger(AbstractSearchCommandExecutor.class);
+
+
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ /**
+ * Creates a new instance of AbstractSearchCommandExecutor
+ */
+ public AbstractSearchCommandExecutor() {
+ }
+
+ // Public --------------------------------------------------------
+
+
+ public List<Future<SearchResult>> invokeAll(final
Collection<Callable<SearchResult>> callables, final int timeoutInMillis) {
+
+ final List<Future<SearchResult>> results = new
ArrayList<Future<SearchResult>>();
+ try {
+ results.addAll(getExecutorService().invokeAll(callables,
timeoutInMillis, TimeUnit.MILLISECONDS));
+
+// for( Callable<SearchResult> c : callables ){
+// results.add( EXECUTOR.submit(c) );
+// }
+ } catch (InterruptedException e) {
+ LOG.error(e);
+ }
+ return results;
+ }
+
+ public void stop() {
+ LOG.warn("Shutting down thread pool");
+ getExecutorService().shutdownNow();
+ }
+
+ protected abstract ExecutorService getExecutorService();
+
+
+
+ // Z implementation ----------------------------------------------
+
+ // Y overrides ---------------------------------------------------
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Modified:
trunk/src/java/no/schibstedsok/front/searchportal/executor/ParallelSearchCommandExecutor.java
===================================================================
---
trunk/src/java/no/schibstedsok/front/searchportal/executor/ParallelSearchCommandExecutor.java
2006-04-29 18:02:01 UTC (rev 2829)
+++
trunk/src/java/no/schibstedsok/front/searchportal/executor/ParallelSearchCommandExecutor.java
2006-04-29 22:39:18 UTC (rev 2830)
@@ -1,60 +1,35 @@
+// Copyright (2006) Schibsted Søk AS
package no.schibstedsok.front.searchportal.executor;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import no.schibstedsok.front.searchportal.result.SearchResult;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import java.util.Collection;
-import java.util.List;
-
/**
* A [EMAIL PROTECTED]
no.schibstedsok.front.searchportal.executor.SearchCommandExecutor} executing a
list of callables in parallel.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Magnus Eklund</a>
* @version <tt>$Revision$</tt>
*/
-public final class ParallelSearchCommandExecutor implements
SearchCommandExecutor {
+public final class ParallelSearchCommandExecutor extends
AbstractSearchCommandExecutor {
private static final int INSPECTOR_PERIOD = 300000;
- private transient static final SearchTaskExecutorService executor = new
SearchTaskExecutorService();
- private transient static final Log LOG =
LogFactory.getLog(ParallelSearchCommandExecutor.class);
- private transient static final ThreadPoolInspector inspector = new
ThreadPoolInspector( executor, INSPECTOR_PERIOD);
+ private transient static final SearchTaskExecutorService EXECUTOR = new
SearchTaskExecutorService();
+ private transient static final ThreadPoolInspector INSPECTOR = new
ThreadPoolInspector(EXECUTOR, INSPECTOR_PERIOD);
/**
- * Creates a new parallel executor.
+ * Creates a new parallel EXECUTOR.
*/
public ParallelSearchCommandExecutor() {
}
- public List<Future<SearchResult>>
invokeAll(Collection<Callable<SearchResult>> callables, int timeoutInMillis) {
-
- final List<Future<SearchResult>> results = new
ArrayList<Future<SearchResult>>();
- try {
- results.addAll( executor.invokeAll(callables, timeoutInMillis,
TimeUnit.MILLISECONDS) );
-
-// for( Callable<SearchResult> c : callables ){
-// results.add( executor.submit(c) );
-// }
- } catch (InterruptedException e) {
- LOG.error(e); //To change body of catch statement use File |
Settings | File Templates.
- }
- return results;
- }
-
public void stop() {
LOG.info("Shutting down thread pool inspector");
- inspector.cancel();
- ThreadPoolExecutor threadPool = (ThreadPoolExecutor) executor;
- LOG.info("Shutting down thread pool");
- LOG.info(threadPool.getTaskCount() + " processed");
- threadPool.shutdownNow();
+ INSPECTOR.cancel();
+ LOG.warn(EXECUTOR.getTaskCount() + " processed");
+ super.stop();
}
+
+ protected ExecutorService getExecutorService(){
+ return EXECUTOR;
+ }
}
Modified:
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchCommandExecutor.java
===================================================================
---
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchCommandExecutor.java
2006-04-29 18:02:01 UTC (rev 2829)
+++
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchCommandExecutor.java
2006-04-29 22:39:18 UTC (rev 2830)
@@ -1,3 +1,4 @@
+// Copyright (2006) Schibsted Søk AS
package no.schibstedsok.front.searchportal.executor;
import java.util.Collection;
Modified:
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchTask.java
===================================================================
--- trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchTask.java
2006-04-29 18:02:01 UTC (rev 2829)
+++ trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchTask.java
2006-04-29 22:39:18 UTC (rev 2830)
@@ -1,3 +1,4 @@
+// Copyright (2006) Schibsted Søk AS
package no.schibstedsok.front.searchportal.executor;
import java.util.concurrent.ExecutionException;
@@ -18,7 +19,7 @@
private SearchCommand command;
- public SearchTask(SearchCommand command) {
+ public SearchTask(final SearchCommand command) {
super(command);
this.command = command;
@@ -28,7 +29,7 @@
return command;
}
- public boolean cancel(boolean mayInterruptIfRunning) {
+ public boolean cancel(final boolean mayInterruptIfRunning) {
LOG.debug("Cancel called " + command);
return super.cancel(mayInterruptIfRunning); //To change body of
overridden methods use File | Settings | File Templates.
Modified:
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchTaskExecutorService.java
===================================================================
---
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchTaskExecutorService.java
2006-04-29 18:02:01 UTC (rev 2829)
+++
trunk/src/java/no/schibstedsok/front/searchportal/executor/SearchTaskExecutorService.java
2006-04-29 22:39:18 UTC (rev 2830)
@@ -1,3 +1,4 @@
+// Copyright (2006) Schibsted Søk AS
package no.schibstedsok.front.searchportal.executor;
@@ -18,18 +19,18 @@
private static final Logger LOG =
Logger.getLogger(SearchTaskExecutorService.class);
public SearchTaskExecutorService() {
- super(20, 100, 5L, TimeUnit.SECONDS, new SynchronousQueue());
+ super(20, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new
SynchronousQueue());
}
- protected SearchTask newTaskFor(Callable<SearchResult> callable) {
+ protected SearchTask newTaskFor(final Callable<SearchResult> callable) {
final SearchCommand command = (SearchCommand) callable;
- if (LOG.isDebugEnabled()) {
+ if (LOG.isDebugEnabled()) {
LOG.debug("Creating new search task " +
command.getSearchConfiguration().getName());
}
- return new SearchTask( command );
+ return new SearchTask(command);
}
}
Modified:
trunk/src/java/no/schibstedsok/front/searchportal/executor/SequentialSearchCommandExecutor.java
===================================================================
---
trunk/src/java/no/schibstedsok/front/searchportal/executor/SequentialSearchCommandExecutor.java
2006-04-29 18:02:01 UTC (rev 2829)
+++
trunk/src/java/no/schibstedsok/front/searchportal/executor/SequentialSearchCommandExecutor.java
2006-04-29 22:39:18 UTC (rev 2830)
@@ -1,63 +1,23 @@
/*
- * Copyright (2005) Schibsted Søk AS
+ * Copyright (2005-2006) Schibsted Søk AS
*
*/
package no.schibstedsok.front.searchportal.executor;
-import java.util.concurrent.Callable;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import no.schibstedsok.front.searchportal.command.SearchCommand;
-import no.schibstedsok.front.searchportal.result.SearchResult;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
/**
* A simple SearchCommandExecutor that executes the tasks sequentially
*
* @author <a href="mailto:[EMAIL PROTECTED]">Magnus Eklund</a>
* @version <tt>$Revision$</tt>
*/
-public final class SequentialSearchCommandExecutor implements
SearchCommandExecutor {
+public final class SequentialSearchCommandExecutor extends
AbstractSearchCommandExecutor {
- private static Log log =
LogFactory.getLog(SequentialSearchCommandExecutor.class);
+ private static final ExecutorService EXECUTOR =
Executors.newSingleThreadExecutor();
- public List<Future<SearchResult>>
invokeAll(Collection<Callable<SearchResult>> callables, int timeoutInMillis) {
-
- final List<Future<SearchResult>> results = new
ArrayList<Future<SearchResult>>();
-
- for (Callable<SearchResult> callable : callables) {
-
- final SearchCommand command = (SearchCommand) callable;
- try {
- final SearchResult result = command.call();
-
- final SearchTask task = new SearchTask(command){
- public SearchResult get(final long timeout, final TimeUnit
unit) {
- return get();
- }
- public boolean isDone() {
- return true;
- }
- public SearchResult get() {
- return result;
- }
- };
- results.add(task);
-
- } catch (Exception e) {
- log.error("Execution of search command failed", e);
- }
- }
-
- return results;
+ protected ExecutorService getExecutorService() {
+ return EXECUTOR;
}
-
- public void stop() {
- }
}
Modified:
trunk/src/java/no/schibstedsok/front/searchportal/executor/ThreadPoolInspector.java
===================================================================
---
trunk/src/java/no/schibstedsok/front/searchportal/executor/ThreadPoolInspector.java
2006-04-29 18:02:01 UTC (rev 2829)
+++
trunk/src/java/no/schibstedsok/front/searchportal/executor/ThreadPoolInspector.java
2006-04-29 22:39:18 UTC (rev 2830)
@@ -1,3 +1,4 @@
+// Copyright (2006) Schibsted Søk AS
package no.schibstedsok.front.searchportal.executor;
import java.util.concurrent.ThreadPoolExecutor;
@@ -11,13 +12,13 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Magnus Eklund</a>
* @version <tt>$Revision$</tt>
*/
-public class ThreadPoolInspector extends TimerTask {
+public final class ThreadPoolInspector extends TimerTask {
private ThreadPoolExecutor threadPool;
- public ThreadPoolInspector(ThreadPoolExecutor threadPool, int msPeriod) {
+ public ThreadPoolInspector(final ThreadPoolExecutor threadPool, final int
msPeriod) {
this.threadPool = threadPool;
- Timer t = new Timer();
+ final Timer t = new Timer();
LOG.info("Scheduling to run every " + msPeriod + "ms");
t.schedule(this, 0, msPeriod);
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits