//# 0 errors, 213 messages
//#
/*
    //#WorkerThread.java:1:1: class: org.apache.roller.weblogger.business.runnable.WorkerThread
 * Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  The ASF 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.  For additional information regarding
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */

package org.apache.roller.weblogger.business.runnable;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.business.WebloggerFactory;


/**
 * A generic worker thread that knows how execute a Job.
 */
public class WorkerThread extends Thread {
    
    private static Log log = LogFactory.getLog(WorkerThread.class);
    //#WorkerThread.java:32: method: org.apache.roller.weblogger.business.runnable.WorkerThread.org.apache.roller.weblogger.business.runnable.WorkerThread__static_init
    //#WorkerThread.java:32: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.runnable.WorkerThread
    //#    method: org.apache.roller.weblogger.business.runnable.WorkerThread__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.runnable.WorkerThread__static_init): __Descendant_Table[org/apache/roller/weblogger/business/runnable/WorkerThread]
    //#output(org.apache.roller.weblogger.business.runnable.WorkerThread__static_init): __Dispatch_Table.run()V
    //#output(org.apache.roller.weblogger.business.runnable.WorkerThread__static_init): __Dispatch_Table.setJob(Lorg/apache/roller/weblogger/business/runnable/Job;)V
    //#output(org.apache.roller.weblogger.business.runnable.WorkerThread__static_init): log
    //#post(org.apache.roller.weblogger.business.runnable.WorkerThread__static_init): __Descendant_Table[org/apache/roller/weblogger/business/runnable/WorkerThread] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.runnable.WorkerThread__static_init): __Dispatch_Table.run()V == &run
    //#post(org.apache.roller.weblogger.business.runnable.WorkerThread__static_init): __Dispatch_Table.setJob(Lorg/apache/roller/weblogger/business/runnable/Job;)V == &setJob
    //#post(org.apache.roller.weblogger.business.runnable.WorkerThread__static_init): init'ed(log)
    //#WorkerThread.java:32: end of method: org.apache.roller.weblogger.business.runnable.WorkerThread.org.apache.roller.weblogger.business.runnable.WorkerThread__static_init
    
    String id = null;
    Job job = null;
    
    
    /**
     * A simple worker.
     */
    public WorkerThread(String id) {
        super(id);
    //#WorkerThread.java:42: method: void org.apache.roller.weblogger.business.runnable.WorkerThread.org.apache.roller.weblogger.business.runnable.WorkerThread(String)
    //#input(void org.apache.roller.weblogger.business.runnable.WorkerThread(String)): id
    //#input(void org.apache.roller.weblogger.business.runnable.WorkerThread(String)): this
    //#output(void org.apache.roller.weblogger.business.runnable.WorkerThread(String)): this.id
    //#output(void org.apache.roller.weblogger.business.runnable.WorkerThread(String)): this.job
    //#post(void org.apache.roller.weblogger.business.runnable.WorkerThread(String)): this.id == id
    //#post(void org.apache.roller.weblogger.business.runnable.WorkerThread(String)): init'ed(this.id)
    //#post(void org.apache.roller.weblogger.business.runnable.WorkerThread(String)): this.job == null
        this.id = id;
    }
    //#WorkerThread.java:44: end of method: void org.apache.roller.weblogger.business.runnable.WorkerThread.org.apache.roller.weblogger.business.runnable.WorkerThread(String)
    
    
    /**
     * Start off with a job to do.
     */
    public WorkerThread(String id, Job job) {
        super(id);
    //#WorkerThread.java:51: method: void org.apache.roller.weblogger.business.runnable.WorkerThread.org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)
    //#input(void org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)): id
    //#input(void org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)): job
    //#input(void org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)): this
    //#output(void org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)): this.id
    //#output(void org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)): this.job
    //#post(void org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)): this.id == id
    //#post(void org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)): init'ed(this.id)
    //#post(void org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)): this.job == job
    //#post(void org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)): init'ed(this.job)
        this.id = id;
        this.job = job;
    }
    //#WorkerThread.java:54: end of method: void org.apache.roller.weblogger.business.runnable.WorkerThread.org.apache.roller.weblogger.business.runnable.WorkerThread(String, Job)
    
    
    /**
     * Thread execution.
     *
     * We just execute the job we were given if it's non-null.
     */
    public void run() {
        
        // we only run once
        if (this.job != null) {
    //#WorkerThread.java:65: method: void org.apache.roller.weblogger.business.runnable.WorkerThread.run()
    //#WorkerThread.java:65: Warning: suspicious precondition
    //#    the precondition for org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.runnable.WorkerThread
    //#    method: void run()
    //#    suspicious precondition index: [5]
    //#    Attribs:  Soft
    //#WorkerThread.java:65: Warning: suspicious precondition
    //#    the precondition for this.job.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.runnable.WorkerThread
    //#    method: void run()
    //#    suspicious precondition index: [13]
    //#    Attribs:  Soft
    //#input(void run()): ", "._tainted
    //#input(void run()): "Error executing job. Worker = "._tainted
    //#input(void run()): "Job = "._tainted
    //#input(void run()): log
    //#input(void run()): org/apache/roller/weblogger/business/BookmarkManager.__Descendant_Table[org/apache/roller/weblogger/business/BookmarkManager]
    //#input(void run()): org/apache/roller/weblogger/business/BookmarkManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/BookmarkManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/BookmarkManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/FileManager.__Descendant_Table[org/apache/roller/weblogger/business/FileManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/FileManager.__Descendant_Table[org/apache/roller/weblogger/business/FileManager]
    //#input(void run()): org/apache/roller/weblogger/business/FileManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/FileManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/FileManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void run()): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void run()): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[org/apache/roller/weblogger/business/WeblogManager]
    //#input(void run()): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/WeblogManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void run()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.autoPingManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.autoPingManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.bookmarkManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.bookmarkManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.fileManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.fileManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.pingQueueManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.pingQueueManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.pingTargetManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.pingTargetManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.pluginManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.pluginManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.refererManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.refererManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.strategy
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.strategy.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.strategy.emf
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.strategy.threadLocalEntityManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.threadManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.threadManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.weblogManager
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.weblogManager.__Tag
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerImpl.log
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/AutoPingManager]
    //#input(void run()): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/pings/AutoPingManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/PingQueueManager]
    //#input(void run()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/PingTargetManager]
    //#input(void run()): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/pings/PingTargetManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/plugins/PluginManager.__Descendant_Table[org/apache/roller/weblogger/business/plugins/PluginManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/plugins/PluginManager.__Descendant_Table[org/apache/roller/weblogger/business/plugins/PluginManager]
    //#input(void run()): org/apache/roller/weblogger/business/plugins/PluginManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/plugins/PluginManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/plugins/PluginManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/referrers/QueuedReferrerProcessingJob.__Dispatch_Table.execute()V
    //#input(void run()): org/apache/roller/weblogger/business/referrers/RefererManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/referrers/RefererManager.__Descendant_Table[org/apache/roller/weblogger/business/referrers/RefererManager]
    //#input(void run()): org/apache/roller/weblogger/business/referrers/RefererManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/referrers/RefererManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/referrers/ReferrerProcessingJob.__Dispatch_Table.execute()V
    //#input(void run()): org/apache/roller/weblogger/business/runnable/HitCountProcessingJob.__Dispatch_Table.execute()V
    //#input(void run()): org/apache/roller/weblogger/business/runnable/Job.__Descendant_Table[org/apache/roller/weblogger/business/referrers/QueuedReferrerProcessingJob]
    //#input(void run()): org/apache/roller/weblogger/business/runnable/Job.__Descendant_Table[org/apache/roller/weblogger/business/referrers/ReferrerProcessingJob]
    //#input(void run()): org/apache/roller/weblogger/business/runnable/Job.__Descendant_Table[org/apache/roller/weblogger/business/runnable/HitCountProcessingJob]
    //#input(void run()): org/apache/roller/weblogger/business/runnable/Job.__Descendant_Table[org/apache/roller/weblogger/business/runnable/Job]
    //#input(void run()): org/apache/roller/weblogger/business/runnable/Job.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/runnable/Job.__Dispatch_Table.execute()V
    //#input(void run()): org/apache/roller/weblogger/business/runnable/ThreadManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/runnable/ThreadManager.__Descendant_Table[org/apache/roller/weblogger/business/runnable/ThreadManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/runnable/ThreadManager.__Descendant_Table[org/apache/roller/weblogger/business/runnable/ThreadManager]
    //#input(void run()): org/apache/roller/weblogger/business/runnable/ThreadManager.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/runnable/ThreadManager.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/runnable/ThreadManagerImpl.__Dispatch_Table.release()V
    //#input(void run()): this
    //#input(void run()): this.id
    //#input(void run()): this.id._tainted
    //#input(void run()): this.job
    //#input(void run()): this.job.__Tag
    //#output(void run()): org/apache/roller/weblogger/business/HitCountQueue.instance.queue
    //#output(void run()): this.job.referrer
    //#pre[12] (void run()): init'ed(this.job)
    //#pre[1] (void run()): (soft) log != null
    //#pre[4] (void run()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[5] (void run()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[6] (void run()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[7] (void run()): (soft) org/apache/roller/weblogger/business/WebloggerImpl.log != null
    //#pre[10] (void run()): (soft) init'ed(this.id)
    //#pre[13] (void run()): (soft) this.job.__Tag in {org/apache/roller/weblogger/business/referrers/QueuedReferrerProcessingJob, org/apache/roller/weblogger/business/referrers/ReferrerProcessingJob, org/apache/roller/weblogger/business/runnable/HitCountProcessingJob, org/apache/roller/weblogger/business/runnable/Job}
    //#presumption(void run()): java.lang.Object:getClass(...)@71 != null
    //#presumption(void run()): roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#presumption(void run()): roller.autoPingManager != null
    //#presumption(void run()): roller.autoPingManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl, org/apache/roller/weblogger/business/pings/AutoPingManager}
    //#presumption(void run()): roller.bookmarkManager != null
    //#presumption(void run()): roller.bookmarkManager.__Tag in {org/apache/roller/weblogger/business/BookmarkManager, org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl}
    //#presumption(void run()): roller.fileManager != null
    //#presumption(void run()): roller.fileManager.__Tag in {org/apache/roller/weblogger/business/FileManager, org/apache/roller/weblogger/business/FileManagerImpl}
    //#presumption(void run()): roller.pingQueueManager != null
    //#presumption(void run()): roller.pingQueueManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl, org/apache/roller/weblogger/business/pings/PingQueueManager}
    //#presumption(void run()): roller.pingTargetManager != null
    //#presumption(void run()): roller.pingTargetManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl, org/apache/roller/weblogger/business/pings/PingTargetManager}
    //#presumption(void run()): roller.pluginManager != null
    //#presumption(void run()): roller.pluginManager.__Tag in {org/apache/roller/weblogger/business/plugins/PluginManager, org/apache/roller/weblogger/business/plugins/PluginManagerImpl}
    //#presumption(void run()): roller.refererManager != null
    //#presumption(void run()): roller.refererManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl, org/apache/roller/weblogger/business/referrers/RefererManager}
    //#presumption(void run()): roller.threadManager != null
    //#presumption(void run()): roller.threadManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl, org/apache/roller/weblogger/business/runnable/ThreadManager, org/apache/roller/weblogger/business/runnable/ThreadManagerImpl}
    //#presumption(void run()): roller.userManager != null
    //#presumption(void run()): roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#presumption(void run()): roller.weblogManager != null
    //#presumption(void run()): roller.weblogManager.__Tag in {org/apache/roller/weblogger/business/WeblogManager, org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl}
    //#post(void run()): org/apache/roller/weblogger/business/HitCountQueue.instance.queue == old org/apache/roller/weblogger/business/HitCountQueue.instance.queue
    //#post(void run()): this.job.referrer == old this.job.referrer
    //#unanalyzed(void run()): Effects-of-calling:getWeblogger
    //#unanalyzed(void run()): Effects-of-calling:release
    //#unanalyzed(void run()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void run()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityTransaction:rollback
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityManager:close
    //#unanalyzed(void run()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void run()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#test_vector(void run()): this.job: Addr_Set{null}, Inverse{null}
            // process job
            try {
                this.job.execute();
    //#WorkerThread.java:68: Warning: call too complex - analysis skipped
    //#    -- call on void execute()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.runnable.WorkerThread
    //#    method: void run()
    //#    unanalyzed callee: void execute()
            } catch(Throwable t) {
                // oops
                log.error("Error executing job. "+
    //#WorkerThread.java:71: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.runnable.WorkerThread
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
                        "Worker = "+this.id+", "+
                        "Job = "+this.job.getClass().getName(), t);
            }
            
            // since this is a thread we have to make sure that we tidy up ourselves
            Weblogger roller = WebloggerFactory.getWeblogger();
            roller.release();
        }
        
    }
    //#WorkerThread.java:81: end of method: void org.apache.roller.weblogger.business.runnable.WorkerThread.run()
    
    
    /**
     * Set the job for this worker.
     */
    public void setJob(Job newJob) {
        log.debug("NEW JOB: "+newJob.getClass().getName());
    //#WorkerThread.java:88: method: void org.apache.roller.weblogger.business.runnable.WorkerThread.setJob(Job)
    //#WorkerThread.java:88: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.runnable.WorkerThread
    //#    method: void setJob(Job)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void setJob(Job)): "NEW JOB: "._tainted
    //#input(void setJob(Job)): log
    //#input(void setJob(Job)): newJob
    //#input(void setJob(Job)): this
    //#output(void setJob(Job)): this.job
    //#pre[1] (void setJob(Job)): log != null
    //#pre[2] (void setJob(Job)): newJob != null
    //#presumption(void setJob(Job)): java.lang.Object:getClass(...)@88 != null
    //#post(void setJob(Job)): this.job == newJob
    //#post(void setJob(Job)): this.job != null
        
        // set the job
        this.job = newJob;
    }
    //#WorkerThread.java:92: end of method: void org.apache.roller.weblogger.business.runnable.WorkerThread.setJob(Job)
    
}
    //#WorkerThread.java:: end of class: org.apache.roller.weblogger.business.runnable.WorkerThread
