//# 0 errors, 544 messages
//#
/*
    //#PingQueueProcessor.java:1:1: class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
 * 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.pings;

import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.config.PingConfig;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.PingQueueEntry;
import org.apache.roller.weblogger.pojos.PingTarget;
import org.apache.roller.weblogger.pojos.Weblog;


/**
 * Ping Queue Processor.  Singleton encapsulating logic for processing the weblog update ping queue.
 *
 * @author <a href="mailto:anil@busybuddha.org">Anil Gangolli</a>
 */
public class PingQueueProcessor {
    
    private static final Log logger = LogFactory.getLog(PingQueueProcessor.class);
    //#PingQueueProcessor.java:41: method: org.apache.roller.weblogger.business.pings.PingQueueProcessor.org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init
    //#PingQueueProcessor.java:41: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): __Descendant_Table[org/apache/roller/weblogger/business/pings/PingQueueProcessor]
    //#output(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): __Dispatch_Table.handlePingError(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;Ljava/lang/Exception;)V
    //#output(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): __Dispatch_Table.processQueue()V
    //#output(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): __Dispatch_Table.processQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#output(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): logger
    //#post(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): __Descendant_Table[org/apache/roller/weblogger/business/pings/PingQueueProcessor] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): __Dispatch_Table.handlePingError(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;Ljava/lang/Exception;)V == &handlePingError
    //#post(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): __Dispatch_Table.processQueue()V == &processQueue
    //#post(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): __Dispatch_Table.processQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V == &processQueueEntry
    //#post(org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init): init'ed(logger)
    //#PingQueueProcessor.java:41: end of method: org.apache.roller.weblogger.business.pings.PingQueueProcessor.org.apache.roller.weblogger.business.pings.PingQueueProcessor__static_init
    
    private static PingQueueProcessor theInstance;
    
    private PingQueueManager pingQueueMgr;
    
    
    public static PingQueueProcessor getInstance() {
        return theInstance;
    //#PingQueueProcessor.java:49: method: PingQueueProcessor org.apache.roller.weblogger.business.pings.PingQueueProcessor.getInstance()
    //#input(PingQueueProcessor getInstance()): theInstance
    //#output(PingQueueProcessor getInstance()): return_value
    //#pre[1] (PingQueueProcessor getInstance()): init'ed(theInstance)
    //#post(PingQueueProcessor getInstance()): return_value == theInstance
    //#post(PingQueueProcessor getInstance()): init'ed(return_value)
    //#PingQueueProcessor.java:49: end of method: PingQueueProcessor org.apache.roller.weblogger.business.pings.PingQueueProcessor.getInstance()
    }
    
    
    private PingQueueProcessor() throws WebloggerException {
    //#PingQueueProcessor.java:53: method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.org.apache.roller.weblogger.business.pings.PingQueueProcessor()
    //#PingQueueProcessor.java:53: 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.pings.PingQueueProcessor
    //#    method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor()
    //#    suspicious precondition index: [2]
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPingQueueManager()Lorg/apache/roller/weblogger/business/pings/PingQueueManager;
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.pingQueueManager
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPingQueueManager()Lorg/apache/roller/weblogger/business/pings/PingQueueManager;
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPingQueueManager()Lorg/apache/roller/weblogger/business/pings/PingQueueManager;
    //#input(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): this
    //#output(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): this.pingQueueMgr
    //#pre[1] (void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[2] (void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[3] (void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#presumption(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): getWeblogger(...).__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#presumption(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): getWeblogger(...)@54 init'ed
    //#post(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): init'ed(this.pingQueueMgr)
    //#unanalyzed(void org.apache.roller.weblogger.business.pings.PingQueueProcessor()): Effects-of-calling:getWeblogger
        pingQueueMgr = WebloggerFactory.getWeblogger().getPingQueueManager();
    }
    //#PingQueueProcessor.java:55: end of method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.org.apache.roller.weblogger.business.pings.PingQueueProcessor()
    
    
    /**
     * Initialize the singleton.  This is called during <code>RollerContext</code> initialization.
     *
     * @throws WebloggerException
     */
    public static synchronized void init() throws WebloggerException {
        if (theInstance != null) {
    //#PingQueueProcessor.java:64: method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.init()
    //#PingQueueProcessor.java:64: 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.pings.PingQueueProcessor
    //#    method: void init()
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(void init()): logger
    //#input(void init()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void init()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void init()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void init()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void init()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void init()): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPingQueueManager()Lorg/apache/roller/weblogger/business/pings/PingQueueManager;
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.pingQueueManager
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPingQueueManager()Lorg/apache/roller/weblogger/business/pings/PingQueueManager;
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void init()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void init()): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPingQueueManager()Lorg/apache/roller/weblogger/business/pings/PingQueueManager;
    //#input(void init()): theInstance
    //#output(void init()): new PingQueueProcessor(init#1) num objects
    //#output(void init()): new PingQueueProcessor(init#1).__Tag
    //#output(void init()): new PingQueueProcessor(init#1).pingQueueMgr
    //#output(void init()): theInstance
    //#new obj(void init()): new PingQueueProcessor(init#1)
    //#pre[1] (void init()): init'ed(theInstance)
    //#pre[2] (void init()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (void init()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[4] (void init()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#presumption(void init()): org.apache.commons.logging.LogFactory:getLog(...)@41 != null
    //#post(void init()): theInstance == One-of{old theInstance, &new PingQueueProcessor(init#1)}
    //#post(void init()): theInstance != null
    //#post(void init()): new PingQueueProcessor(init#1) num objects <= 1
    //#post(void init()): init'ed(new PingQueueProcessor(init#1).__Tag)
    //#post(void init()): init'ed(new PingQueueProcessor(init#1).pingQueueMgr)
    //#unanalyzed(void init()): Effects-of-calling:getWeblogger
    //#unanalyzed(void init()): Effects-of-calling:getPingQueueManager
    //#test_vector(void init()): theInstance: Addr_Set{null}, Inverse{null}
    //#test_vector(void init()): org.apache.commons.logging.Log:isDebugEnabled(...)@69: {0}, {1}
            logger.warn("Ignoring duplicate initialization of PingQueueProcessor!");
    //#PingQueueProcessor.java:65: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void init()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
            return;
        }
        theInstance = new PingQueueProcessor();
        if (logger.isDebugEnabled()) logger.debug("Ping queue processor initialized.");
    //#PingQueueProcessor.java:69: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void init()
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#PingQueueProcessor.java:69: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void init()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    }
    //#PingQueueProcessor.java:70: end of method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.init()
    
    
    /**
     * Process the ping queue.  Performs one pass through the ping queue, processing every entry once.  On ping failure
     * an entry is requeued for processing on subsequent passes until the configured maximum number of attempts is
     * reached.
     */
    public synchronized void processQueue() {
        if (PingConfig.getSuspendPingProcessing()) {
    //#PingQueueProcessor.java:79: method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.processQueue()
    //#PingQueueProcessor.java:79: 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.pings.PingQueueProcessor
    //#    method: void processQueue()
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#PingQueueProcessor.java:79: Warning: suspicious precondition
    //#    the precondition for this.pingQueueMgr.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueue()
    //#    suspicious precondition index: [19]
    //#    Attribs:  Soft
    //#input(void processQueue()): " with variant options "._tainted
    //#input(void processQueue()): ""._tainted
    //#input(void processQueue()): "' ("._tainted
    //#input(void processQueue()): "' for website '"._tainted
    //#input(void processQueue()): "' is not an integer value.  Using default value: "._tainted
    //#input(void processQueue()): "' is not present in the configuration.  Using default value: "._tainted
    //#input(void processQueue()): "' is outside the required range ("._tainted
    //#input(void processQueue()): ") for "._tainted
    //#input(void processQueue()): ")"._tainted
    //#input(void processQueue()): ").  Using default value: "._tainted
    //#input(void processQueue()): ", "._tainted
    //#input(void processQueue()): ": ["._tainted
    //#input(void processQueue()): "; proceeding with stand-in representative."._tainted
    //#input(void processQueue()): "="._tainted
    //#input(void processQueue()): "ERROR: PingConfig property '"._tainted
    //#input(void processQueue()): "Error on ping attempt ("._tainted
    //#input(void processQueue()): "Executing ping to '"._tainted
    //#input(void processQueue()): "Fetching property ["._tainted
    //#input(void processQueue()): "Invalid ping result of type: "._tainted
    //#input(void processQueue()): "Logging simulated ping for ping queue entry "._tainted
    //#input(void processQueue()): "Ping result is: "._tainted
    //#input(void processQueue()): "PingConfig property '"._tainted
    //#input(void processQueue()): "Processed ping: "._tainted
    //#input(void processQueue()): "Processing ping queue entry: "._tainted
    //#input(void processQueue()): "Removing ping queue entry: "._tainted
    //#input(void processQueue()): "Storing ping queue entry: "._tainted
    //#input(void processQueue()): "Trouble accessing property: "._tainted
    //#input(void processQueue()): "]"._tainted
    //#input(void processQueue()): "].  Entry will be REMOVED from ping queue."._tainted
    //#input(void processQueue()): "]. Will re-queue for later attempts."._tainted
    //#input(void processQueue()): "fetched property ["._tainted
    //#input(void processQueue()): "pings.logOnly"._tainted
    //#input(void processQueue()): "pings.maxPingAttempts"._tainted
    //#input(void processQueue()): "pings.suspendPingProcessing"._tainted
    //#input(void processQueue()): "site.absoluteurl"._tainted
    //#input(void processQueue()): logger
    //#input(void processQueue()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void processQueue()): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(void processQueue()): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(void processQueue()): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(void processQueue()): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(void processQueue()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void processQueue()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void processQueue()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void processQueue()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void processQueue()): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void processQueue()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.getAllQueueEntries()Ljava/util/List;
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.removeQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.log
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(void processQueue()): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void processQueue()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl]
    //#input(void processQueue()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/PingQueueManager]
    //#input(void processQueue()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[others]
    //#input(void processQueue()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Dispatch_Table.getAllQueueEntries()Ljava/util/List;
    //#input(void processQueue()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Dispatch_Table.removeQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void processQueue()): org/apache/roller/weblogger/business/pings/PingQueueManager.__Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void processQueue()): org/apache/roller/weblogger/business/pings/WeblogUpdatePinger.logger
    //#input(void processQueue()): org/apache/roller/weblogger/config/PingConfig.configuredVariants
    //#input(void processQueue()): org/apache/roller/weblogger/config/PingConfig.java.util.Collections.EMPTY_SET
    //#input(void processQueue()): org/apache/roller/weblogger/config/PingConfig.java.util.Collections.EMPTY_SET._tainted
    //#input(void processQueue()): org/apache/roller/weblogger/config/PingConfig.logger
    //#input(void processQueue()): org/apache/roller/weblogger/config/WebloggerConfig.config
    //#input(void processQueue()): org/apache/roller/weblogger/config/WebloggerConfig.log
    //#input(void processQueue()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(void processQueue()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(void processQueue()): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[org/apache/roller/weblogger/pojos/PingQueueEntry]
    //#input(void processQueue()): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[others]
    //#input(void processQueue()): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.getAttempts()I
    //#input(void processQueue()): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.getPingTarget()Lorg/apache/roller/weblogger/pojos/PingTarget;
    //#input(void processQueue()): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.getWebsite()Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(void processQueue()): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.incrementAttempts()I
    //#input(void processQueue()): org/apache/roller/weblogger/pojos/PingQueueEntry.pcInheritedFieldCount
    //#input(void processQueue()): this
    //#input(void processQueue()): this.pingQueueMgr
    //#input(void processQueue()): this.pingQueueMgr.__Tag
    //#input(void processQueue()): this.pingQueueMgr.strategy
    //#input(void processQueue()): this.pingQueueMgr.strategy.__Tag
    //#input(void processQueue()): this.pingQueueMgr.strategy.emf
    //#input(void processQueue()): this.pingQueueMgr.strategy.threadLocalEntityManager
    //#pre[1] (void processQueue()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[2] (void processQueue()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[3] (void processQueue()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[11] (void processQueue()): (soft) org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.log != null
    //#pre[12] (void processQueue()): (soft) org/apache/roller/weblogger/config/WebloggerConfig.config != null
    //#pre[13] (void processQueue()): (soft) org/apache/roller/weblogger/config/WebloggerConfig.log != null
    //#pre[14] (void processQueue()): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[15] (void processQueue()): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[16] (void processQueue()): (soft) org/apache/roller/weblogger/pojos/PingQueueEntry.pcInheritedFieldCount <= 4_294_967_291
    //#pre[18] (void processQueue()): (soft) this.pingQueueMgr != null
    //#pre[19] (void processQueue()): (soft) this.pingQueueMgr.__Tag in {org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl, org/apache/roller/weblogger/business/pings/PingQueueManager}
    //#pre[20] (void processQueue()): (soft) this.pingQueueMgr.strategy != null
    //#pre[21] (void processQueue()): (soft) this.pingQueueMgr.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[22] (void processQueue()): (soft) this.pingQueueMgr.strategy.emf != null
    //#pre[23] (void processQueue()): (soft) this.pingQueueMgr.strategy.threadLocalEntityManager != null
    //#presumption(void processQueue()): java.util.Iterator:next(...).__Tag@102 == org/apache/roller/weblogger/pojos/PingQueueEntry
    //#presumption(void processQueue()): java.util.Iterator:next(...)@102 != null
    //#presumption(void processQueue()): javax.persistence.Query:getResultList(...)@104 != null
    //#presumption(void processQueue()): org.apache.commons.logging.LogFactory:getLog(...)@41 != null
    //#presumption(void processQueue()): pingQueueEntry.attempts@102 <= 4_294_967_294
    //#presumption(void processQueue()): pingQueueEntry.pingTarget@102 != null
    //#presumption(void processQueue()): pingQueueEntry.website@102 != null
    //#unanalyzed(void processQueue()): Effects-of-calling:getMaxPingAttempts
    //#unanalyzed(void processQueue()): Effects-of-calling:java.net.UnknownHostException:instanceof
    //#unanalyzed(void processQueue()): Effects-of-calling:java.net.MalformedURLException:instanceof
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.openjpa.enhance.StateManager:accessingField
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void processQueue()): Effects-of-calling:saveQueueEntry
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void processQueue()): Effects-of-calling:removeQueueEntry
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void processQueue()): Effects-of-calling:getLogPingsOnly
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.commons.logging.Log:info
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(void processQueue()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.Object:toString
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getAbsoluteURL
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.roller.weblogger.pojos.PingTarget:getPingUrl
    //#unanalyzed(void processQueue()): Effects-of-calling:getVariantOptions
    //#unanalyzed(void processQueue()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void processQueue()): Effects-of-calling:java.util.Set:contains
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getName
    //#unanalyzed(void processQueue()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void processQueue()): Effects-of-calling:java.util.Set:isEmpty
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClientConfigImpl
    //#unanalyzed(void processQueue()): Effects-of-calling:java.net.URL
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClientConfigImpl:setServerURL
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClient
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClient:setConfig
    //#unanalyzed(void processQueue()): Effects-of-calling:java.util.List:toArray
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClient:execute
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void processQueue()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.Boolean:valueOf
    //#unanalyzed(void processQueue()): Effects-of-calling:getBooleanProperty
    //#unanalyzed(void processQueue()): Effects-of-calling:getWeblogger
    //#unanalyzed(void processQueue()): Effects-of-calling:getPropertiesManager
    //#unanalyzed(void processQueue()): Effects-of-calling:getProperty
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void processQueue()): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void processQueue()): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void processQueue()): Effects-of-calling:java.lang.Boolean
    //#test_vector(void processQueue()): java.util.Iterator:hasNext(...)@101: {0}, {1}
    //#test_vector(void processQueue()): org.apache.commons.logging.Log:isDebugEnabled(...)@105: {0}, {1}
    //#test_vector(void processQueue()): org.apache.commons.logging.Log:isDebugEnabled(...)@96: {0}, {1}
            logger.info("Ping processing has been suspended.  Skipping current round of ping queue processing.");
    //#PingQueueProcessor.java:80: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueue()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
            return;
        }
        
        String absoluteContextUrl = WebloggerRuntimeConfig.getAbsoluteContextURL();
        if (absoluteContextUrl == null) {
            logger.warn("WARNING: Skipping current ping queue processing round because we cannot yet determine the site's absolute context url.");
    //#PingQueueProcessor.java:86: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueue()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
            return;
        }
        
        // TODO: Group by ping target and ping all sites for that target?
        // We're currently not taking advantage of grouping by ping target site and then sending
        // all of the pings for that target at once.  If it becomes an efficiency issue, we should do
        // that.
        
        try {
            if (logger.isDebugEnabled()) logger.debug("Started processing ping queue.");
    //#PingQueueProcessor.java:96: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueue()
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#PingQueueProcessor.java:96: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueue()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            // Get all of the entries
            List entries = pingQueueMgr.getAllQueueEntries();
            
            // Process each entry
            for (Iterator i = entries.iterator(); i.hasNext();) {
                PingQueueEntry pingQueueEntry = (PingQueueEntry) i.next();
                processQueueEntry(pingQueueEntry);
            }
            if (logger.isDebugEnabled()) logger.debug("Finished processing ping queue.");
    //#PingQueueProcessor.java:105: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueue()
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#PingQueueProcessor.java:105: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueue()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        } catch (Exception ex) {
            logger.error("Unexpected exception processing ping queue!  Aborting this pass of ping queue processing.", ex);
    //#PingQueueProcessor.java:107: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueue()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
        }
    }
    //#PingQueueProcessor.java:109: end of method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.processQueue()
    
    
    /**
     * Process an individual ping queue entry.
     *
     * @param pingQueueEntry     the ping queue entry
     * @throws WebloggerException only if there are problems processing the queue.  Exceptions from sending pings are
     *                         handled, not thrown.
     */
    private void processQueueEntry(PingQueueEntry pingQueueEntry) throws WebloggerException {
        if (logger.isDebugEnabled()) logger.debug("Processing ping queue entry: " + pingQueueEntry);
    //#PingQueueProcessor.java:120: method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.processQueueEntry(PingQueueEntry)
    //#PingQueueProcessor.java:120: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueueEntry(PingQueueEntry)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#PingQueueProcessor.java:120: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueueEntry(PingQueueEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#PingQueueProcessor.java:120: Warning: suspicious precondition
    //#    the precondition for this.pingQueueMgr.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueueEntry(PingQueueEntry)
    //#    suspicious precondition index: [14]
    //#    Attribs:  Soft
    //#input(void processQueueEntry(PingQueueEntry)): " with variant options "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): ""._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "' ("._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "' for website '"._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "' is not an integer value.  Using default value: "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "' is not present in the configuration.  Using default value: "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "' is outside the required range ("._tainted
    //#input(void processQueueEntry(PingQueueEntry)): ") for "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): ")"._tainted
    //#input(void processQueueEntry(PingQueueEntry)): ").  Using default value: "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): ", "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): ": ["._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "; proceeding with stand-in representative."._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "="._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "ERROR: PingConfig property '"._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Error on ping attempt ("._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Executing ping to '"._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Fetching property ["._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Invalid ping result of type: "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Logging simulated ping for ping queue entry "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Ping result is: "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "PingConfig property '"._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Processed ping: "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Processing ping queue entry: "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Removing ping queue entry: "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "Storing ping queue entry: "._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "]"._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "].  Entry will be REMOVED from ping queue."._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "]. Will re-queue for later attempts."._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "pings.logOnly"._tainted
    //#input(void processQueueEntry(PingQueueEntry)): "pings.maxPingAttempts"._tainted
    //#input(void processQueueEntry(PingQueueEntry)): logger
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.removeQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.log
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl]
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/PingQueueManager]
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[others]
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Dispatch_Table.removeQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/pings/WeblogUpdatePinger.logger
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/config/PingConfig.configuredVariants
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/config/PingConfig.java.util.Collections.EMPTY_SET
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/config/PingConfig.java.util.Collections.EMPTY_SET._tainted
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/config/PingConfig.logger
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/config/WebloggerConfig.config
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/config/WebloggerConfig.log
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[org/apache/roller/weblogger/pojos/PingQueueEntry]
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[others]
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.getAttempts()I
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.getPingTarget()Lorg/apache/roller/weblogger/pojos/PingTarget;
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.getWebsite()Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.incrementAttempts()I
    //#input(void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/pojos/PingQueueEntry.pcInheritedFieldCount
    //#input(void processQueueEntry(PingQueueEntry)): pingQueueEntry
    //#input(void processQueueEntry(PingQueueEntry)): pingQueueEntry.__Tag
    //#input(void processQueueEntry(PingQueueEntry)): pingQueueEntry._tainted
    //#input(void processQueueEntry(PingQueueEntry)): pingQueueEntry.attempts
    //#input(void processQueueEntry(PingQueueEntry)): pingQueueEntry.pcStateManager
    //#input(void processQueueEntry(PingQueueEntry)): pingQueueEntry.pingTarget
    //#input(void processQueueEntry(PingQueueEntry)): pingQueueEntry.website
    //#input(void processQueueEntry(PingQueueEntry)): this
    //#input(void processQueueEntry(PingQueueEntry)): this.pingQueueMgr
    //#input(void processQueueEntry(PingQueueEntry)): this.pingQueueMgr.__Tag
    //#input(void processQueueEntry(PingQueueEntry)): this.pingQueueMgr.strategy
    //#input(void processQueueEntry(PingQueueEntry)): this.pingQueueMgr.strategy.__Tag
    //#input(void processQueueEntry(PingQueueEntry)): this.pingQueueMgr.strategy.emf
    //#input(void processQueueEntry(PingQueueEntry)): this.pingQueueMgr.strategy.threadLocalEntityManager
    //#output(void processQueueEntry(PingQueueEntry)): pingQueueEntry.attempts
    //#pre[3] (void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/config/WebloggerConfig.config != null
    //#pre[4] (void processQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/config/WebloggerConfig.log != null
    //#pre[6] (void processQueueEntry(PingQueueEntry)): pingQueueEntry != null
    //#pre[7] (void processQueueEntry(PingQueueEntry)): pingQueueEntry.__Tag == org/apache/roller/weblogger/pojos/PingQueueEntry
    //#pre[9] (void processQueueEntry(PingQueueEntry)): init'ed(pingQueueEntry.pcStateManager)
    //#pre[1] (void processQueueEntry(PingQueueEntry)): (soft) pingQueueEntry.attempts <= 4_294_967_294
    //#pre[2] (void processQueueEntry(PingQueueEntry)): (soft) org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.log != null
    //#pre[5] (void processQueueEntry(PingQueueEntry)): (soft) org/apache/roller/weblogger/pojos/PingQueueEntry.pcInheritedFieldCount <= 4_294_967_291
    //#pre[10] (void processQueueEntry(PingQueueEntry)): (soft) pingQueueEntry.pingTarget != null
    //#pre[11] (void processQueueEntry(PingQueueEntry)): (soft) pingQueueEntry.website != null
    //#pre[13] (void processQueueEntry(PingQueueEntry)): (soft) this.pingQueueMgr != null
    //#pre[14] (void processQueueEntry(PingQueueEntry)): (soft) this.pingQueueMgr.__Tag in {org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl, org/apache/roller/weblogger/business/pings/PingQueueManager}
    //#pre[15] (void processQueueEntry(PingQueueEntry)): (soft) this.pingQueueMgr.strategy != null
    //#pre[16] (void processQueueEntry(PingQueueEntry)): (soft) this.pingQueueMgr.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[17] (void processQueueEntry(PingQueueEntry)): (soft) this.pingQueueMgr.strategy.emf != null
    //#pre[18] (void processQueueEntry(PingQueueEntry)): (soft) this.pingQueueMgr.strategy.threadLocalEntityManager != null
    //#presumption(void processQueueEntry(PingQueueEntry)): org.apache.commons.logging.LogFactory:getLog(...)@41 != null
    //#post(void processQueueEntry(PingQueueEntry)): pingQueueEntry.attempts == One-of{old pingQueueEntry.attempts, old pingQueueEntry.attempts + 1}
    //#post(void processQueueEntry(PingQueueEntry)): (soft) init'ed(pingQueueEntry.attempts)
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:getMaxPingAttempts
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.net.UnknownHostException:instanceof
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.net.MalformedURLException:instanceof
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.openjpa.enhance.StateManager:accessingField
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.Exception:getMessage
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:saveQueueEntry
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:removeQueueEntry
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.Object:toString
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getAbsoluteURL
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.PingTarget:getPingUrl
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:getVariantOptions
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.util.Set:contains
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getName
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.util.Set:isEmpty
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClientConfigImpl
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.net.URL
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClientConfigImpl:setServerURL
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClient
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClient:setConfig
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.util.List:toArray
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.xmlrpc.client.XmlRpcClient:execute
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void processQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.Boolean:valueOf
    //#test_vector(void processQueueEntry(PingQueueEntry)): org.apache.commons.logging.Log:isDebugEnabled(...)@120: {0}, {1}
    //#test_vector(void processQueueEntry(PingQueueEntry)): org.apache.commons.logging.Log:isDebugEnabled(...)@144: {0}, {1}
        
        PingTarget pingTarget = pingQueueEntry.getPingTarget();
        Weblog website = pingQueueEntry.getWebsite();
        boolean pingSucceeded = false;
        if (PingConfig.getLogPingsOnly()) {
            // Just log the ping and pretend it succeeded.
            logger.info("Logging simulated ping for ping queue entry " + pingQueueEntry);
    //#PingQueueProcessor.java:127: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueueEntry(PingQueueEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
            pingSucceeded = true;
        } else {
            // Actually process the ping
            try {
                // Send the ping
                WeblogUpdatePinger.sendPing(pingTarget, website);
                // Consider successful ping transmission if we didn't get an exception.  We don't care here
                // about the result of the ping if it was transmitted.
                pingSucceeded = true;
            } catch (Exception ex) {
                // Handle the ping error, either removing or requeuing the ping queue entry.
                handlePingError(pingQueueEntry, ex);
            }
        }
        // We do this outside of the previous try-catch because we don't want an exception here to be considered a ping error.
        if (pingSucceeded) {
            if (logger.isDebugEnabled()) logger.debug("Processed ping: " + pingQueueEntry);
    //#PingQueueProcessor.java:144: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueueEntry(PingQueueEntry)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#PingQueueProcessor.java:144: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void processQueueEntry(PingQueueEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            pingQueueMgr.removeQueueEntry(pingQueueEntry);
        }
    }
    //#PingQueueProcessor.java:147: end of method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.processQueueEntry(PingQueueEntry)
    
    
    /**
     * Handle any ping error.
     *
     * @param pingQueueEntry the ping queue entry
     * @param ex             the exception that occurred on the ping attempt
     * @throws WebloggerException
     */
    private void handlePingError(PingQueueEntry pingQueueEntry, Exception ex)
            throws WebloggerException {
        
        if ((pingQueueEntry.incrementAttempts() < PingConfig.getMaxPingAttempts()) && WeblogUpdatePinger.shouldRetry(ex)) {
    //#PingQueueProcessor.java:160: method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.handlePingError(PingQueueEntry, Exception)
    //#PingQueueProcessor.java:160: Warning: suspicious precondition
    //#    the precondition for this.pingQueueMgr.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void handlePingError(PingQueueEntry, Exception)
    //#    suspicious precondition index: [13]
    //#input(void handlePingError(PingQueueEntry, Exception)): "' is not an integer value.  Using default value: "._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "' is not present in the configuration.  Using default value: "._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "' is outside the required range ("._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): ") for "._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): ").  Using default value: "._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): ", "._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): ": ["._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "="._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "ERROR: PingConfig property '"._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "Error on ping attempt ("._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "Fetching property ["._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "PingConfig property '"._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "Removing ping queue entry: "._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "Storing ping queue entry: "._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "]"._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "].  Entry will be REMOVED from ping queue."._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "]. Will re-queue for later attempts."._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): "pings.maxPingAttempts"._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): ex
    //#input(void handlePingError(PingQueueEntry, Exception)): logger
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.removeQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.log
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl]
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/PingQueueManager]
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[others]
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Dispatch_Table.removeQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/config/PingConfig.logger
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/config/WebloggerConfig.config
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/config/WebloggerConfig.log
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[org/apache/roller/weblogger/pojos/PingQueueEntry]
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[others]
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.getAttempts()I
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Dispatch_Table.incrementAttempts()I
    //#input(void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/pojos/PingQueueEntry.pcInheritedFieldCount
    //#input(void handlePingError(PingQueueEntry, Exception)): pingQueueEntry
    //#input(void handlePingError(PingQueueEntry, Exception)): pingQueueEntry.__Tag
    //#input(void handlePingError(PingQueueEntry, Exception)): pingQueueEntry._tainted
    //#input(void handlePingError(PingQueueEntry, Exception)): pingQueueEntry.attempts
    //#input(void handlePingError(PingQueueEntry, Exception)): pingQueueEntry.pcStateManager
    //#input(void handlePingError(PingQueueEntry, Exception)): this
    //#input(void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr
    //#input(void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr.__Tag
    //#input(void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr.strategy
    //#input(void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr.strategy.__Tag
    //#input(void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr.strategy.emf
    //#input(void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr.strategy.threadLocalEntityManager
    //#output(void handlePingError(PingQueueEntry, Exception)): pingQueueEntry.attempts
    //#pre[1] (void handlePingError(PingQueueEntry, Exception)): ex != null
    //#pre[2] (void handlePingError(PingQueueEntry, Exception)): pingQueueEntry.attempts <= 4_294_967_294
    //#pre[3] (void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.log != null
    //#pre[4] (void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/config/WebloggerConfig.config != null
    //#pre[5] (void handlePingError(PingQueueEntry, Exception)): org/apache/roller/weblogger/config/WebloggerConfig.log != null
    //#pre[7] (void handlePingError(PingQueueEntry, Exception)): pingQueueEntry != null
    //#pre[8] (void handlePingError(PingQueueEntry, Exception)): pingQueueEntry.__Tag == org/apache/roller/weblogger/pojos/PingQueueEntry
    //#pre[10] (void handlePingError(PingQueueEntry, Exception)): init'ed(pingQueueEntry.pcStateManager)
    //#pre[12] (void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr != null
    //#pre[13] (void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr.__Tag in {org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl, org/apache/roller/weblogger/business/pings/PingQueueManager}
    //#pre[14] (void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr.strategy != null
    //#pre[15] (void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[17] (void handlePingError(PingQueueEntry, Exception)): this.pingQueueMgr.strategy.threadLocalEntityManager != null
    //#pre[6] (void handlePingError(PingQueueEntry, Exception)): (soft) init'ed(org/apache/roller/weblogger/pojos/PingQueueEntry.pcInheritedFieldCount)
    //#pre[16] (void handlePingError(PingQueueEntry, Exception)): (soft) this.pingQueueMgr.strategy.emf != null
    //#presumption(void handlePingError(PingQueueEntry, Exception)): org.apache.commons.logging.LogFactory:getLog(...)@41 != null
    //#post(void handlePingError(PingQueueEntry, Exception)): pingQueueEntry.attempts == old pingQueueEntry.attempts + 1
    //#post(void handlePingError(PingQueueEntry, Exception)): pingQueueEntry.attempts >= -2_147_483_647
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.net.UnknownHostException:instanceof
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.net.MalformedURLException:instanceof
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:org.apache.openjpa.enhance.StateManager:accessingField
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void handlePingError(PingQueueEntry, Exception)): Effects-of-calling:javax.persistence.EntityManager:remove
            // We have attempts remaining, and it looks like we should retry,
            // so requeue the entry for processing on subsequent rounds
            logger.debug("Error on ping attempt (" + pingQueueEntry.getAttempts() + ") for " + pingQueueEntry + ": [" + ex.getMessage() + "]. Will re-queue for later attempts.");
    //#PingQueueProcessor.java:163: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void handlePingError(PingQueueEntry, Exception)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            logger.debug("Error on last ping attempt was: ", ex);
    //#PingQueueProcessor.java:164: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void handlePingError(PingQueueEntry, Exception)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object, Throwable)
            pingQueueMgr.saveQueueEntry(pingQueueEntry);
        } else {
            // Remove the entry
            logger.warn("Error on ping attempt (" + pingQueueEntry.getAttempts() + ") for " + pingQueueEntry + ": [" + ex.getMessage() + "].  Entry will be REMOVED from ping queue.");
    //#PingQueueProcessor.java:168: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void handlePingError(PingQueueEntry, Exception)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
            logger.debug("Error on last ping attempt was: ", ex);
    //#PingQueueProcessor.java:169: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
    //#    method: void handlePingError(PingQueueEntry, Exception)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object, Throwable)
            pingQueueMgr.removeQueueEntry(pingQueueEntry);
            // TODO: mark ping target invalid?
        }
    }
    //#PingQueueProcessor.java:173: end of method: void org.apache.roller.weblogger.business.pings.PingQueueProcessor.handlePingError(PingQueueEntry, Exception)
    
}
    //#PingQueueProcessor.java:: end of class: org.apache.roller.weblogger.business.pings.PingQueueProcessor
