From 248f720cabe97c5c4bb0ea2b510aec75877f7128 Mon Sep 17 00:00:00 2001 From: gojomo Date: Tue, 26 Jan 2010 01:21:59 +0000 Subject: [PATCH] Make Recorder facility usable independent of special crawler threads * Recorder.java store reusable per-thread Recorder instance in Recorder static thread-local * ToeThread.java setup reusable instance into Recorder * RecorderMarker.java deleted -- unnecessary --- .../main/java/org/archive/util/Recorder.java | 14 ++++---- .../java/org/archive/util/RecorderMarker.java | 34 ------------------- .../archive/crawler/framework/ToeThread.java | 14 ++------ 3 files changed, 10 insertions(+), 52 deletions(-) delete mode 100644 commons/src/main/java/org/archive/util/RecorderMarker.java diff --git a/commons/src/main/java/org/archive/util/Recorder.java b/commons/src/main/java/org/archive/util/Recorder.java index f196e874..d10b1cb5 100644 --- a/commons/src/main/java/org/archive/util/Recorder.java +++ b/commons/src/main/java/org/archive/util/Recorder.java @@ -251,6 +251,13 @@ public class Recorder { } } + + static ThreadLocal currentRecorder = new ThreadLocal(); + + public static void setHttpRecorder(Recorder httpRecorder) { + currentRecorder.set(httpRecorder); + } + /** * Get the current threads' HttpRecorder. * @@ -258,12 +265,7 @@ public class Recorder { * HttpRecorder in current instance. */ public static Recorder getHttpRecorder() { - Recorder recorder = null; - Thread thread = Thread.currentThread(); - if (thread instanceof RecorderMarker) { - recorder = ((RecorderMarker)thread).getHttpRecorder(); - } - return recorder; + return currentRecorder.get(); } /** diff --git a/commons/src/main/java/org/archive/util/RecorderMarker.java b/commons/src/main/java/org/archive/util/RecorderMarker.java deleted file mode 100644 index 51395373..00000000 --- a/commons/src/main/java/org/archive/util/RecorderMarker.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of the Heritrix web crawler (crawler.archive.org). - * - * Licensed to the Internet Archive (IA) by one or more individual - * contributors. - * - * The IA 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.archive.util; - - -/** - * A marker interface to denote a class with a gettable HttpRecorder. - * - * @author stack - * @version $Id$ - */ -public interface RecorderMarker -{ - /** - * @return An instance of HttpRecorder. - */ - public Recorder getHttpRecorder(); -} diff --git a/engine/src/main/java/org/archive/crawler/framework/ToeThread.java b/engine/src/main/java/org/archive/crawler/framework/ToeThread.java index d2f37ec5..c30081c7 100644 --- a/engine/src/main/java/org/archive/crawler/framework/ToeThread.java +++ b/engine/src/main/java/org/archive/crawler/framework/ToeThread.java @@ -45,7 +45,6 @@ import org.archive.util.DevUtils; import org.archive.util.MultiReporter; import org.archive.util.ProgressStatisticsReporter; import org.archive.util.Recorder; -import org.archive.util.RecorderMarker; import com.sleepycat.util.RuntimeExceptionWrapper; @@ -56,7 +55,7 @@ import com.sleepycat.util.RuntimeExceptionWrapper; * @author Gordon Mohr */ public class ToeThread extends Thread -implements RecorderMarker, MultiReporter, ProgressStatisticsReporter, +implements MultiReporter, ProgressStatisticsReporter, HostResolver, SinkHandlerLogThread, ChainStatusReceiver { public enum Step { @@ -123,6 +122,7 @@ implements RecorderMarker, MultiReporter, ProgressStatisticsReporter, public void run() { String name = controller.getMetadata().getJobName(); logger.fine(getName()+" started for order '"+name+"'"); + Recorder.setHttpRecorder(httpRecorder); try { while ( true ) { @@ -303,16 +303,6 @@ implements RecorderMarker, MultiReporter, ProgressStatisticsReporter, public int getSerialNumber() { return this.serialNumber; } - - /** - * Used to get current threads HttpRecorder instance. - * Implementation of the HttpRecorderMarker interface. - * @return Returns instance of HttpRecorder carried by this thread. - * @see org.archive.util.RecorderMarker#getHttpRecorder() - */ - public Recorder getHttpRecorder() { - return this.httpRecorder; - } /** Get the CrawlController acossiated with this thread. *