//# 12 errors, 1,318 messages
//#

    //#JPARefererManagerImpl.java:1:1: class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#JPARefererManagerImpl.java:1:1: method: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable.org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable__static_init
    //#JPARefererManagerImpl.java:1:1: class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
/*
 * 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.Iterator;
import java.util.List;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Collections;
import java.util.Comparator;
import javax.persistence.Query;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.lang.StringUtils;
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.UserManager;
import org.apache.roller.weblogger.business.WeblogManager;
import org.apache.roller.weblogger.business.referrers.RefererManager;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.WeblogReferrer;
import org.apache.roller.weblogger.pojos.StatCount;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.StatCountCountComparator;
import org.apache.roller.weblogger.util.LinkbackExtractor;
import org.apache.roller.weblogger.util.Utilities;

/*
 * JPARefererManagerImpl.java
 */
@com.google.inject.Singleton
    //#JPARefererManagerImpl.java:53: method: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): $assertionsDisabled
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.applyRefererFilters()V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.applyRefererFilters(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.clearDayHits()V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.clearDayHitsByWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.clearReferrers()V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.clearReferrers(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getBlackListedReferer(Lorg/apache/roller/weblogger/pojos/Weblog;[Ljava/lang/String;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getBlackListedReferer([Ljava/lang/String;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getDayHits(Lorg/apache/roller/weblogger/pojos/Weblog;)I
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getExistingReferers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getHits(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)I
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getHotWeblogs(III)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getMatchingReferers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getQueryStringForBlackList([Ljava/lang/String;)Ljava/lang/StringBuffer;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferer(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogReferrer;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferers(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferersToDate(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferersToEntry(Ljava/lang/String;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferersToWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferersWithSameTitle(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getTodaysReferers(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getTotalHits(Lorg/apache/roller/weblogger/pojos/Weblog;)I
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.processReferrer(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.release()V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.removeReferer(Lorg/apache/roller/weblogger/pojos/WeblogReferrer;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.saveReferer(Lorg/apache/roller/weblogger/pojos/WeblogReferrer;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): log
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): org/apache/roller/weblogger/business/referrers/RefererManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): statCountCountReverseComparator
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): $assertionsDisabled == 0
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): org/apache/roller/weblogger/business/referrers/RefererManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.applyRefererFilters()V == &applyRefererFilters
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.applyRefererFilters(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &applyRefererFilters
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.clearDayHits()V == &clearDayHits
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.clearDayHitsByWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &clearDayHitsByWebsite
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.clearReferrers()V == &clearReferrers
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.clearReferrers(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &clearReferrers
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getBlackListedReferer(Lorg/apache/roller/weblogger/pojos/Weblog;[Ljava/lang/String;)Ljava/util/List; == &getBlackListedReferer
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getBlackListedReferer([Ljava/lang/String;)Ljava/util/List; == &getBlackListedReferer
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getDayHits(Lorg/apache/roller/weblogger/pojos/Weblog;)I == &getDayHits
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getExistingReferers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; == &getExistingReferers
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getHits(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)I == &getHits
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getHotWeblogs(III)Ljava/util/List; == &getHotWeblogs
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getMatchingReferers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; == &getMatchingReferers
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getQueryStringForBlackList([Ljava/lang/String;)Ljava/lang/StringBuffer; == &getQueryStringForBlackList
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferer(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogReferrer; == &getReferer
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferers(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List; == &getReferers
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferersToDate(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Ljava/util/List; == &getReferersToDate
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferersToEntry(Ljava/lang/String;)Ljava/util/List; == &getReferersToEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferersToWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Ljava/util/List; == &getReferersToWebsite
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getReferersWithSameTitle(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; == &getReferersWithSameTitle
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getTodaysReferers(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List; == &getTodaysReferers
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.getTotalHits(Lorg/apache/roller/weblogger/pojos/Weblog;)I == &getTotalHits
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.processReferrer(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V == &processReferrer
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.release()V == &release
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.removeReferer(Lorg/apache/roller/weblogger/pojos/WeblogReferrer;)V == &removeReferer
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): __Dispatch_Table.saveReferer(Lorg/apache/roller/weblogger/pojos/WeblogReferrer;)V == &saveReferer
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): init'ed(log)
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init): init'ed(statCountCountReverseComparator)
public class JPARefererManagerImpl implements RefererManager {
    //#JPARefererManagerImpl.java:54: method: Log org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.access$000()
    //#input(Log access$000()): log
    //#output(Log access$000()): return_value
    //#pre[1] (Log access$000()): init'ed(log)
    //#post(Log access$000()): return_value == log
    //#post(Log access$000()): init'ed(return_value)
    //#JPARefererManagerImpl.java:54: end of method: Log org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.access$000()
    //#JPARefererManagerImpl.java:54: method: JPAPersistenceStrategy org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.access$100(JPARefererManagerImpl)
    //#input(JPAPersistenceStrategy access$100(JPARefererManagerImpl)): x0
    //#input(JPAPersistenceStrategy access$100(JPARefererManagerImpl)): x0.strategy
    //#output(JPAPersistenceStrategy access$100(JPARefererManagerImpl)): return_value
    //#pre[1] (JPAPersistenceStrategy access$100(JPARefererManagerImpl)): x0 != null
    //#post(JPAPersistenceStrategy access$100(JPARefererManagerImpl)): return_value == x0.strategy
    //#post(JPAPersistenceStrategy access$100(JPARefererManagerImpl)): init'ed(return_value)
    //#JPARefererManagerImpl.java:54: end of method: JPAPersistenceStrategy org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.access$100(JPARefererManagerImpl)

    private static Log log = LogFactory.getLog(
    //#JPARefererManagerImpl.java:56: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
        JPARefererManagerImpl.class);

    protected static final String DAYHITS = "dayHits";
    protected static final String TOTALHITS = "totalHits";
    
    private static final Comparator statCountCountReverseComparator = 
    //#JPARefererManagerImpl.java:62: Warning: method not available
    //#    -- call on StatCountCountComparator org.apache.roller.weblogger.pojos.StatCountCountComparator:getInstance()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init
    //#    unanalyzed callee: StatCountCountComparator org.apache.roller.weblogger.pojos.StatCountCountComparator:getInstance()
    //#JPARefererManagerImpl.java:62: end of method: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl__static_init
            Collections.reverseOrder(StatCountCountComparator.getInstance());
    
    /** The strategy for this manager. */
    private final Weblogger roller;
    private final JPAPersistenceStrategy strategy;
    

    /**
     * Creates a new instance of JPARefererManagerImpl
     */
    @com.google.inject.Inject
    protected JPARefererManagerImpl(Weblogger roller, JPAPersistenceStrategy strategy) {
    //#JPARefererManagerImpl.java:74: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)
    //#input(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): log
    //#input(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): roller
    //#input(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): strategy
    //#input(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): this
    //#output(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller
    //#output(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy
    //#pre[1] (void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): log != null
    //#post(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller == roller
    //#post(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.roller)
    //#post(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy == strategy
    //#post(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.strategy)
        log.debug("Instantiating JPA Referer Manager");
    //#JPARefererManagerImpl.java:75: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        this.roller = roller;
        this.strategy = strategy;
    }
    //#JPARefererManagerImpl.java:78: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl(Weblogger, JPAPersistenceStrategy)

    
    public void saveReferer(WeblogReferrer referer) throws WebloggerException {
        strategy.store(referer);
    //#JPARefererManagerImpl.java:82: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.saveReferer(WeblogReferrer)
    //#input(void saveReferer(WeblogReferrer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveReferer(WeblogReferrer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveReferer(WeblogReferrer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveReferer(WeblogReferrer)): referer
    //#input(void saveReferer(WeblogReferrer)): this
    //#input(void saveReferer(WeblogReferrer)): this.strategy
    //#input(void saveReferer(WeblogReferrer)): this.strategy.__Tag
    //#input(void saveReferer(WeblogReferrer)): this.strategy.emf
    //#input(void saveReferer(WeblogReferrer)): this.strategy.threadLocalEntityManager
    //#pre[3] (void saveReferer(WeblogReferrer)): this.strategy != null
    //#pre[4] (void saveReferer(WeblogReferrer)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void saveReferer(WeblogReferrer)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void saveReferer(WeblogReferrer)): (soft) this.strategy.emf != null
    //#unanalyzed(void saveReferer(WeblogReferrer)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveReferer(WeblogReferrer)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityManager:persist
    }
    //#JPARefererManagerImpl.java:83: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.saveReferer(WeblogReferrer)

    public void removeReferer(WeblogReferrer referer) throws WebloggerException {
        strategy.remove(referer);
    //#JPARefererManagerImpl.java:86: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.removeReferer(WeblogReferrer)
    //#input(void removeReferer(WeblogReferrer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeReferer(WeblogReferrer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeReferer(WeblogReferrer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeReferer(WeblogReferrer)): referer
    //#input(void removeReferer(WeblogReferrer)): this
    //#input(void removeReferer(WeblogReferrer)): this.strategy
    //#input(void removeReferer(WeblogReferrer)): this.strategy.__Tag
    //#input(void removeReferer(WeblogReferrer)): this.strategy.emf
    //#input(void removeReferer(WeblogReferrer)): this.strategy.threadLocalEntityManager
    //#pre[3] (void removeReferer(WeblogReferrer)): this.strategy != null
    //#pre[4] (void removeReferer(WeblogReferrer)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void removeReferer(WeblogReferrer)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void removeReferer(WeblogReferrer)): (soft) this.strategy.emf != null
    //#unanalyzed(void removeReferer(WeblogReferrer)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeReferer(WeblogReferrer)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeReferer(WeblogReferrer)): Effects-of-calling:javax.persistence.EntityManager:remove
    }
    //#JPARefererManagerImpl.java:87: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.removeReferer(WeblogReferrer)

    /**
     * Clear referrer dayhits and remove referrers without excerpts.
     */
    public void clearReferrers() throws WebloggerException {
        clearDayHits();
    //#JPARefererManagerImpl.java:93: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.clearReferrers()
    //#input(void clearReferrers()): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#input(void clearReferrers()): __Descendant_Table[others]
    //#input(void clearReferrers()): __Dispatch_Table.clearDayHits()V
    //#input(void clearReferrers()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void clearReferrers()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void clearReferrers()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void clearReferrers()): this
    //#input(void clearReferrers()): this.__Tag
    //#input(void clearReferrers()): this.strategy
    //#input(void clearReferrers()): this.strategy.__Tag
    //#input(void clearReferrers()): this.strategy.emf
    //#input(void clearReferrers()): this.strategy.threadLocalEntityManager
    //#pre[2] (void clearReferrers()): this.__Tag == org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl
    //#pre[3] (void clearReferrers()): this.strategy != null
    //#pre[4] (void clearReferrers()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void clearReferrers()): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void clearReferrers()): (soft) this.strategy.emf != null
    //#presumption(void clearReferrers()): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#unanalyzed(void clearReferrers()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void clearReferrers()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void clearReferrers()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void clearReferrers()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void clearReferrers()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void clearReferrers()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void clearReferrers()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void clearReferrers()): Effects-of-calling:javax.persistence.Query:executeUpdate
        Query q = strategy.getNamedUpdate("WeblogReferrer.removeByNullOrEmptyExcerpt");
        q.executeUpdate();
    }
    //#JPARefererManagerImpl.java:96: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.clearReferrers()

    /**
     * Clear referrer dayhits and remove referrers without excerpts.
     */
    public void clearReferrers(Weblog website) throws WebloggerException {
        clearDayHitsByWebsite(website);
    //#JPARefererManagerImpl.java:102: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.clearReferrers(Weblog)
    //#input(void clearReferrers(Weblog)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#input(void clearReferrers(Weblog)): __Descendant_Table[others]
    //#input(void clearReferrers(Weblog)): __Dispatch_Table.clearDayHitsByWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void clearReferrers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void clearReferrers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void clearReferrers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void clearReferrers(Weblog)): this
    //#input(void clearReferrers(Weblog)): this.__Tag
    //#input(void clearReferrers(Weblog)): this.strategy
    //#input(void clearReferrers(Weblog)): this.strategy.__Tag
    //#input(void clearReferrers(Weblog)): this.strategy.emf
    //#input(void clearReferrers(Weblog)): this.strategy.threadLocalEntityManager
    //#input(void clearReferrers(Weblog)): website
    //#pre[2] (void clearReferrers(Weblog)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl
    //#pre[3] (void clearReferrers(Weblog)): this.strategy != null
    //#pre[4] (void clearReferrers(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void clearReferrers(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void clearReferrers(Weblog)): (soft) this.strategy.emf != null
    //#presumption(void clearReferrers(Weblog)): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#unanalyzed(void clearReferrers(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void clearReferrers(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void clearReferrers(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void clearReferrers(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void clearReferrers(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void clearReferrers(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void clearReferrers(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void clearReferrers(Weblog)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void clearReferrers(Weblog)): Effects-of-calling:javax.persistence.Query:executeUpdate
        Query q = strategy.getNamedUpdate("WeblogReferrer.removeByNullOrEmptyExcerpt&Website");
        q.setParameter(1, website);
        q.executeUpdate();
    }
    //#JPARefererManagerImpl.java:106: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.clearReferrers(Weblog)

    /**
     * Apply ignoreWord/spam filters to all referers in system.
     */
    public void applyRefererFilters() throws WebloggerException {
        String spamwords = WebloggerRuntimeConfig.getProperty("spam.blacklist");
    //#JPARefererManagerImpl.java:112: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.applyRefererFilters()
    //#JPARefererManagerImpl.java:112: 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.jpa.JPARefererManagerImpl
    //#    method: void applyRefererFilters()
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#input(void applyRefererFilters()): " ) "._tainted
    //#input(void applyRefererFilters()): " OR "._tainted
    //#input(void applyRefererFilters()): "%'"._tainted
    //#input(void applyRefererFilters()): "="._tainted
    //#input(void applyRefererFilters()): "SELECT r FROM WeblogReferrer r WHERE ("._tainted
    //#input(void applyRefererFilters()): "Trouble accessing property: "._tainted
    //#input(void applyRefererFilters()): "]"._tainted
    //#input(void applyRefererFilters()): "fetched property ["._tainted
    //#input(void applyRefererFilters()): "r.refererUrl like '%"._tainted
    //#input(void applyRefererFilters()): "spam.blacklist"._tainted
    //#input(void applyRefererFilters()): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#input(void applyRefererFilters()): __Descendant_Table[others]
    //#input(void applyRefererFilters()): __Dispatch_Table.getBlackListedReferer([Ljava/lang/String;)Ljava/util/List;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void applyRefererFilters()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(void applyRefererFilters()): this
    //#input(void applyRefererFilters()): this.__Tag
    //#input(void applyRefererFilters()): this.strategy
    //#input(void applyRefererFilters()): this.strategy.__Tag
    //#input(void applyRefererFilters()): this.strategy.emf
    //#input(void applyRefererFilters()): this.strategy.threadLocalEntityManager
    //#pre[11] (void applyRefererFilters()): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[1] (void applyRefererFilters()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[2] (void applyRefererFilters()): (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 applyRefererFilters()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[13] (void applyRefererFilters()): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl
    //#pre[14] (void applyRefererFilters()): (soft) this.strategy != null
    //#pre[15] (void applyRefererFilters()): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[16] (void applyRefererFilters()): (soft) this.strategy.emf != null
    //#pre[17] (void applyRefererFilters()): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void applyRefererFilters()): blacklist.length@113 <= 4_294_967_295
    //#presumption(void applyRefererFilters()): javax.persistence.Query:getResultList(...)@651 != null
    //#presumption(void applyRefererFilters()): org.apache.commons.lang.StringUtils:split(...)@113 != null
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.StringBuffer:delete
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:getWeblogger
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:getPropertiesManager
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:getProperty
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void applyRefererFilters()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#test_vector(void applyRefererFilters()): blacklist.length@113: {1..4_294_967_295}, {0}
    //#test_vector(void applyRefererFilters()): java.util.Iterator:hasNext(...)@117: {0}, {1}
        String[] blacklist = StringUtils.split(
    //#JPARefererManagerImpl.java:113: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringUtils:deleteWhitespace(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void applyRefererFilters()
    //#    unanalyzed callee: String org.apache.commons.lang.StringUtils:deleteWhitespace(String)
    //#JPARefererManagerImpl.java:113: Warning: method not available
    //#    -- call on String[] org.apache.commons.lang.StringUtils:split(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void applyRefererFilters()
    //#    unanalyzed callee: String[] org.apache.commons.lang.StringUtils:split(String, String)
                StringUtils.deleteWhitespace(spamwords),",");
        if (blacklist.length == 0) return;
        List referers = getBlackListedReferer(blacklist);
    //#JPARefererManagerImpl.java:116: ?!precondition failure
    //#    org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.getBlackListedReferer: (soft) blacklist[0..4_294_967_295] != null
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void applyRefererFilters()
    //#    basic block: bb_3
    //#    assertion: (soft) undefined != null
    //#    callee: List org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.getBlackListedReferer(String[])
    //#    callee assertion: (soft) blacklist[0..4_294_967_295] != null
    //#    callee file: JPARefererManagerImpl.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 649
    //#    VN: undefined
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null, Invalid}
    //#    Attribs:  Ptr  null in Bad  Soft
        for (Iterator iterator = referers.iterator(); iterator.hasNext();) {
            WeblogReferrer referer= (WeblogReferrer) iterator.next();
            this.strategy.remove(referer);
        }
    }
    //#JPARefererManagerImpl.java:121: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.applyRefererFilters()

    /**
     * Apply ignoreWord/spam filters to all referers in website.
     */
    public void applyRefererFilters(Weblog website)
            throws WebloggerException {
        if (null == website) throw new WebloggerException("website is null");
    //#JPARefererManagerImpl.java:128: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.applyRefererFilters(Weblog)
    //#input(void applyRefererFilters(Weblog)): " ) "._tainted
    //#input(void applyRefererFilters(Weblog)): " AND r.website = ?1 "._tainted
    //#input(void applyRefererFilters(Weblog)): " OR "._tainted
    //#input(void applyRefererFilters(Weblog)): "%'"._tainted
    //#input(void applyRefererFilters(Weblog)): "SELECT r FROM WeblogReferrer r WHERE ("._tainted
    //#input(void applyRefererFilters(Weblog)): "r.refererUrl like '%"._tainted
    //#input(void applyRefererFilters(Weblog)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#input(void applyRefererFilters(Weblog)): __Descendant_Table[others]
    //#input(void applyRefererFilters(Weblog)): __Dispatch_Table.getBlackListedReferer(Lorg/apache/roller/weblogger/pojos/Weblog;[Ljava/lang/String;)Ljava/util/List;
    //#input(void applyRefererFilters(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void applyRefererFilters(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void applyRefererFilters(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void applyRefererFilters(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void applyRefererFilters(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void applyRefererFilters(Weblog)): this
    //#input(void applyRefererFilters(Weblog)): this.__Tag
    //#input(void applyRefererFilters(Weblog)): this.strategy
    //#input(void applyRefererFilters(Weblog)): this.strategy.__Tag
    //#input(void applyRefererFilters(Weblog)): this.strategy.emf
    //#input(void applyRefererFilters(Weblog)): this.strategy.threadLocalEntityManager
    //#input(void applyRefererFilters(Weblog)): website
    //#pre[7] (void applyRefererFilters(Weblog)): website != null
    //#pre[2] (void applyRefererFilters(Weblog)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl
    //#pre[3] (void applyRefererFilters(Weblog)): (soft) this.strategy != null
    //#pre[4] (void applyRefererFilters(Weblog)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void applyRefererFilters(Weblog)): (soft) this.strategy.emf != null
    //#pre[6] (void applyRefererFilters(Weblog)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void applyRefererFilters(Weblog)): blacklist.length@131 <= 4_294_967_295
    //#presumption(void applyRefererFilters(Weblog)): javax.persistence.Query:getResultList(...)@660 != null
    //#presumption(void applyRefererFilters(Weblog)): org.apache.commons.lang.StringUtils:split(...)@131 != null
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:java.lang.StringBuffer:delete
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(void applyRefererFilters(Weblog)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#test_vector(void applyRefererFilters(Weblog)): blacklist.length@131: {1..4_294_967_295}, {0}
    //#test_vector(void applyRefererFilters(Weblog)): java.util.Iterator:hasNext(...)@135: {0}, {1}
    //#test_vector(void applyRefererFilters(Weblog)): org.apache.roller.weblogger.pojos.Weblog:getBlacklist(...)@129: Inverse{null}, Addr_Set{null}
        if (null == website.getBlacklist()) return;
    //#JPARefererManagerImpl.java:129: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getBlacklist()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void applyRefererFilters(Weblog)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getBlacklist()
        
        String[] blacklist = StringUtils.split(
    //#JPARefererManagerImpl.java:131: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getBlacklist()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void applyRefererFilters(Weblog)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getBlacklist()
    //#JPARefererManagerImpl.java:131: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringUtils:deleteWhitespace(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void applyRefererFilters(Weblog)
    //#    unanalyzed callee: String org.apache.commons.lang.StringUtils:deleteWhitespace(String)
    //#JPARefererManagerImpl.java:131: Warning: method not available
    //#    -- call on String[] org.apache.commons.lang.StringUtils:split(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void applyRefererFilters(Weblog)
    //#    unanalyzed callee: String[] org.apache.commons.lang.StringUtils:split(String, String)
                StringUtils.deleteWhitespace(website.getBlacklist()),",");
        if (blacklist.length == 0) return;
        List referers = getBlackListedReferer(website, blacklist);
    //#JPARefererManagerImpl.java:134: ?!precondition failure
    //#    org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.getBlackListedReferer: (soft) blacklist[0..4_294_967_295] != null
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void applyRefererFilters(Weblog)
    //#    basic block: bb_5
    //#    assertion: (soft) undefined != null
    //#    callee: List org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.getBlackListedReferer(Weblog, String[])
    //#    callee assertion: (soft) blacklist[0..4_294_967_295] != null
    //#    callee file: JPARefererManagerImpl.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 656
    //#    VN: undefined
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null, Invalid}
    //#    Attribs:  Ptr  null in Bad  Soft
        for (Iterator iterator = referers.iterator(); iterator.hasNext();) {
            WeblogReferrer referer= (WeblogReferrer) iterator.next();
            this.strategy.remove(referer);
        }
    }
    //#JPARefererManagerImpl.java:139: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.applyRefererFilters(Weblog)

    protected List getExistingReferers(Weblog website, String dateString,
            String permalink) throws WebloggerException {

        Query q = strategy.getNamedQuery( 
    //#JPARefererManagerImpl.java:144: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getExistingReferers(Weblog, String, String)
    //#input(List getExistingReferers(Weblog, String, String)): dateString
    //#input(List getExistingReferers(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getExistingReferers(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getExistingReferers(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getExistingReferers(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getExistingReferers(Weblog, String, String)): permalink
    //#input(List getExistingReferers(Weblog, String, String)): this
    //#input(List getExistingReferers(Weblog, String, String)): this.strategy
    //#input(List getExistingReferers(Weblog, String, String)): this.strategy.__Tag
    //#input(List getExistingReferers(Weblog, String, String)): this.strategy.emf
    //#input(List getExistingReferers(Weblog, String, String)): this.strategy.threadLocalEntityManager
    //#input(List getExistingReferers(Weblog, String, String)): website
    //#output(List getExistingReferers(Weblog, String, String)): return_value
    //#pre[4] (List getExistingReferers(Weblog, String, String)): this.strategy != null
    //#pre[5] (List getExistingReferers(Weblog, String, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (List getExistingReferers(Weblog, String, String)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (List getExistingReferers(Weblog, String, String)): (soft) this.strategy.emf != null
    //#post(List getExistingReferers(Weblog, String, String)): init'ed(return_value)
    //#unanalyzed(List getExistingReferers(Weblog, String, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getExistingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getExistingReferers(Weblog, String, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getExistingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getExistingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getExistingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getExistingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getExistingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
            "WeblogReferrer.getByWebsite&DateString&RefererPermalink");
        q.setParameter(1, website);
        q.setParameter(2, dateString);
        q.setParameter(3, permalink);
        return q.getResultList();
    //#JPARefererManagerImpl.java:149: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getExistingReferers(Weblog, String, String)
    }

    protected List getMatchingReferers(Weblog website, String requestUrl,
            String refererUrl) throws WebloggerException {

        Query q = strategy.getNamedQuery( 
    //#JPARefererManagerImpl.java:155: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getMatchingReferers(Weblog, String, String)
    //#input(List getMatchingReferers(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getMatchingReferers(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getMatchingReferers(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getMatchingReferers(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getMatchingReferers(Weblog, String, String)): refererUrl
    //#input(List getMatchingReferers(Weblog, String, String)): requestUrl
    //#input(List getMatchingReferers(Weblog, String, String)): this
    //#input(List getMatchingReferers(Weblog, String, String)): this.strategy
    //#input(List getMatchingReferers(Weblog, String, String)): this.strategy.__Tag
    //#input(List getMatchingReferers(Weblog, String, String)): this.strategy.emf
    //#input(List getMatchingReferers(Weblog, String, String)): this.strategy.threadLocalEntityManager
    //#input(List getMatchingReferers(Weblog, String, String)): website
    //#output(List getMatchingReferers(Weblog, String, String)): return_value
    //#pre[4] (List getMatchingReferers(Weblog, String, String)): this.strategy != null
    //#pre[5] (List getMatchingReferers(Weblog, String, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (List getMatchingReferers(Weblog, String, String)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (List getMatchingReferers(Weblog, String, String)): (soft) this.strategy.emf != null
    //#post(List getMatchingReferers(Weblog, String, String)): init'ed(return_value)
    //#unanalyzed(List getMatchingReferers(Weblog, String, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getMatchingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getMatchingReferers(Weblog, String, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getMatchingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getMatchingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getMatchingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getMatchingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getMatchingReferers(Weblog, String, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
            "WeblogReferrer.getByWebsite&RequestUrl&RefererUrl");
        q.setParameter(1, website);
        q.setParameter(2, requestUrl);
        q.setParameter(3, refererUrl);
        return q.getResultList();
    //#JPARefererManagerImpl.java:160: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getMatchingReferers(Weblog, String, String)
    }

    /**
     * Returns hot weblogs as StatCount objects, in descending order by today's
     * hits.
     * @param sinceDays Restrict to last X days (or -1 for all)
     * @param offset Offset into results (for paging)
     * @param length Maximum number of results to return (for paging)
     * @return List of StatCount objects.
     */
    public List getHotWeblogs(int sinceDays, int offset, int length)
            throws WebloggerException {
        
        String msg = "Getting hot weblogs";
    //#JPARefererManagerImpl.java:174: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getHotWeblogs(int, int, int)
    //#JPARefererManagerImpl.java:174: Warning: unused assignment
    //#    unused assignment into msg
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#input(List getHotWeblogs(int, int, int)): java.lang.Boolean.TRUE
    //#input(List getHotWeblogs(int, int, int)): length
    //#input(List getHotWeblogs(int, int, int)): offset
    //#input(List getHotWeblogs(int, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getHotWeblogs(int, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getHotWeblogs(int, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getHotWeblogs(int, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getHotWeblogs(int, int, int)): sinceDays
    //#input(List getHotWeblogs(int, int, int)): statCountCountReverseComparator
    //#input(List getHotWeblogs(int, int, int)): this
    //#input(List getHotWeblogs(int, int, int)): this.strategy
    //#input(List getHotWeblogs(int, int, int)): this.strategy.__Tag
    //#input(List getHotWeblogs(int, int, int)): this.strategy.emf
    //#input(List getHotWeblogs(int, int, int)): this.strategy.threadLocalEntityManager
    //#output(List getHotWeblogs(int, int, int)): new ArrayList(getHotWeblogs#1) num objects
    //#output(List getHotWeblogs(int, int, int)): return_value
    //#new obj(List getHotWeblogs(int, int, int)): new ArrayList(getHotWeblogs#1)
    //#pre[3] (List getHotWeblogs(int, int, int)): sinceDays <= 2_147_483_648
    //#pre[5] (List getHotWeblogs(int, int, int)): this.strategy != null
    //#pre[6] (List getHotWeblogs(int, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (List getHotWeblogs(int, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (List getHotWeblogs(int, int, int)): (soft) this.strategy.emf != null
    //#presumption(List getHotWeblogs(int, int, int)): init'ed(java.lang.Boolean.TRUE)
    //#presumption(List getHotWeblogs(int, int, int)): java.util.Calendar:getInstance(...)@176 != null
    //#presumption(List getHotWeblogs(int, int, int)): java.util.Calendar:getTime(...)@179 != null
    //#presumption(List getHotWeblogs(int, int, int)): java.util.Iterator:next(...)@198 != null
    //#presumption(List getHotWeblogs(int, int, int)): javax.persistence.Query:getResultList(...)@196 != null
    //#presumption(List getHotWeblogs(int, int, int)): row.length@198 >= 4
    //#post(List getHotWeblogs(int, int, int)): return_value == &new ArrayList(getHotWeblogs#1)
    //#post(List getHotWeblogs(int, int, int)): new ArrayList(getHotWeblogs#1) num objects == 1
    //#unanalyzed(List getHotWeblogs(int, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getHotWeblogs(int, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getHotWeblogs(int, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getHotWeblogs(int, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getHotWeblogs(int, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getHotWeblogs(int, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getHotWeblogs(int, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getHotWeblogs(int, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getHotWeblogs(int, int, int)): length: {-2_147_483_648..-2, 0..4_294_967_295}, {-1}
    //#test_vector(List getHotWeblogs(int, int, int)): java.util.Iterator:hasNext(...)@197: {0}, {1}
        List results = new ArrayList();
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        cal.add(Calendar.DATE, -1 * sinceDays);
        Date startDate = cal.getTime();
             
        if (length == -1) {
            length = Integer.MAX_VALUE - offset;
        }

        Query q = strategy.getNamedQuery( 
            "WeblogReferrer.getHotWeblogsByWebsite.enabled&Website.active&Website.lastModifiedGreater");
        
        if (offset != 0 || length != -1) {
            q.setFirstResult(offset);
            q.setMaxResults(length);
        }
        Timestamp start = new Timestamp(startDate.getTime());
        q.setParameter(1, Boolean.TRUE);
        q.setParameter(2, Boolean.TRUE);
        q.setParameter(3, start);
        List queryResults = (List)q.getResultList();
        for (Iterator it = queryResults.iterator(); it.hasNext(); ) {
            Object[] row = (Object[])it.next();
            long hits = ((Number)row[0]).longValue();
    //#JPARefererManagerImpl.java:199: ?use of default init
    //#    init'ed(row[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#    basic block: bb_8
    //#    assertion: init'ed(row[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPARefererManagerImpl.java:199: ?null dereference
    //#    not_init'ed(row[0])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#    basic block: bb_8
    //#    assertion: not_init'ed(row[0])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
            String websiteId = (String)row[1];
    //#JPARefererManagerImpl.java:200: ?use of default init
    //#    init'ed(row[1])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#    basic block: bb_8
    //#    assertion: init'ed(row[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
            String websiteName = (String)row[2];
    //#JPARefererManagerImpl.java:201: ?use of default init
    //#    init'ed(row[2])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#    basic block: bb_8
    //#    assertion: init'ed(row[2])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
            String websiteHandle = (String)row[3];
    //#JPARefererManagerImpl.java:202: ?use of default init
    //#    init'ed(row[3])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#    basic block: bb_8
    //#    assertion: init'ed(row[3])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
            results.add(new StatCount(
    //#JPARefererManagerImpl.java:203: ?use of default init
    //#    init'ed(websiteId)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#    basic block: bb_8
    //#    assertion: init'ed(websiteId)
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPARefererManagerImpl.java:203: ?use of default init
    //#    init'ed(websiteHandle)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#    basic block: bb_8
    //#    assertion: init'ed(websiteHandle)
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPARefererManagerImpl.java:203: ?use of default init
    //#    init'ed(websiteName)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#    basic block: bb_8
    //#    assertion: init'ed(websiteName)
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPARefererManagerImpl.java:203: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.StatCount(String, String, String, String, long)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: List getHotWeblogs(int, int, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.StatCount(String, String, String, String, long)
                websiteId,
                websiteHandle,
                websiteName,
                "statCount.weblogDayHits",
                hits));              
        }
        // Original query ordered by desc hits.
        // JPA QL doesn't allow queries to be ordered by agregates; do it in memory
        Collections.sort(results, statCountCountReverseComparator);

        return results;
    //#JPARefererManagerImpl.java:214: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getHotWeblogs(int, int, int)
    }

    protected int getHits(Weblog website, String type) 
            throws WebloggerException {
        int hits = -1;
    //#JPARefererManagerImpl.java:219: method: int org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getHits(Weblog, String)
    //#input(int getHits(Weblog, String)): "getHits: "._tainted
    //#input(int getHits(Weblog, String)): java.lang.Boolean.TRUE
    //#input(int getHits(Weblog, String)): log
    //#input(int getHits(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(int getHits(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(int getHits(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(int getHits(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(int getHits(Weblog, String)): this
    //#input(int getHits(Weblog, String)): this.strategy
    //#input(int getHits(Weblog, String)): this.strategy.__Tag
    //#input(int getHits(Weblog, String)): this.strategy.emf
    //#input(int getHits(Weblog, String)): this.strategy.threadLocalEntityManager
    //#input(int getHits(Weblog, String)): type
    //#input(int getHits(Weblog, String)): website
    //#output(int getHits(Weblog, String)): return_value
    //#pre[1] (int getHits(Weblog, String)): log != null
    //#pre[3] (int getHits(Weblog, String)): this.strategy != null
    //#pre[4] (int getHits(Weblog, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (int getHits(Weblog, String)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (int getHits(Weblog, String)): website != null
    //#pre[5] (int getHits(Weblog, String)): (soft) this.strategy.emf != null
    //#pre[7] (int getHits(Weblog, String)): (soft) type != null
    //#presumption(int getHits(Weblog, String)): init'ed(java.lang.Boolean.TRUE)
    //#presumption(int getHits(Weblog, String)): java.util.List:get(...)@232 != null
    //#presumption(int getHits(Weblog, String)): javax.persistence.Query:getResultList(...)@230 != null
    //#post(int getHits(Weblog, String)): return_value in -1..0
    //#unanalyzed(int getHits(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(int getHits(Weblog, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(int getHits(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(int getHits(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(int getHits(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(int getHits(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(int getHits(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(int getHits(Weblog, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(int getHits(Weblog, String)): java.lang.String:equals(...)@234: {0}, {1}
    //#test_vector(int getHits(Weblog, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@220: {0}, {1}
    //#test_vector(int getHits(Weblog, String)): resultsArray.length@232: {0}, {1..+Inf}
        if (log.isDebugEnabled()) {
    //#JPARefererManagerImpl.java:220: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
            log.debug("getHits: " + website.getName());
    //#JPARefererManagerImpl.java:221: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#JPARefererManagerImpl.java:221: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }
        //TODO: JPAPort. This query retrieves both SUM(r.dayHits), SUM(r.totalHits)
        //The method only comsumes one of them. We can optimize the logic to retrieve only the 
        //requied SUM
        Query query = strategy.getNamedQuery(
            "WeblogReferrer.getHitsByWebsite.enabled&Website.id");
        query.setParameter(1, Boolean.TRUE);
        query.setParameter(2, website.getId());
    //#JPARefererManagerImpl.java:229: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getId()
        List results = query.getResultList();

        Object[] resultsArray = (Object[]) results.get(0);
        
        if (resultsArray.length > 0 && type.equals(DAYHITS)) {
            if ( resultsArray[0] != null ) {
    //#JPARefererManagerImpl.java:235: ?use of default init
    //#    init'ed(resultsArray[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    basic block: bb_5
    //#    assertion: init'ed(resultsArray[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPARefererManagerImpl.java:235: Warning: test always goes same way
    //#    test predetermined because resultsArray[0] == null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    from bb: bb_5
    //#    live edge: bb_5-->bb_11
    //#    tested vn: undefined == null
    //#    tested vn values: {1}
                hits = ((Long) resultsArray[0]).intValue();
    //#JPARefererManagerImpl.java:236: Warning: dead code
    //#    dead code here because resultsArray[0] == null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    dead bb: bb_6
            }
        } else if ( resultsArray.length > 0 ) {
            if ( resultsArray[0] != null ) {
    //#JPARefererManagerImpl.java:239: ?use of default init
    //#    init'ed(resultsArray[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    basic block: bb_8
    //#    assertion: init'ed(resultsArray[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPARefererManagerImpl.java:239: Warning: test always goes same way
    //#    test predetermined because resultsArray[0] == null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    from bb: bb_8
    //#    live edge: bb_8-->bb_11
    //#    tested vn: undefined == null
    //#    tested vn values: {1}
                hits = ((Long) resultsArray[1]).intValue();
    //#JPARefererManagerImpl.java:240: Warning: dead code
    //#    dead code here because resultsArray[0] == null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: int getHits(Weblog, String)
    //#    dead bb: bb_9
            }
        } else {
            hits = 0;
        }
        
        return hits;
    //#JPARefererManagerImpl.java:246: end of method: int org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getHits(Weblog, String)
    }

    /**
     * Get all referers for specified weblog.
     * @param weblog
     * @return List of type WeblogReferrer
     */
    public List getReferers(Weblog weblog) throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPARefererManagerImpl.java:255: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferers(Weblog)
    //#input(List getReferers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getReferers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getReferers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getReferers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getReferers(Weblog)): this
    //#input(List getReferers(Weblog)): this.strategy
    //#input(List getReferers(Weblog)): this.strategy.__Tag
    //#input(List getReferers(Weblog)): this.strategy.emf
    //#input(List getReferers(Weblog)): this.strategy.threadLocalEntityManager
    //#input(List getReferers(Weblog)): weblog
    //#output(List getReferers(Weblog)): return_value
    //#pre[2] (List getReferers(Weblog)): this.strategy != null
    //#pre[3] (List getReferers(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getReferers(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (List getReferers(Weblog)): (soft) this.strategy.emf != null
    //#post(List getReferers(Weblog)): init'ed(return_value)
    //#unanalyzed(List getReferers(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getReferers(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getReferers(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getReferers(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getReferers(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getReferers(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getReferers(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getReferers(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
            "WeblogReferrer.getByWebsiteOrderByTotalHitsDesc");
        q.setParameter(1, weblog);
        return q.getResultList();
    //#JPARefererManagerImpl.java:258: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferers(Weblog)
    }

    /**
     * Get all referers for specified user that were made today.
     * @param website Web site.
     * @return List of type WeblogReferrer
     */
    public List getTodaysReferers(Weblog website) throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPARefererManagerImpl.java:267: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getTodaysReferers(Weblog)
    //#input(List getTodaysReferers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getTodaysReferers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getTodaysReferers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getTodaysReferers(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getTodaysReferers(Weblog)): this
    //#input(List getTodaysReferers(Weblog)): this.strategy
    //#input(List getTodaysReferers(Weblog)): this.strategy.__Tag
    //#input(List getTodaysReferers(Weblog)): this.strategy.emf
    //#input(List getTodaysReferers(Weblog)): this.strategy.threadLocalEntityManager
    //#input(List getTodaysReferers(Weblog)): website
    //#output(List getTodaysReferers(Weblog)): return_value
    //#pre[2] (List getTodaysReferers(Weblog)): this.strategy != null
    //#pre[3] (List getTodaysReferers(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getTodaysReferers(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (List getTodaysReferers(Weblog)): (soft) this.strategy.emf != null
    //#post(List getTodaysReferers(Weblog)): init'ed(return_value)
    //#unanalyzed(List getTodaysReferers(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getTodaysReferers(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getTodaysReferers(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getTodaysReferers(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getTodaysReferers(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getTodaysReferers(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getTodaysReferers(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getTodaysReferers(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
            "WeblogReferrer.getByWebsite&DayHitsGreaterZeroOrderByDayHitsDesc");
        q.setParameter(1, website);
        return q.getResultList();
    //#JPARefererManagerImpl.java:270: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getTodaysReferers(Weblog)
    }

    /**
     * Get referers for a specified date.
     * @param website Web site.
     * @param date YYYYMMDD format of day's date.
     * @return List of type WeblogReferrer.
     * @throws org.apache.roller.weblogger.WebloggerException
     */
    public List getReferersToDate(Weblog website, String date)
            throws WebloggerException {

        if (website==null )
    //#JPARefererManagerImpl.java:283: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferersToDate(Weblog, String)
    //#input(List getReferersToDate(Weblog, String)): date
    //#input(List getReferersToDate(Weblog, String)): java.lang.Boolean.FALSE
    //#input(List getReferersToDate(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getReferersToDate(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getReferersToDate(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getReferersToDate(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getReferersToDate(Weblog, String)): this
    //#input(List getReferersToDate(Weblog, String)): this.strategy
    //#input(List getReferersToDate(Weblog, String)): this.strategy.__Tag
    //#input(List getReferersToDate(Weblog, String)): this.strategy.emf
    //#input(List getReferersToDate(Weblog, String)): this.strategy.threadLocalEntityManager
    //#input(List getReferersToDate(Weblog, String)): website
    //#output(List getReferersToDate(Weblog, String)): return_value
    //#pre[1] (List getReferersToDate(Weblog, String)): date != null
    //#pre[3] (List getReferersToDate(Weblog, String)): this.strategy != null
    //#pre[4] (List getReferersToDate(Weblog, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (List getReferersToDate(Weblog, String)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (List getReferersToDate(Weblog, String)): website != null
    //#pre[5] (List getReferersToDate(Weblog, String)): (soft) this.strategy.emf != null
    //#presumption(List getReferersToDate(Weblog, String)): init'ed(java.lang.Boolean.FALSE)
    //#post(List getReferersToDate(Weblog, String)): init'ed(return_value)
    //#unanalyzed(List getReferersToDate(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getReferersToDate(Weblog, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getReferersToDate(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getReferersToDate(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getReferersToDate(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getReferersToDate(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getReferersToDate(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getReferersToDate(Weblog, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
            throw new WebloggerException("website is null");
        
        if (date==null )
            throw new WebloggerException("Date is null");
        
        Query q = strategy.getNamedQuery(
            "WeblogReferrer.getByWebsite&DateString&DuplicateOrderByTotalHitsDesc");
        q.setParameter(1, website);
        q.setParameter(2, date);
        q.setParameter(3, Boolean.FALSE);
        return q.getResultList();
    //#JPARefererManagerImpl.java:294: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferersToDate(Weblog, String)
    }

    /**
     * Get referers that refer to a specific weblog entry.
     * @param entryid Weblog entry ID
     * @return List of WeblogReferrer objects.
     * @throws org.apache.roller.weblogger.WebloggerException
     */
    public List getReferersToEntry(String entryid) throws WebloggerException {
        if (null == entryid)
    //#JPARefererManagerImpl.java:304: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferersToEntry(String)
    //#input(List getReferersToEntry(String)): entryid
    //#input(List getReferersToEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getReferersToEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getReferersToEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getReferersToEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(List getReferersToEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getReferersToEntry(String)): this
    //#input(List getReferersToEntry(String)): this.strategy
    //#input(List getReferersToEntry(String)): this.strategy.__Tag
    //#input(List getReferersToEntry(String)): this.strategy.emf
    //#input(List getReferersToEntry(String)): this.strategy.threadLocalEntityManager
    //#output(List getReferersToEntry(String)): return_value
    //#pre[1] (List getReferersToEntry(String)): entryid != null
    //#pre[3] (List getReferersToEntry(String)): this.strategy != null
    //#pre[4] (List getReferersToEntry(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (List getReferersToEntry(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (List getReferersToEntry(String)): (soft) this.strategy.emf != null
    //#post(List getReferersToEntry(String)): init'ed(return_value)
    //#unanalyzed(List getReferersToEntry(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getReferersToEntry(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getReferersToEntry(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getReferersToEntry(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getReferersToEntry(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getReferersToEntry(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getReferersToEntry(String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getReferersToEntry(String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getReferersToEntry(String)): Effects-of-calling:javax.persistence.EntityManager:find
            throw new WebloggerException("entryid is null");
        //TODO: DataMapperPort: Change calling code to pass WeblogEntry instead of id
        // we should change calling code to pass instance of WeblogEntry instead
        // of extracting and passing id. Once that is done, change the code below to
        // skip the load (Please note that the load below will always find the enty in cache)
        Query q = strategy.getNamedQuery(
            "WeblogReferrer.getByWeblogEntry&TitleNotNull&ExcerptNotNullOrderByTotalHitsDesc");
        q.setParameter(1, strategy.load(WeblogEntry.class, entryid));
        return q.getResultList();
    //#JPARefererManagerImpl.java:313: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferersToEntry(String)
    }

    /**
     * Query for collection of referers.
     */
    protected List getReferersToWebsite(Weblog website, String refererUrl)
            throws WebloggerException {
        Query q = strategy.getNamedQuery( 
    //#JPARefererManagerImpl.java:321: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferersToWebsite(Weblog, String)
    //#input(List getReferersToWebsite(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getReferersToWebsite(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getReferersToWebsite(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getReferersToWebsite(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getReferersToWebsite(Weblog, String)): refererUrl
    //#input(List getReferersToWebsite(Weblog, String)): this
    //#input(List getReferersToWebsite(Weblog, String)): this.strategy
    //#input(List getReferersToWebsite(Weblog, String)): this.strategy.__Tag
    //#input(List getReferersToWebsite(Weblog, String)): this.strategy.emf
    //#input(List getReferersToWebsite(Weblog, String)): this.strategy.threadLocalEntityManager
    //#input(List getReferersToWebsite(Weblog, String)): website
    //#output(List getReferersToWebsite(Weblog, String)): return_value
    //#pre[3] (List getReferersToWebsite(Weblog, String)): this.strategy != null
    //#pre[4] (List getReferersToWebsite(Weblog, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (List getReferersToWebsite(Weblog, String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (List getReferersToWebsite(Weblog, String)): (soft) this.strategy.emf != null
    //#post(List getReferersToWebsite(Weblog, String)): init'ed(return_value)
    //#unanalyzed(List getReferersToWebsite(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getReferersToWebsite(Weblog, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getReferersToWebsite(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getReferersToWebsite(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getReferersToWebsite(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getReferersToWebsite(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getReferersToWebsite(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getReferersToWebsite(Weblog, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
            "WeblogReferrer.getByWebsite&RefererUrl");
        q.setParameter(1, website);
        q.setParameter(2, refererUrl);
        return q.getResultList();
    //#JPARefererManagerImpl.java:325: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferersToWebsite(Weblog, String)
    }

    /**
     * Query for collection of referers.
     */
    protected List getReferersWithSameTitle(Weblog website,
                                            String requestUrl,
                                            String title,
                                            String excerpt)
            throws WebloggerException {
        Query q = strategy.getNamedQuery( 
    //#JPARefererManagerImpl.java:336: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferersWithSameTitle(Weblog, String, String, String)
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): excerpt
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): requestUrl
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): this
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): this.strategy
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): this.strategy.__Tag
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): this.strategy.emf
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): this.strategy.threadLocalEntityManager
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): title
    //#input(List getReferersWithSameTitle(Weblog, String, String, String)): website
    //#output(List getReferersWithSameTitle(Weblog, String, String, String)): return_value
    //#pre[4] (List getReferersWithSameTitle(Weblog, String, String, String)): this.strategy != null
    //#pre[5] (List getReferersWithSameTitle(Weblog, String, String, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (List getReferersWithSameTitle(Weblog, String, String, String)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (List getReferersWithSameTitle(Weblog, String, String, String)): (soft) this.strategy.emf != null
    //#post(List getReferersWithSameTitle(Weblog, String, String, String)): init'ed(return_value)
    //#unanalyzed(List getReferersWithSameTitle(Weblog, String, String, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getReferersWithSameTitle(Weblog, String, String, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getReferersWithSameTitle(Weblog, String, String, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getReferersWithSameTitle(Weblog, String, String, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getReferersWithSameTitle(Weblog, String, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getReferersWithSameTitle(Weblog, String, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getReferersWithSameTitle(Weblog, String, String, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getReferersWithSameTitle(Weblog, String, String, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
            "WeblogReferrer.getByWebsite&RequestURL&TitleOrExcerpt");
        q.setParameter(1, website);
        q.setParameter(2, requestUrl);
        q.setParameter(3, title);
        q.setParameter(4, excerpt);
        return q.getResultList();
    //#JPARefererManagerImpl.java:342: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getReferersWithSameTitle(Weblog, String, String, String)
    }

    /**
     * Get user's day hits
     */
    public int getDayHits(Weblog website) throws WebloggerException {
        return getHits(website, DAYHITS);
    //#JPARefererManagerImpl.java:349: method: int org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getDayHits(Weblog)
    //#input(int getDayHits(Weblog)): "getHits: "._tainted
    //#input(int getDayHits(Weblog)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#input(int getDayHits(Weblog)): __Descendant_Table[others]
    //#input(int getDayHits(Weblog)): __Dispatch_Table.getHits(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)I
    //#input(int getDayHits(Weblog)): java.lang.Boolean.TRUE
    //#input(int getDayHits(Weblog)): log
    //#input(int getDayHits(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(int getDayHits(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(int getDayHits(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(int getDayHits(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(int getDayHits(Weblog)): this
    //#input(int getDayHits(Weblog)): this.__Tag
    //#input(int getDayHits(Weblog)): this.strategy
    //#input(int getDayHits(Weblog)): this.strategy.__Tag
    //#input(int getDayHits(Weblog)): this.strategy.emf
    //#input(int getDayHits(Weblog)): this.strategy.threadLocalEntityManager
    //#input(int getDayHits(Weblog)): website
    //#output(int getDayHits(Weblog)): return_value
    //#pre[1] (int getDayHits(Weblog)): log != null
    //#pre[3] (int getDayHits(Weblog)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl
    //#pre[4] (int getDayHits(Weblog)): this.strategy != null
    //#pre[5] (int getDayHits(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (int getDayHits(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (int getDayHits(Weblog)): website != null
    //#pre[6] (int getDayHits(Weblog)): (soft) this.strategy.emf != null
    //#post(int getDayHits(Weblog)): return_value in -1..0
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:java.util.List:get
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getName
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getId
    //#unanalyzed(int getDayHits(Weblog)): Effects-of-calling:java.lang.Long:intValue
    //#JPARefererManagerImpl.java:349: end of method: int org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getDayHits(Weblog)
    }

    /**
     * Get user's all-time total hits
     */
    public int getTotalHits(Weblog website) throws WebloggerException {
        return getHits(website, TOTALHITS);
    //#JPARefererManagerImpl.java:356: method: int org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getTotalHits(Weblog)
    //#input(int getTotalHits(Weblog)): "getHits: "._tainted
    //#input(int getTotalHits(Weblog)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#input(int getTotalHits(Weblog)): __Descendant_Table[others]
    //#input(int getTotalHits(Weblog)): __Dispatch_Table.getHits(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)I
    //#input(int getTotalHits(Weblog)): java.lang.Boolean.TRUE
    //#input(int getTotalHits(Weblog)): log
    //#input(int getTotalHits(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(int getTotalHits(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(int getTotalHits(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(int getTotalHits(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(int getTotalHits(Weblog)): this
    //#input(int getTotalHits(Weblog)): this.__Tag
    //#input(int getTotalHits(Weblog)): this.strategy
    //#input(int getTotalHits(Weblog)): this.strategy.__Tag
    //#input(int getTotalHits(Weblog)): this.strategy.emf
    //#input(int getTotalHits(Weblog)): this.strategy.threadLocalEntityManager
    //#input(int getTotalHits(Weblog)): website
    //#output(int getTotalHits(Weblog)): return_value
    //#pre[1] (int getTotalHits(Weblog)): log != null
    //#pre[3] (int getTotalHits(Weblog)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl
    //#pre[4] (int getTotalHits(Weblog)): this.strategy != null
    //#pre[5] (int getTotalHits(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (int getTotalHits(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (int getTotalHits(Weblog)): website != null
    //#pre[6] (int getTotalHits(Weblog)): (soft) this.strategy.emf != null
    //#post(int getTotalHits(Weblog)): return_value in -1..0
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:java.util.List:get
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getName
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getId
    //#unanalyzed(int getTotalHits(Weblog)): Effects-of-calling:java.lang.Long:intValue
    //#JPARefererManagerImpl.java:356: end of method: int org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getTotalHits(Weblog)
    }

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

    /**
     * Process an incoming referer.
     */
    public void processReferrer(String requestUrl, String referrerUrl,
            String weblogHandle, String entryAnchor, String dateString) {
        log.debug("processing referrer ["+referrerUrl+
    //#JPARefererManagerImpl.java:371: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.processReferrer(String, String, String, String, String)
    //#JPARefererManagerImpl.java:371: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#JPARefererManagerImpl.java:371: 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.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    suspicious precondition index: [6]
    //#    Attribs:  Soft
    //#JPARefererManagerImpl.java:371: Warning: suspicious precondition
    //#    the precondition for this.roller.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    suspicious precondition index: [26]
    //#    Attribs:  Soft
    //#JPARefererManagerImpl.java:371: Warning: suspicious precondition
    //#    the precondition for this.roller.threadManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    suspicious precondition index: [28]
    //#    Attribs:  Soft
    //#input(void processReferrer(String, String, String, String, String)): "."._tainted
    //#input(void processReferrer(String, String, String, String, String)): ":"._tainted
    //#input(void processReferrer(String, String, String, String, String)): "="._tainted
    //#input(void processReferrer(String, String, String, String, String)): "Incrementing hit count on existing referer: "._tainted
    //#input(void processReferrer(String, String, String, String, String)): "Trouble accessing property: "._tainted
    //#input(void processReferrer(String, String, String, String, String)): "] accessing ["._tainted
    //#input(void processReferrer(String, String, String, String, String)): "]"._tainted
    //#input(void processReferrer(String, String, String, String, String)): "direct"._tainted
    //#input(void processReferrer(String, String, String, String, String)): "entryAnchorToIdMap CACHE HIT - "._tainted
    //#input(void processReferrer(String, String, String, String, String)): "entryAnchorToIdMap CACHE MISS - "._tainted
    //#input(void processReferrer(String, String, String, String, String)): "fetched property ["._tainted
    //#input(void processReferrer(String, String, String, String, String)): "http:.."._tainted
    //#input(void processReferrer(String, String, String, String, String)): "http:..www"._tainted
    //#input(void processReferrer(String, String, String, String, String)): "newReferer="._tainted
    //#input(void processReferrer(String, String, String, String, String)): "processing referrer ["._tainted
    //#input(void processReferrer(String, String, String, String, String)): "site.linkbacks.enabled"._tainted
    //#input(void processReferrer(String, String, String, String, String)): "weblogHandleToId CACHE HIT - "._tainted
    //#input(void processReferrer(String, String, String, String, String)): "weblogHandleToId CACHE MISS - "._tainted
    //#input(void processReferrer(String, String, String, String, String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#input(void processReferrer(String, String, String, String, String)): __Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): __Dispatch_Table.getMatchingReferers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
    //#input(void processReferrer(String, String, String, String, String)): __Dispatch_Table.getReferersToWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Ljava/util/List;
    //#input(void processReferrer(String, String, String, String, String)): __Dispatch_Table.saveReferer(Lorg/apache/roller/weblogger/pojos/WeblogReferrer;)V
    //#input(void processReferrer(String, String, String, String, String)): dateString
    //#input(void processReferrer(String, String, String, String, String)): entryAnchor
    //#input(void processReferrer(String, String, String, String, String)): entryAnchor._tainted
    //#input(void processReferrer(String, String, String, String, String)): java.lang.Boolean.FALSE
    //#input(void processReferrer(String, String, String, String, String)): log
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.getWebsiteByHandle(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[org/apache/roller/weblogger/business/WeblogManager]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WeblogManager.__Dispatch_Table.getWeblogEntryByAnchor(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getThreadManager()Lorg/apache/roller/weblogger/business/runnable/ThreadManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getWeblogManager()Lorg/apache/roller/weblogger/business/WeblogManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getThreadManager()Lorg/apache/roller/weblogger/business/runnable/ThreadManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getWeblogManager()Lorg/apache/roller/weblogger/business/WeblogManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl.__Dispatch_Table.executeInBackground(Ljava/lang/Runnable;)V
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getWebsite(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getWebsiteByHandle(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getWebsiteByHandle(Ljava/lang/String;Ljava/lang/Boolean;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java.lang.Boolean.TRUE
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.log
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Dispatch_Table.getWeblogEntry(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Dispatch_Table.getWeblogEntryByAnchor(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.log
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getThreadManager()Lorg/apache/roller/weblogger/business/runnable/ThreadManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getWeblogManager()Lorg/apache/roller/weblogger/business/WeblogManager;
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/runnable/ThreadManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/runnable/ThreadManager.__Descendant_Table[org/apache/roller/weblogger/business/runnable/ThreadManagerImpl]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/runnable/ThreadManager.__Descendant_Table[org/apache/roller/weblogger/business/runnable/ThreadManager]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/runnable/ThreadManager.__Descendant_Table[others]
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/runnable/ThreadManager.__Dispatch_Table.executeInBackground(Ljava/lang/Runnable;)V
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/business/runnable/ThreadManagerImpl.__Dispatch_Table.executeInBackground(Ljava/lang/Runnable;)V
    //#input(void processReferrer(String, String, String, String, String)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(void processReferrer(String, String, String, String, String)): referrerUrl
    //#input(void processReferrer(String, String, String, String, String)): referrerUrl._tainted
    //#input(void processReferrer(String, String, String, String, String)): requestUrl
    //#input(void processReferrer(String, String, String, String, String)): requestUrl._tainted
    //#input(void processReferrer(String, String, String, String, String)): this
    //#input(void processReferrer(String, String, String, String, String)): this.__Tag
    //#input(void processReferrer(String, String, String, String, String)): this.roller
    //#input(void processReferrer(String, String, String, String, String)): this.roller.__Tag
    //#input(void processReferrer(String, String, String, String, String)): this.roller.threadManager
    //#input(void processReferrer(String, String, String, String, String)): this.roller.threadManager.__Tag
    //#input(void processReferrer(String, String, String, String, String)): this.roller.threadManager.serviceScheduler
    //#input(void processReferrer(String, String, String, String, String)): this.roller.userManager
    //#input(void processReferrer(String, String, String, String, String)): this.roller.userManager.__Tag
    //#input(void processReferrer(String, String, String, String, String)): this.roller.userManager.strategy
    //#input(void processReferrer(String, String, String, String, String)): this.roller.userManager.strategy.__Tag
    //#input(void processReferrer(String, String, String, String, String)): this.roller.userManager.strategy.emf
    //#input(void processReferrer(String, String, String, String, String)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void processReferrer(String, String, String, String, String)): this.roller.userManager.weblogHandleToIdMap
    //#input(void processReferrer(String, String, String, String, String)): this.roller.weblogManager
    //#input(void processReferrer(String, String, String, String, String)): this.roller.weblogManager.__Tag
    //#input(void processReferrer(String, String, String, String, String)): this.roller.weblogManager.entryAnchorToIdMap
    //#input(void processReferrer(String, String, String, String, String)): this.roller.weblogManager.strategy
    //#input(void processReferrer(String, String, String, String, String)): this.roller.weblogManager.strategy.__Tag
    //#input(void processReferrer(String, String, String, String, String)): this.roller.weblogManager.strategy.emf
    //#input(void processReferrer(String, String, String, String, String)): this.roller.weblogManager.strategy.threadLocalEntityManager
    //#input(void processReferrer(String, String, String, String, String)): this.strategy
    //#input(void processReferrer(String, String, String, String, String)): this.strategy.__Tag
    //#input(void processReferrer(String, String, String, String, String)): this.strategy.emf
    //#input(void processReferrer(String, String, String, String, String)): this.strategy.threadLocalEntityManager
    //#input(void processReferrer(String, String, String, String, String)): weblogHandle
    //#input(void processReferrer(String, String, String, String, String)): weblogHandle._tainted
    //#pre[4] (void processReferrer(String, String, String, String, String)): log != null
    //#pre[5] (void processReferrer(String, String, String, String, String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[6] (void processReferrer(String, String, String, String, String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[7] (void processReferrer(String, String, String, String, String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[15] (void processReferrer(String, String, String, String, String)): (soft) org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.log != null
    //#pre[16] (void processReferrer(String, String, String, String, String)): (soft) org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.log != null
    //#pre[17] (void processReferrer(String, String, String, String, String)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[24] (void processReferrer(String, String, String, String, String)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl
    //#pre[25] (void processReferrer(String, String, String, String, String)): (soft) this.roller != null
    //#pre[26] (void processReferrer(String, String, String, String, String)): (soft) this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[27] (void processReferrer(String, String, String, String, String)): (soft) this.roller.threadManager != null
    //#pre[28] (void processReferrer(String, String, String, String, String)): (soft) this.roller.threadManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl, org/apache/roller/weblogger/business/runnable/ThreadManager, org/apache/roller/weblogger/business/runnable/ThreadManagerImpl}
    //#pre[29] (void processReferrer(String, String, String, String, String)): (soft) this.roller.threadManager.serviceScheduler != null
    //#pre[30] (void processReferrer(String, String, String, String, String)): (soft) this.roller.userManager != null
    //#pre[31] (void processReferrer(String, String, String, String, String)): (soft) this.roller.userManager.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[32] (void processReferrer(String, String, String, String, String)): (soft) this.roller.userManager.strategy != null
    //#pre[33] (void processReferrer(String, String, String, String, String)): (soft) this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[34] (void processReferrer(String, String, String, String, String)): (soft) this.roller.userManager.strategy.emf != null
    //#pre[35] (void processReferrer(String, String, String, String, String)): (soft) this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[36] (void processReferrer(String, String, String, String, String)): (soft) this.roller.userManager.weblogHandleToIdMap != null
    //#pre[37] (void processReferrer(String, String, String, String, String)): (soft) this.roller.weblogManager != null
    //#pre[38] (void processReferrer(String, String, String, String, String)): (soft) this.roller.weblogManager.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[39] (void processReferrer(String, String, String, String, String)): (soft) this.roller.weblogManager.entryAnchorToIdMap != null
    //#pre[40] (void processReferrer(String, String, String, String, String)): (soft) this.roller.weblogManager.strategy != null
    //#pre[41] (void processReferrer(String, String, String, String, String)): (soft) this.roller.weblogManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[42] (void processReferrer(String, String, String, String, String)): (soft) this.roller.weblogManager.strategy.threadLocalEntityManager != null
    //#pre[43] (void processReferrer(String, String, String, String, String)): (soft) this.strategy != null
    //#pre[44] (void processReferrer(String, String, String, String, String)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[45] (void processReferrer(String, String, String, String, String)): (soft) this.strategy.emf != null
    //#pre[46] (void processReferrer(String, String, String, String, String)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void processReferrer(String, String, String, String, String)): init'ed(java.lang.Boolean.FALSE)
    //#presumption(void processReferrer(String, String, String, String, String)): java.lang.Integer:intValue(...)@435 <= 4_294_967_294
    //#presumption(void processReferrer(String, String, String, String, String)): java.lang.Integer:intValue(...)@436 <= 4_294_967_294
    //#presumption(void processReferrer(String, String, String, String, String)): java.util.List:get(...)@433 != null
    //#presumption(void processReferrer(String, String, String, String, String)): javax.persistence.Query:getResultList(...)@160 != null
    //#presumption(void processReferrer(String, String, String, String, String)): javax.persistence.Query:getResultList(...)@160 != null
    //#presumption(void processReferrer(String, String, String, String, String)): javax.persistence.Query:getResultList(...)@325 != null
    //#presumption(void processReferrer(String, String, String, String, String)): org.apache.roller.weblogger.pojos.WeblogReferrer:getDayHits(...)@435 != null
    //#presumption(void processReferrer(String, String, String, String, String)): org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl(...)@467 != null
    //#presumption(void processReferrer(String, String, String, String, String)): org.apache.roller.weblogger.pojos.WeblogReferrer:getTotalHits(...)@436 != null
    //#presumption(void processReferrer(String, String, String, String, String)): org.apache.roller.weblogger.util.Utilities:stripJsessionId(...)@409 != null
    //#presumption(void processReferrer(String, String, String, String, String)): weblogMgr.strategy.emf@384 != null
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:getWeblogger
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:getProperty
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.util.Map:remove
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.lang.Boolean:equals
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getId
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.util.Hashtable:remove
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.util.Hashtable:containsKey
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.util.Hashtable:get
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.util.Hashtable:put
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.lang.Boolean
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(void processReferrer(String, String, String, String, String)): Effects-of-calling:java.util.concurrent.ExecutorService:submit
    //#test_vector(void processReferrer(String, String, String, String, String)): entryAnchor: Addr_Set{null}, Inverse{null}
    //#test_vector(void processReferrer(String, String, String, String, String)): referrerUrl: Addr_Set{null}, Inverse{null}
    //#test_vector(void processReferrer(String, String, String, String, String)): weblogHandle: Inverse{null}, Addr_Set{null}
    //#test_vector(void processReferrer(String, String, String, String, String)): java.lang.String:equals(...)@473: {1}, {0}
    //#test_vector(void processReferrer(String, String, String, String, String)): java.lang.String:length(...)@403: {8..4_294_967_295}, {0..7}
    //#test_vector(void processReferrer(String, String, String, String, String)): java.lang.String:startsWith(...)@417: {0}, {1}
    //#test_vector(void processReferrer(String, String, String, String, String)): java.lang.String:startsWith(...)@473: {1}, {0}
    //#test_vector(void processReferrer(String, String, String, String, String)): java.util.List:size(...)@415: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(void processReferrer(String, String, String, String, String)): java.util.List:size(...)@425: {-2_147_483_648..0, 2..4_294_967_295}, {1}
    //#test_vector(void processReferrer(String, String, String, String, String)): java.util.List:size(...)@431: {-2_147_483_648..0, 2..4_294_967_295}, {1}
    //#test_vector(void processReferrer(String, String, String, String, String)): java.util.List:size(...)@443: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(void processReferrer(String, String, String, String, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@463: {0}, {1}
                "] accessing ["+requestUrl+"]");

        if (weblogHandle == null)
            return;

        String selfSiteFragment = "/"+weblogHandle;
    //#JPARefererManagerImpl.java:377: Warning: unused assignment
    //#    unused assignment into selfSiteFragment
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
        Weblog weblog = null;
    //#JPARefererManagerImpl.java:378: Warning: unused assignment
    //#    unused assignment into weblog
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    Attribs:  Uncertain
        WeblogEntry entry = null;

        // lookup the weblog now
        try {
            UserManager userMgr = roller.getUserManager();
            weblog = userMgr.getWebsiteByHandle(weblogHandle);
            if (weblog == null) return;

            // now lookup weblog entry if possible
            if (entryAnchor != null) {
                WeblogManager weblogMgr = roller.
                    getWeblogManager();
                entry = weblogMgr.getWeblogEntryByAnchor(weblog, entryAnchor);
            }
        } catch (WebloggerException re) {
            // problem looking up website, gotta bail
            log.error("Error looking up website object", re);
    //#JPARefererManagerImpl.java:395: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
            return;
        }

        try {
            List matchRef = null;
    //#JPARefererManagerImpl.java:400: Warning: unused assignment
    //#    unused assignment into matchRef
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    Attribs:  Uncertain

            // try to find existing WeblogReferrer for referrerUrl
            if (referrerUrl == null || referrerUrl.trim().length() < 8) {
                referrerUrl = "direct";

                // Get referer specified by referer URL of direct
                matchRef = getReferersToWebsite(weblog, referrerUrl);
            } else {
                referrerUrl = Utilities.stripJsessionId(referrerUrl);
    //#JPARefererManagerImpl.java:409: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.Utilities:stripJsessionId(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.Utilities:stripJsessionId(String)

                // Query for referer with same referer and request URLs
                matchRef = getMatchingReferers(weblog, requestUrl, referrerUrl);

                // If referer was not found, try adding or leaving off 'www'
                if ( matchRef.size() == 0 ) {
                    String secondTryUrl = null;
    //#JPARefererManagerImpl.java:416: Warning: unused assignment
    //#    unused assignment into secondTryUrl
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    Attribs:  Uncertain
                    if ( referrerUrl.startsWith("http://www") ) {
                        secondTryUrl = "http://"+referrerUrl.substring(11);
                    } else {
                        secondTryUrl = "http://www"+referrerUrl.substring(7);
                    }

                    matchRef = getMatchingReferers(weblog, requestUrl, 
                        secondTryUrl);
                    if ( matchRef.size() == 1 ) {
                        referrerUrl = secondTryUrl;
                    }
                }
            }

            if (matchRef.size() == 1) {
                // Referer was found in database, so bump up hit count
                WeblogReferrer ref = (WeblogReferrer)matchRef.get(0);

                ref.setDayHits(new Integer(ref.getDayHits().intValue() + 1));
    //#JPARefererManagerImpl.java:435: Warning: method not available
    //#    -- call on Integer org.apache.roller.weblogger.pojos.WeblogReferrer:getDayHits()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: Integer org.apache.roller.weblogger.pojos.WeblogReferrer:getDayHits()
    //#JPARefererManagerImpl.java:435: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setDayHits(Integer)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setDayHits(Integer)
                ref.setTotalHits(new Integer(ref.getTotalHits().intValue() + 1));
    //#JPARefererManagerImpl.java:436: Warning: method not available
    //#    -- call on Integer org.apache.roller.weblogger.pojos.WeblogReferrer:getTotalHits()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: Integer org.apache.roller.weblogger.pojos.WeblogReferrer:getTotalHits()
    //#JPARefererManagerImpl.java:436: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setTotalHits(Integer)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setTotalHits(Integer)

                log.debug("Incrementing hit count on existing referer: " +
    //#JPARefererManagerImpl.java:438: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    referrerUrl);

                saveReferer(ref);

            } else if (matchRef.size() == 0) {

                // Referer was not found in database, so new Referer object
                Integer one = new Integer(1);
                WeblogReferrer ref =
    //#JPARefererManagerImpl.java:447: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer(String, Weblog, WeblogEntry, String, String, String, String, String, String, Boolean, Boolean, Integer, Integer)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer(String, Weblog, WeblogEntry, String, String, String, String, String, String, Boolean, Boolean, Integer, Integer)
                        new WeblogReferrer(
                        null,
                        weblog,
                        entry,
                        dateString,
                        referrerUrl,
                        null,
                        requestUrl,
                        null,
                        "", // Read comment above regarding Derby bug
                        Boolean.FALSE,
                        Boolean.FALSE,
                        one,
                        one);

                if (log.isDebugEnabled()) {
    //#JPARefererManagerImpl.java:463: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
                    log.debug("newReferer="+ref.getRefererUrl());
    //#JPARefererManagerImpl.java:464: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
    //#JPARefererManagerImpl.java:464: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                }

                String refurl = ref.getRefererUrl();
    //#JPARefererManagerImpl.java:467: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()

                // If not a direct or search engine then search for linkback
                boolean doLinkbackExtraction =
                    WebloggerRuntimeConfig.getBooleanProperty(
                        "site.linkbacks.enabled");
                if (doLinkbackExtraction
                        && entry != null
                        && !refurl.equals("direct")
                        && !refurl.startsWith("http://google")
                        && !refurl.startsWith("http://www.google")
                        && !refurl.startsWith("http://search.netscape")
                        && !refurl.startsWith("http://www.blinkpro")
                        && !refurl.startsWith("http://search.msn")
                        && !refurl.startsWith("http://search.yahoo")
                        && !refurl.startsWith("http://uk.search.yahoo")
                        && !refurl.startsWith("http://www.javablogs.com")
                        && !refurl.startsWith("http://www.teoma")
                        ) {
                    // Launch thread to extract referer linkback

                    try {
                        Weblogger mRoller = roller;
                        mRoller.getThreadManager().executeInBackground(
                                new LinkbackExtractorRunnable(ref));
                    } catch (InterruptedException e) {
                        log.warn("Interrupted during linkback extraction",e);
    //#JPARefererManagerImpl.java:493: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object, Throwable)
                    }
                } else {
                    saveReferer(ref);
                }
            }
        } catch (WebloggerException pe) {
            log.error(pe);
    //#JPARefererManagerImpl.java:500: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
        } catch (NullPointerException npe) {
            log.error(npe);
    //#JPARefererManagerImpl.java:502: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: void processReferrer(String, String, String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
        }
    }
    //#JPARefererManagerImpl.java:504: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.processReferrer(String, String, String, String, String)

    /**
     * Use LinkbackExtractor to parse title and excerpt from referer
     */
    class LinkbackExtractorRunnable implements Runnable {

        private WeblogReferrer mReferer = null;

        public LinkbackExtractorRunnable( WeblogReferrer referer) {
    //#JPARefererManagerImpl.java:513: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable.org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)
    //#input(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)): Param_1
    //#input(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)): referer
    //#input(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)): this
    //#output(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)): this.mReferer
    //#output(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)): this.this$0
    //#post(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)): this.mReferer == referer
    //#post(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)): init'ed(this.mReferer)
    //#post(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)): this.this$0 == Param_1
    //#post(void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)): init'ed(this.this$0)
            mReferer = referer;
        }
    //#JPARefererManagerImpl.java:515: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable.org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable(JPARefererManagerImpl, WeblogReferrer)

        public void run() {

            try {
                LinkbackExtractor lb = new LinkbackExtractor(
    //#JPARefererManagerImpl.java:520: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable.run()
    //#JPARefererManagerImpl.java:520: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
    //#JPARefererManagerImpl.java:520: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getRequestUrl()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getRequestUrl()
    //#JPARefererManagerImpl.java:520: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.roller.weblogger.util.LinkbackExtractor(String, String)
    //#input(void run()): "No excerpt found at refering URL "._tainted
    //#input(void run()): java.lang.Boolean.FALSE
    //#input(void run()): java.lang.Boolean.TRUE
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.release()V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl]
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.__Descendant_Table[others]
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.__Dispatch_Table.getExistingReferers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.__Dispatch_Table.getReferersWithSameTitle(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.__Dispatch_Table.saveReferer(Lorg/apache/roller/weblogger/pojos/WeblogReferrer;)V
    //#input(void run()): org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.log
    //#input(void run()): this
    //#input(void run()): this.mReferer
    //#input(void run()): this.this$0
    //#input(void run()): this.this$0.__Tag
    //#input(void run()): this.this$0.strategy
    //#input(void run()): this.this$0.strategy.__Tag
    //#input(void run()): this.this$0.strategy.emf
    //#input(void run()): this.this$0.strategy.threadLocalEntityManager
    //#pre[6] (void run()): this.strategy != null
    //#pre[7] (void run()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (void run()): this.strategy.threadLocalEntityManager != null
    //#pre[1] (void run()): (soft) org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl.log != null
    //#pre[3] (void run()): (soft) this.mReferer != null
    //#pre[4] (void run()): (soft) this.this$0 != null
    //#pre[5] (void run()): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl
    //#pre[8] (void run()): (soft) this.strategy.emf != null
    //#presumption(void run()): init'ed(java.lang.Boolean.FALSE)
    //#presumption(void run()): init'ed(java.lang.Boolean.TRUE)
    //#presumption(void run()): java.lang.String:length(...)@580 <= 4_294_967_195
    //#presumption(void run()): java.util.Iterator:next(...)@578 != null
    //#presumption(void run()): java.util.Iterator:next(...)@601 != null
    //#presumption(void run()): javax.persistence.Query:getResultList(...)@149 != null
    //#presumption(void run()): javax.persistence.Query:getResultList(...)@342 != null
    //#presumption(void run()): org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl(...)@580 != null
    //#presumption(void run()): org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl(...)@581 != null
    //#presumption(void run()): org.apache.roller.weblogger.pojos.WeblogReferrer:getVisible(...)@590 != null
    //#unanalyzed(void run()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void run()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityTransaction:rollback
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityManager:close
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void run()): Effects-of-calling:javax.persistence.EntityManager:persist
    //#test_vector(void run()): java.lang.Boolean:booleanValue(...)@590: {0}, {1}
    //#test_vector(void run()): java.lang.String:indexOf(...)@581: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(void run()): java.util.Iterator:hasNext(...)@577: {0}, {1}
    //#test_vector(void run()): java.util.List:size(...)@541: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(void run()): org.apache.roller.weblogger.util.LinkbackExtractor:getExcerpt(...)@523: Addr_Set{null}, Inverse{null}
    //#test_vector(void run()): org.apache.roller.weblogger.util.LinkbackExtractor:getPermalink(...)@527: Addr_Set{null}, Inverse{null}
    //#test_vector(void run()): org.apache.roller.weblogger.util.LinkbackExtractor:getTitle(...)@523: Addr_Set{null}, Inverse{null}
                        mReferer.getRefererUrl(),mReferer.getRequestUrl());

                if ( lb.getTitle()!=null && lb.getExcerpt()!=null ) {
    //#JPARefererManagerImpl.java:523: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.LinkbackExtractor:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.LinkbackExtractor:getTitle()
    //#JPARefererManagerImpl.java:523: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.LinkbackExtractor:getExcerpt()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.LinkbackExtractor:getExcerpt()
                    mReferer.setTitle(lb.getTitle());
    //#JPARefererManagerImpl.java:524: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.LinkbackExtractor:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.LinkbackExtractor:getTitle()
    //#JPARefererManagerImpl.java:524: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setTitle(String)
                    mReferer.setExcerpt(lb.getExcerpt());
    //#JPARefererManagerImpl.java:525: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.LinkbackExtractor:getExcerpt()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.LinkbackExtractor:getExcerpt()
    //#JPARefererManagerImpl.java:525: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setExcerpt(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setExcerpt(String)

                    if ( lb.getPermalink() != null ) {
    //#JPARefererManagerImpl.java:527: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.LinkbackExtractor:getPermalink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.LinkbackExtractor:getPermalink()
                        // The presence of a permalink indicates that this
                        // linkback was parsed out of an RSS feed and is
                        // presumed to be a good linkback.

                        mReferer.setRefererPermalink(lb.getPermalink());
    //#JPARefererManagerImpl.java:532: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.LinkbackExtractor:getPermalink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.LinkbackExtractor:getPermalink()
    //#JPARefererManagerImpl.java:532: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setRefererPermalink(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setRefererPermalink(String)

                        // See if this request/permalink is in the DB
                        List matchRef = getExistingReferers(
    //#JPARefererManagerImpl.java:535: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogReferrer:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogReferrer:getWebsite()
    //#JPARefererManagerImpl.java:535: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getDateString()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getDateString()
    //#JPARefererManagerImpl.java:535: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererPermalink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererPermalink()
                                mReferer.getWebsite(),
                                mReferer.getDateString(),
                                mReferer.getRefererPermalink());

                        // If it is the first, then set it to be visible
                        if ( matchRef.size() == 0 ) {
                            mReferer.setVisible(Boolean.TRUE);
    //#JPARefererManagerImpl.java:542: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setVisible(Boolean)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setVisible(Boolean)
                        } else {
                            // We can't throw away duplicates or we will
                            // end up reparsing them everytime a hit comes
                            // in from one of them, but we can mark them
                            // as duplicates.
                            mReferer.setDuplicate(Boolean.TRUE);
    //#JPARefererManagerImpl.java:548: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setDuplicate(Boolean)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setDuplicate(Boolean)
                        }

                        saveReferer(mReferer);

                    }

                    else {
                        // Store the new referer
                        saveReferer(mReferer);

                        // Hacky Referer URL weighting kludge:
                        //
                        // If there are multple referers to a request URL,
                        // then we want to pick the best one. The others
                        // are marked as duplicates. To do this we use a
                        // weight. The weight formula is:
                        //
                        // w = URL length + (100 if URL contains anchor)

                        // LOOP: find the referer with the highest weight
                        Boolean visible = Boolean.FALSE;
                        List refs= getReferersWithSameTitle(
    //#JPARefererManagerImpl.java:570: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogReferrer:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogReferrer:getWebsite()
    //#JPARefererManagerImpl.java:570: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getRequestUrl()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getRequestUrl()
    //#JPARefererManagerImpl.java:570: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.LinkbackExtractor:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.LinkbackExtractor:getTitle()
    //#JPARefererManagerImpl.java:570: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.LinkbackExtractor:getExcerpt()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.LinkbackExtractor:getExcerpt()
                                mReferer.getWebsite(),
                                mReferer.getRequestUrl(),
                                lb.getTitle(),
                                lb.getExcerpt());
                        WeblogReferrer chosen = null;
                        int maxweight = 0;
                        for (Iterator rdItr = refs.iterator();rdItr.hasNext();) {
                            WeblogReferrer referer = (WeblogReferrer) rdItr.next();

                            int weight = referer.getRefererUrl().length();
    //#JPARefererManagerImpl.java:580: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
                            if (referer.getRefererUrl().indexOf('#') != -1) {
    //#JPARefererManagerImpl.java:581: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
                                weight += 100;
                            }

                            if ( weight > maxweight ) {
                                chosen = referer;
                                maxweight = weight;
                            }

                            if (referer.getVisible().booleanValue()) {
    //#JPARefererManagerImpl.java:590: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.WeblogReferrer:getVisible()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.WeblogReferrer:getVisible()
                                // If any are visible then chosen
                                // replacement must be visible as well.
                                visible = Boolean.TRUE;
                            }

                        }

                        // LOOP: to mark all of the lower weight ones
                        // as duplicates
                        for (Iterator rdItr = refs.iterator();rdItr.hasNext();) {
                            WeblogReferrer referer = (WeblogReferrer) rdItr.next();

                            if (referer != chosen) {
                                referer.setDuplicate(Boolean.TRUE);
    //#JPARefererManagerImpl.java:604: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setDuplicate(Boolean)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setDuplicate(Boolean)
                            } else {
                                referer.setDuplicate(Boolean.FALSE);
    //#JPARefererManagerImpl.java:606: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setDuplicate(Boolean)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setDuplicate(Boolean)
                                referer.setVisible(visible);
    //#JPARefererManagerImpl.java:607: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogReferrer:setVisible(Boolean)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogReferrer:setVisible(Boolean)
                            }
                            saveReferer(referer);
                        }


                    }
                } else {
                    // It is not a linkback, but store it anyway
                    saveReferer(mReferer);

                    log.info("No excerpt found at refering URL "
    //#JPARefererManagerImpl.java:618: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getRefererUrl()
    //#JPARefererManagerImpl.java:618: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
                            + mReferer.getRefererUrl());
                }
            } catch (Exception e) {
                log.error("Processing linkback",e);
    //#JPARefererManagerImpl.java:622: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#    method: void run()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
            } finally {
                strategy.release();
            }

        }
    //#JPARefererManagerImpl.java:627: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable.run()

    }
    
    /**
     * Release all resources held by manager.
     */
    public void release() {}
    //#JPARefererManagerImpl.java:634: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.release()
    //#JPARefererManagerImpl.java:634: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.release()
    
    protected void clearDayHits() throws WebloggerException {
        Query query = strategy.getNamedUpdate("WeblogReferrer.clearDayHits");
    //#JPARefererManagerImpl.java:637: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.clearDayHits()
    //#input(void clearDayHits()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void clearDayHits()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void clearDayHits()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void clearDayHits()): this
    //#input(void clearDayHits()): this.strategy
    //#input(void clearDayHits()): this.strategy.__Tag
    //#input(void clearDayHits()): this.strategy.emf
    //#input(void clearDayHits()): this.strategy.threadLocalEntityManager
    //#pre[2] (void clearDayHits()): this.strategy != null
    //#pre[3] (void clearDayHits()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void clearDayHits()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (void clearDayHits()): (soft) this.strategy.emf != null
    //#presumption(void clearDayHits()): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#unanalyzed(void clearDayHits()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void clearDayHits()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void clearDayHits()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void clearDayHits()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void clearDayHits()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void clearDayHits()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void clearDayHits()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
        query.executeUpdate();
    }
    //#JPARefererManagerImpl.java:639: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.clearDayHits()

    protected void clearDayHitsByWebsite(Weblog website) throws WebloggerException {
        Query query = strategy.getNamedUpdate("WeblogReferrer.clearDayHitsByWebsite");
    //#JPARefererManagerImpl.java:642: method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.clearDayHitsByWebsite(Weblog)
    //#input(void clearDayHitsByWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void clearDayHitsByWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void clearDayHitsByWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void clearDayHitsByWebsite(Weblog)): this
    //#input(void clearDayHitsByWebsite(Weblog)): this.strategy
    //#input(void clearDayHitsByWebsite(Weblog)): this.strategy.__Tag
    //#input(void clearDayHitsByWebsite(Weblog)): this.strategy.emf
    //#input(void clearDayHitsByWebsite(Weblog)): this.strategy.threadLocalEntityManager
    //#input(void clearDayHitsByWebsite(Weblog)): website
    //#pre[2] (void clearDayHitsByWebsite(Weblog)): this.strategy != null
    //#pre[3] (void clearDayHitsByWebsite(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void clearDayHitsByWebsite(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (void clearDayHitsByWebsite(Weblog)): (soft) this.strategy.emf != null
    //#presumption(void clearDayHitsByWebsite(Weblog)): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#unanalyzed(void clearDayHitsByWebsite(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void clearDayHitsByWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void clearDayHitsByWebsite(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void clearDayHitsByWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void clearDayHitsByWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void clearDayHitsByWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void clearDayHitsByWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
        query.setParameter(1, website);
        query.executeUpdate();
    }
    //#JPARefererManagerImpl.java:645: end of method: void org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.clearDayHitsByWebsite(Weblog)

    protected List getBlackListedReferer(String[] blacklist) throws
            WebloggerException {
        StringBuffer queryString = getQueryStringForBlackList(blacklist);
    //#JPARefererManagerImpl.java:649: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getBlackListedReferer(String[])
    //#input(List getBlackListedReferer(String[])): " ) "._tainted
    //#input(List getBlackListedReferer(String[])): " OR "._tainted
    //#input(List getBlackListedReferer(String[])): "%'"._tainted
    //#input(List getBlackListedReferer(String[])): "SELECT r FROM WeblogReferrer r WHERE ("._tainted
    //#input(List getBlackListedReferer(String[])): "r.refererUrl like '%"._tainted
    //#input(List getBlackListedReferer(String[])): blacklist
    //#input(List getBlackListedReferer(String[])): blacklist.length
    //#input(List getBlackListedReferer(String[])): blacklist[0..4_294_967_295]
    //#input(List getBlackListedReferer(String[])): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getBlackListedReferer(String[])): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getBlackListedReferer(String[])): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getBlackListedReferer(String[])): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getBlackListedReferer(String[])): this
    //#input(List getBlackListedReferer(String[])): this.strategy
    //#input(List getBlackListedReferer(String[])): this.strategy.__Tag
    //#input(List getBlackListedReferer(String[])): this.strategy.emf
    //#input(List getBlackListedReferer(String[])): this.strategy.threadLocalEntityManager
    //#output(List getBlackListedReferer(String[])): return_value
    //#pre[1] (List getBlackListedReferer(String[])): blacklist != null
    //#pre[2] (List getBlackListedReferer(String[])): blacklist.length in 1..4_294_967_295
    //#pre[5] (List getBlackListedReferer(String[])): this.strategy != null
    //#pre[6] (List getBlackListedReferer(String[])): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (List getBlackListedReferer(String[])): this.strategy.threadLocalEntityManager != null
    //#pre[3] (List getBlackListedReferer(String[])): (soft) blacklist[0..4_294_967_295] != null
    //#pre[7] (List getBlackListedReferer(String[])): (soft) this.strategy.emf != null
    //#post(List getBlackListedReferer(String[])): init'ed(return_value)
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:java.lang.String:length
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:java.lang.StringBuffer:delete
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getBlackListedReferer(String[])): Effects-of-calling:javax.persistence.EntityManager:createQuery
        Query query = strategy.getDynamicQuery(queryString.toString());
        return (List) query.getResultList();
    //#JPARefererManagerImpl.java:651: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getBlackListedReferer(String[])
    }

    protected List getBlackListedReferer(Weblog website, String[] blacklist) 
            throws WebloggerException {
        StringBuffer queryString = getQueryStringForBlackList(blacklist);
    //#JPARefererManagerImpl.java:656: method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getBlackListedReferer(Weblog, String[])
    //#input(List getBlackListedReferer(Weblog, String[])): " ) "._tainted
    //#input(List getBlackListedReferer(Weblog, String[])): " AND r.website = ?1 "._tainted
    //#input(List getBlackListedReferer(Weblog, String[])): " OR "._tainted
    //#input(List getBlackListedReferer(Weblog, String[])): "%'"._tainted
    //#input(List getBlackListedReferer(Weblog, String[])): "SELECT r FROM WeblogReferrer r WHERE ("._tainted
    //#input(List getBlackListedReferer(Weblog, String[])): "r.refererUrl like '%"._tainted
    //#input(List getBlackListedReferer(Weblog, String[])): blacklist
    //#input(List getBlackListedReferer(Weblog, String[])): blacklist.length
    //#input(List getBlackListedReferer(Weblog, String[])): blacklist[0..4_294_967_295]
    //#input(List getBlackListedReferer(Weblog, String[])): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getBlackListedReferer(Weblog, String[])): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getBlackListedReferer(Weblog, String[])): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getBlackListedReferer(Weblog, String[])): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getBlackListedReferer(Weblog, String[])): this
    //#input(List getBlackListedReferer(Weblog, String[])): this.strategy
    //#input(List getBlackListedReferer(Weblog, String[])): this.strategy.__Tag
    //#input(List getBlackListedReferer(Weblog, String[])): this.strategy.emf
    //#input(List getBlackListedReferer(Weblog, String[])): this.strategy.threadLocalEntityManager
    //#input(List getBlackListedReferer(Weblog, String[])): website
    //#output(List getBlackListedReferer(Weblog, String[])): return_value
    //#pre[1] (List getBlackListedReferer(Weblog, String[])): blacklist != null
    //#pre[2] (List getBlackListedReferer(Weblog, String[])): blacklist.length in 1..4_294_967_295
    //#pre[5] (List getBlackListedReferer(Weblog, String[])): this.strategy != null
    //#pre[6] (List getBlackListedReferer(Weblog, String[])): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (List getBlackListedReferer(Weblog, String[])): this.strategy.threadLocalEntityManager != null
    //#pre[3] (List getBlackListedReferer(Weblog, String[])): (soft) blacklist[0..4_294_967_295] != null
    //#pre[7] (List getBlackListedReferer(Weblog, String[])): (soft) this.strategy.emf != null
    //#post(List getBlackListedReferer(Weblog, String[])): init'ed(return_value)
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:java.lang.String:length
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:java.lang.StringBuffer:delete
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getBlackListedReferer(Weblog, String[])): Effects-of-calling:javax.persistence.EntityManager:createQuery
        queryString.append(" AND r.website = ?1 ");
        Query query = strategy.getDynamicQuery(queryString.toString());
        query.setParameter(1, website);
        return query.getResultList();
    //#JPARefererManagerImpl.java:660: end of method: List org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getBlackListedReferer(Weblog, String[])
    }

    /**
     * Generates a JPQL query of form
     * SELECT r FROM WeblogReferrer r WHERE
     *     ( refererUrl like %blacklist[1] ..... OR refererUrl like %blacklist[n])
     * @param blacklist
     * @return
     */
    private StringBuffer getQueryStringForBlackList(String[] blacklist) {
        assert blacklist.length > 0;
    //#JPARefererManagerImpl.java:671: method: StringBuffer org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getQueryStringForBlackList(String[])
    //#input(StringBuffer getQueryStringForBlackList(String[])): " ) "._tainted
    //#input(StringBuffer getQueryStringForBlackList(String[])): " OR "._tainted
    //#input(StringBuffer getQueryStringForBlackList(String[])): "%'"._tainted
    //#input(StringBuffer getQueryStringForBlackList(String[])): "SELECT r FROM WeblogReferrer r WHERE ("._tainted
    //#input(StringBuffer getQueryStringForBlackList(String[])): "r.refererUrl like '%"._tainted
    //#input(StringBuffer getQueryStringForBlackList(String[])): blacklist
    //#input(StringBuffer getQueryStringForBlackList(String[])): blacklist.length
    //#input(StringBuffer getQueryStringForBlackList(String[])): blacklist[0..4_294_967_295]
    //#output(StringBuffer getQueryStringForBlackList(String[])): new StringBuffer(getQueryStringForBlackList#1) num objects
    //#output(StringBuffer getQueryStringForBlackList(String[])): return_value._tainted
    //#output(StringBuffer getQueryStringForBlackList(String[])): return_value
    //#new obj(StringBuffer getQueryStringForBlackList(String[])): new StringBuffer(getQueryStringForBlackList#1)
    //#pre[1] (StringBuffer getQueryStringForBlackList(String[])): blacklist != null
    //#pre[2] (StringBuffer getQueryStringForBlackList(String[])): blacklist.length in 1..4_294_967_295
    //#pre[3] (StringBuffer getQueryStringForBlackList(String[])): (soft) blacklist[0..4_294_967_295] != null
    //#presumption(StringBuffer getQueryStringForBlackList(String[])): java.lang.String:length(...)@683 - java.lang.StringBuffer:length(...)@683 in -4_294_967_295..2_147_483_648
    //#post(StringBuffer getQueryStringForBlackList(String[])): return_value == &new StringBuffer(getQueryStringForBlackList#1)
    //#post(StringBuffer getQueryStringForBlackList(String[])): new StringBuffer(getQueryStringForBlackList#1) num objects == 1
    //#post(StringBuffer getQueryStringForBlackList(String[])): return_value._tainted == 0
        StringBuffer queryString = new StringBuffer("SELECT r FROM WeblogReferrer r WHERE (");
        //Search for any matching entry from blacklist[]
        final String OR = " OR ";
    //#JPARefererManagerImpl.java:674: Warning: unused assignment
    //#    unused assignment into OR
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
    //#    method: StringBuffer getQueryStringForBlackList(String[])
        for (int i = 0; i < blacklist.length; i++) {
            String ignoreWord = blacklist[i];
            //TODO: DataMapper port: original code use "like ignore case" as follows
            // or.add(Expression.ilike("refererUrl","%"+ignoreWord+"%"));
            // There is no equivalent for it in JPA
            queryString.append("r.refererUrl like '%").append(ignoreWord.trim()).append("%'").append(OR);
        }
        // Get rid of last OR
        queryString.delete(queryString.length() - OR.length(), queryString.length());
        queryString.append(" ) ");
        return queryString;
    //#JPARefererManagerImpl.java:685: end of method: StringBuffer org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl.getQueryStringForBlackList(String[])
    }
}
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl$LinkbackExtractorRunnable]
    //#output(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable__static_init): __Dispatch_Table.run()V
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPARefererManagerImpl$LinkbackExtractorRunnable] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable__static_init): __Dispatch_Table.run()V == &run
    //#JPARefererManagerImpl.java:: end of method: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable.org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable__static_init
    //#JPARefererManagerImpl.java:: end of class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl$LinkbackExtractorRunnable
    //#JPARefererManagerImpl.java:: end of class: org.apache.roller.weblogger.business.jpa.JPARefererManagerImpl
