//# 0 errors, 252 messages
//#

    //#JPAPingQueueManagerImpl.java:1:1: class: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl
/*
 * 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.jpa;

import java.sql.Timestamp;
import java.util.List;
import javax.persistence.Query;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.jpa.JPAPersistenceStrategy;

import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.Weblogger;

import org.apache.roller.weblogger.business.pings.PingQueueManager;
import org.apache.roller.weblogger.pojos.AutoPing;
import org.apache.roller.weblogger.pojos.PingQueueEntry;

/*
 * JPAPingQueueManagerImpl.java
 *
 * Created on May 28, 2006, 4:11 PM
 *
 */
@com.google.inject.Singleton
public class JPAPingQueueManagerImpl implements PingQueueManager {

    private static Log log = LogFactory.getLog(
    //#JPAPingQueueManagerImpl.java:45: method: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init
    //#JPAPingQueueManagerImpl.java:45: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl]
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.addQueueEntry(Lorg/apache/roller/weblogger/pojos/AutoPing;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.getAllQueueEntries()Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.getQueueEntry(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/PingQueueEntry;
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.isAlreadyQueued(Lorg/apache/roller/weblogger/pojos/AutoPing;)Z
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.release()V
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.removeQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): log
    //#output(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl]
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.addQueueEntry(Lorg/apache/roller/weblogger/pojos/AutoPing;)V == &addQueueEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.getAllQueueEntries()Ljava/util/List; == &getAllQueueEntries
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.getQueueEntry(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/PingQueueEntry; == &getQueueEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.isAlreadyQueued(Lorg/apache/roller/weblogger/pojos/AutoPing;)Z == &isAlreadyQueued
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.release()V == &release
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.removeQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V == &removeQueueEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): __Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V == &saveQueueEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init): init'ed(log)
    //#JPAPingQueueManagerImpl.java:45: end of method: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl__static_init
        JPAPingQueueManagerImpl.class);

    /** The strategy for this manager. */
    private final Weblogger roller;
    private final JPAPersistenceStrategy strategy;
    

    /**
     * Creates a new instance of JPAPingQueueManagerImpl
     */
    @com.google.inject.Inject
    protected JPAPingQueueManagerImpl(Weblogger roller, JPAPersistenceStrategy strategy) {
    //#JPAPingQueueManagerImpl.java:57: method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)
    //#input(void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)): roller
    //#input(void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)): strategy
    //#input(void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)): this
    //#output(void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller
    //#output(void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy
    //#post(void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller == roller
    //#post(void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.roller)
    //#post(void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy == strategy
    //#post(void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.strategy)
        this.roller = roller;
        this.strategy =  strategy;
    }
    //#JPAPingQueueManagerImpl.java:60: end of method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl(Weblogger, JPAPersistenceStrategy)

    
    public PingQueueEntry getQueueEntry(String id) 
            throws WebloggerException {
        return (PingQueueEntry)strategy.load(
    //#JPAPingQueueManagerImpl.java:65: method: PingQueueEntry org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.getQueueEntry(String)
    //#input(PingQueueEntry getQueueEntry(String)): id
    //#input(PingQueueEntry getQueueEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(PingQueueEntry getQueueEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(PingQueueEntry getQueueEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(PingQueueEntry getQueueEntry(String)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[org/apache/roller/weblogger/pojos/PingQueueEntry]
    //#input(PingQueueEntry getQueueEntry(String)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[others]
    //#input(PingQueueEntry getQueueEntry(String)): this
    //#input(PingQueueEntry getQueueEntry(String)): this.strategy
    //#input(PingQueueEntry getQueueEntry(String)): this.strategy.__Tag
    //#input(PingQueueEntry getQueueEntry(String)): this.strategy.emf
    //#input(PingQueueEntry getQueueEntry(String)): this.strategy.threadLocalEntityManager
    //#output(PingQueueEntry getQueueEntry(String)): return_value
    //#pre[3] (PingQueueEntry getQueueEntry(String)): this.strategy != null
    //#pre[4] (PingQueueEntry getQueueEntry(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (PingQueueEntry getQueueEntry(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (PingQueueEntry getQueueEntry(String)): (soft) this.strategy.emf != null
    //#presumption(PingQueueEntry getQueueEntry(String)): load(...).__Tag@65 == org/apache/roller/weblogger/pojos/PingQueueEntry
    //#post(PingQueueEntry getQueueEntry(String)): init'ed(return_value)
    //#unanalyzed(PingQueueEntry getQueueEntry(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(PingQueueEntry getQueueEntry(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(PingQueueEntry getQueueEntry(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(PingQueueEntry getQueueEntry(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(PingQueueEntry getQueueEntry(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(PingQueueEntry getQueueEntry(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(PingQueueEntry getQueueEntry(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#JPAPingQueueManagerImpl.java:65: end of method: PingQueueEntry org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.getQueueEntry(String)
            PingQueueEntry.class, id);
    }

    public void saveQueueEntry(PingQueueEntry pingQueueEntry) 
            throws WebloggerException {
        log.debug("Storing ping queue entry: " + pingQueueEntry);
    //#JPAPingQueueManagerImpl.java:71: method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.saveQueueEntry(PingQueueEntry)
    //#JPAPingQueueManagerImpl.java:71: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl
    //#    method: void saveQueueEntry(PingQueueEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void saveQueueEntry(PingQueueEntry)): "Storing ping queue entry: "._tainted
    //#input(void saveQueueEntry(PingQueueEntry)): log
    //#input(void saveQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveQueueEntry(PingQueueEntry)): pingQueueEntry
    //#input(void saveQueueEntry(PingQueueEntry)): pingQueueEntry._tainted
    //#input(void saveQueueEntry(PingQueueEntry)): this
    //#input(void saveQueueEntry(PingQueueEntry)): this.strategy
    //#input(void saveQueueEntry(PingQueueEntry)): this.strategy.__Tag
    //#input(void saveQueueEntry(PingQueueEntry)): this.strategy.emf
    //#input(void saveQueueEntry(PingQueueEntry)): this.strategy.threadLocalEntityManager
    //#pre[1] (void saveQueueEntry(PingQueueEntry)): log != null
    //#pre[5] (void saveQueueEntry(PingQueueEntry)): this.strategy != null
    //#pre[6] (void saveQueueEntry(PingQueueEntry)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (void saveQueueEntry(PingQueueEntry)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (void saveQueueEntry(PingQueueEntry)): (soft) this.strategy.emf != null
    //#unanalyzed(void saveQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManager:persist
        strategy.store(pingQueueEntry);
    }
    //#JPAPingQueueManagerImpl.java:73: end of method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.saveQueueEntry(PingQueueEntry)

    public void removeQueueEntry(PingQueueEntry pingQueueEntry) 
            throws WebloggerException {
        log.debug("Removing ping queue entry: " + pingQueueEntry);
    //#JPAPingQueueManagerImpl.java:77: method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.removeQueueEntry(PingQueueEntry)
    //#JPAPingQueueManagerImpl.java:77: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl
    //#    method: void removeQueueEntry(PingQueueEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void removeQueueEntry(PingQueueEntry)): "Removing ping queue entry: "._tainted
    //#input(void removeQueueEntry(PingQueueEntry)): log
    //#input(void removeQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeQueueEntry(PingQueueEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeQueueEntry(PingQueueEntry)): pingQueueEntry
    //#input(void removeQueueEntry(PingQueueEntry)): pingQueueEntry._tainted
    //#input(void removeQueueEntry(PingQueueEntry)): this
    //#input(void removeQueueEntry(PingQueueEntry)): this.strategy
    //#input(void removeQueueEntry(PingQueueEntry)): this.strategy.__Tag
    //#input(void removeQueueEntry(PingQueueEntry)): this.strategy.emf
    //#input(void removeQueueEntry(PingQueueEntry)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removeQueueEntry(PingQueueEntry)): log != null
    //#pre[5] (void removeQueueEntry(PingQueueEntry)): this.strategy != null
    //#pre[6] (void removeQueueEntry(PingQueueEntry)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (void removeQueueEntry(PingQueueEntry)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (void removeQueueEntry(PingQueueEntry)): (soft) this.strategy.emf != null
    //#unanalyzed(void removeQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeQueueEntry(PingQueueEntry)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeQueueEntry(PingQueueEntry)): Effects-of-calling:javax.persistence.EntityManager:remove
        strategy.remove(pingQueueEntry);
    }
    //#JPAPingQueueManagerImpl.java:79: end of method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.removeQueueEntry(PingQueueEntry)

    
    public void addQueueEntry(AutoPing autoPing) throws WebloggerException {
        log.debug("Creating new ping queue entry for auto ping configuration: " 
    //#JPAPingQueueManagerImpl.java:83: method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.addQueueEntry(AutoPing)
    //#JPAPingQueueManagerImpl.java:83: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl
    //#    method: void addQueueEntry(AutoPing)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void addQueueEntry(AutoPing)): "A ping queue entry is already present for this ping target and website: "._tainted
    //#input(void addQueueEntry(AutoPing)): "Creating new ping queue entry for auto ping configuration: "._tainted
    //#input(void addQueueEntry(AutoPing)): "Storing ping queue entry: "._tainted
    //#input(void addQueueEntry(AutoPing)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl]
    //#input(void addQueueEntry(AutoPing)): __Descendant_Table[others]
    //#input(void addQueueEntry(AutoPing)): __Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void addQueueEntry(AutoPing)): autoPing
    //#input(void addQueueEntry(AutoPing)): autoPing.__Tag
    //#input(void addQueueEntry(AutoPing)): autoPing._tainted
    //#input(void addQueueEntry(AutoPing)): autoPing.pcStateManager
    //#input(void addQueueEntry(AutoPing)): autoPing.pingTarget
    //#input(void addQueueEntry(AutoPing)): autoPing.website
    //#input(void addQueueEntry(AutoPing)): log
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.__Descendant_Table[org/apache/roller/weblogger/pojos/AutoPing]
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.__Descendant_Table[others]
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.__Dispatch_Table.getPingTarget()Lorg/apache/roller/weblogger/pojos/PingTarget;
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.__Dispatch_Table.getWebsite()Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(void addQueueEntry(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.pcInheritedFieldCount
    //#input(void addQueueEntry(AutoPing)): this
    //#input(void addQueueEntry(AutoPing)): this.__Tag
    //#input(void addQueueEntry(AutoPing)): this.strategy
    //#input(void addQueueEntry(AutoPing)): this.strategy.__Tag
    //#input(void addQueueEntry(AutoPing)): this.strategy.emf
    //#input(void addQueueEntry(AutoPing)): this.strategy.threadLocalEntityManager
    //#pre[1] (void addQueueEntry(AutoPing)): autoPing != null
    //#pre[2] (void addQueueEntry(AutoPing)): autoPing.__Tag == org/apache/roller/weblogger/pojos/AutoPing
    //#pre[4] (void addQueueEntry(AutoPing)): init'ed(autoPing.pcStateManager)
    //#pre[5] (void addQueueEntry(AutoPing)): init'ed(autoPing.pingTarget)
    //#pre[6] (void addQueueEntry(AutoPing)): init'ed(autoPing.website)
    //#pre[7] (void addQueueEntry(AutoPing)): log != null
    //#pre[11] (void addQueueEntry(AutoPing)): this.strategy != null
    //#pre[12] (void addQueueEntry(AutoPing)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[14] (void addQueueEntry(AutoPing)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (void addQueueEntry(AutoPing)): (soft) org/apache/roller/weblogger/pojos/AutoPing.pcInheritedFieldCount <= 4_294_967_293
    //#pre[10] (void addQueueEntry(AutoPing)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl
    //#pre[13] (void addQueueEntry(AutoPing)): (soft) this.strategy.emf != null
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:org.apache.openjpa.enhance.StateManager:accessingField
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void addQueueEntry(AutoPing)): Effects-of-calling:org.apache.roller.util.UUIDGenerator:generateUUID
            + autoPing);
        
        // First check if there is an existing ping queue entry 
        // for the same target and website
        if (isAlreadyQueued(autoPing)) {
            log.debug("A ping queue entry is already present" +
    //#JPAPingQueueManagerImpl.java:89: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl
    //#    method: void addQueueEntry(AutoPing)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                " for this ping target and website: " + autoPing);
            return;
        }

        Timestamp now = new Timestamp(System.currentTimeMillis());
        PingQueueEntry pingQueueEntry =
                new PingQueueEntry(
                    null, now, autoPing.getPingTarget(), 
                    autoPing.getWebsite(), 0);
        this.saveQueueEntry(pingQueueEntry);
    }
    //#JPAPingQueueManagerImpl.java:100: end of method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.addQueueEntry(AutoPing)

    public List getAllQueueEntries() 
            throws WebloggerException {
        return (List)strategy.getNamedQuery(
    //#JPAPingQueueManagerImpl.java:104: method: List org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.getAllQueueEntries()
    //#input(List getAllQueueEntries()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getAllQueueEntries()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getAllQueueEntries()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getAllQueueEntries()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getAllQueueEntries()): this
    //#input(List getAllQueueEntries()): this.strategy
    //#input(List getAllQueueEntries()): this.strategy.__Tag
    //#input(List getAllQueueEntries()): this.strategy.emf
    //#input(List getAllQueueEntries()): this.strategy.threadLocalEntityManager
    //#output(List getAllQueueEntries()): return_value
    //#pre[2] (List getAllQueueEntries()): this.strategy != null
    //#pre[3] (List getAllQueueEntries()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getAllQueueEntries()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (List getAllQueueEntries()): (soft) this.strategy.emf != null
    //#post(List getAllQueueEntries()): init'ed(return_value)
    //#unanalyzed(List getAllQueueEntries()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getAllQueueEntries()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getAllQueueEntries()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getAllQueueEntries()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getAllQueueEntries()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getAllQueueEntries()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getAllQueueEntries()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getAllQueueEntries()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#JPAPingQueueManagerImpl.java:104: end of method: List org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.getAllQueueEntries()
                "PingQueueEntry.getAllOrderByEntryTime").getResultList();
    }

    // private helper to determine if an has already been queued 
    // for the same website and ping target.
    private boolean isAlreadyQueued(AutoPing autoPing) 
        throws WebloggerException {
        // first, determine if an entry already exists
        Query q = strategy.getNamedQuery("PingQueueEntry.getByPingTarget&Website");
    //#JPAPingQueueManagerImpl.java:113: method: bool org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.isAlreadyQueued(AutoPing)
    //#input(bool isAlreadyQueued(AutoPing)): autoPing
    //#input(bool isAlreadyQueued(AutoPing)): autoPing.__Tag
    //#input(bool isAlreadyQueued(AutoPing)): autoPing.pcStateManager
    //#input(bool isAlreadyQueued(AutoPing)): autoPing.pingTarget
    //#input(bool isAlreadyQueued(AutoPing)): autoPing.website
    //#input(bool isAlreadyQueued(AutoPing)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(bool isAlreadyQueued(AutoPing)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(bool isAlreadyQueued(AutoPing)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(bool isAlreadyQueued(AutoPing)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(bool isAlreadyQueued(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.__Descendant_Table[org/apache/roller/weblogger/pojos/AutoPing]
    //#input(bool isAlreadyQueued(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.__Descendant_Table[others]
    //#input(bool isAlreadyQueued(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.__Dispatch_Table.getPingTarget()Lorg/apache/roller/weblogger/pojos/PingTarget;
    //#input(bool isAlreadyQueued(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.__Dispatch_Table.getWebsite()Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(bool isAlreadyQueued(AutoPing)): org/apache/roller/weblogger/pojos/AutoPing.pcInheritedFieldCount
    //#input(bool isAlreadyQueued(AutoPing)): this
    //#input(bool isAlreadyQueued(AutoPing)): this.strategy
    //#input(bool isAlreadyQueued(AutoPing)): this.strategy.__Tag
    //#input(bool isAlreadyQueued(AutoPing)): this.strategy.emf
    //#input(bool isAlreadyQueued(AutoPing)): this.strategy.threadLocalEntityManager
    //#output(bool isAlreadyQueued(AutoPing)): return_value
    //#pre[1] (bool isAlreadyQueued(AutoPing)): autoPing != null
    //#pre[2] (bool isAlreadyQueued(AutoPing)): autoPing.__Tag == org/apache/roller/weblogger/pojos/AutoPing
    //#pre[3] (bool isAlreadyQueued(AutoPing)): init'ed(autoPing.pcStateManager)
    //#pre[4] (bool isAlreadyQueued(AutoPing)): init'ed(autoPing.pingTarget)
    //#pre[5] (bool isAlreadyQueued(AutoPing)): init'ed(autoPing.website)
    //#pre[8] (bool isAlreadyQueued(AutoPing)): this.strategy != null
    //#pre[9] (bool isAlreadyQueued(AutoPing)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[11] (bool isAlreadyQueued(AutoPing)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (bool isAlreadyQueued(AutoPing)): (soft) org/apache/roller/weblogger/pojos/AutoPing.pcInheritedFieldCount <= 4_294_967_293
    //#pre[10] (bool isAlreadyQueued(AutoPing)): (soft) this.strategy.emf != null
    //#presumption(bool isAlreadyQueued(AutoPing)): javax.persistence.Query:getResultList(...)@116 != null
    //#post(bool isAlreadyQueued(AutoPing)): init'ed(return_value)
    //#unanalyzed(bool isAlreadyQueued(AutoPing)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(bool isAlreadyQueued(AutoPing)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(bool isAlreadyQueued(AutoPing)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(bool isAlreadyQueued(AutoPing)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(bool isAlreadyQueued(AutoPing)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(bool isAlreadyQueued(AutoPing)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(bool isAlreadyQueued(AutoPing)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(bool isAlreadyQueued(AutoPing)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(bool isAlreadyQueued(AutoPing)): Effects-of-calling:org.apache.openjpa.enhance.StateManager:accessingField
        q.setParameter(1, autoPing.getPingTarget());
        q.setParameter(2, autoPing.getWebsite());
        return q.getResultList().size() > 0;
    //#JPAPingQueueManagerImpl.java:116: end of method: bool org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.isAlreadyQueued(AutoPing)
    }

    public void release() {}
    //#JPAPingQueueManagerImpl.java:119: method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.release()
    //#JPAPingQueueManagerImpl.java:119: end of method: void org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl.release()
    

}
    //#JPAPingQueueManagerImpl.java:: end of class: org.apache.roller.weblogger.business.jpa.JPAPingQueueManagerImpl
