//# 31 errors, 3,225 messages
//#
/*
    //#JPAWeblogManagerImpl.java:1:1: class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
 * 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.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.TreeMap;
import java.sql.Timestamp;
import javax.persistence.FlushModeType;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import org.apache.commons.collections.comparators.ReverseComparator;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.jpa.JPAPersistenceStrategy;

import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.business.WeblogManager;
import org.apache.roller.weblogger.pojos.WeblogEntryComment;
import org.apache.roller.weblogger.pojos.WeblogHitCount;
import org.apache.roller.weblogger.pojos.WeblogReferrer;
import org.apache.roller.weblogger.pojos.StatCount;
import org.apache.roller.weblogger.pojos.TagStat;
import org.apache.roller.weblogger.pojos.TagStatComparator;
import org.apache.roller.weblogger.pojos.TagStatCountComparator;
import org.apache.roller.weblogger.pojos.WeblogCategory;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate;
import org.apache.roller.weblogger.pojos.WeblogEntryTag;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.WeblogEntryAttribute;
import org.apache.roller.weblogger.pojos.StatCountCountComparator;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.util.DateUtil;

/*
 * JPAWeblogManagerImpl.java
 *
 * Created on May 31, 2006, 4:08 PM
 *
 */
@com.google.inject.Singleton
public class JPAWeblogManagerImpl implements WeblogManager {
    
    protected static Log log = LogFactory.getLog(
    //#JPAWeblogManagerImpl.java:72: method: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init
    //#JPAWeblogManagerImpl.java:72: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.applyCommentDefaultsToEntries(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.createAnchor(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getComment(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getCommentCount()J
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getCommentCount(Lorg/apache/roller/weblogger/pojos/Weblog;)J
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getComments(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;ZII)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getEntryCount()J
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getEntryCount(Lorg/apache/roller/weblogger/pojos/Weblog;)J
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getHitCount(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogHitCount;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getHitCountByWeblog(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogHitCount;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getHotWeblogs(III)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getMostCommentedWeblogEntries(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getNextEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getNextPrevEntries(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getPopularTags(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;I)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getPreviousEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getTagComboExists(Ljava/util/List;Lorg/apache/roller/weblogger/pojos/Weblog;)Z
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getTags(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;I)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategories(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategories(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategory(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntries(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntries(Lorg/apache/roller/weblogger/pojos/WeblogCategory;Z)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntriesPinnedToMain(Ljava/lang/Integer;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntry(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntryByAnchor(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntryMap(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;ZLjava/lang/String;II)Ljava/util/Map;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntryObjectMap(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/Map;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntryStringMap(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/Map;
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.incrementHitCount(Lorg/apache/roller/weblogger/pojos/Weblog;I)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.isDuplicateWeblogCategoryName(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)Z
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.isWeblogCategoryInUse(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)Z
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.moveWeblogCategory(Lorg/apache/roller/weblogger/pojos/WeblogCategory;Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.moveWeblogCategoryContents(Lorg/apache/roller/weblogger/pojos/WeblogCategory;Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.release()V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeComment(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeHitCount(Lorg/apache/roller/weblogger/pojos/WeblogHitCount;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeMatchingComments(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;)I
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeWeblogCategory(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeWeblogEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeWeblogEntryAttribute(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeWeblogEntryTag(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.resetAllHitCounts()V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.resetHitCount(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.saveComment(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.saveHitCount(Lorg/apache/roller/weblogger/pojos/WeblogHitCount;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.saveWeblogCategory(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.saveWeblogEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.updatePathTree(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.updateTagCount(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/Weblog;I)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): log
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): new ReverseComparator(JPAWeblogManagerImpl__static_init#1) num objects
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): new TagStatComparator(JPAWeblogManagerImpl__static_init#2) num objects
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): reverseComparator
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): statCountCountReverseComparator
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): tagStatCountReverseComparator
    //#output(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): tagStatNameComparator
    //#new obj(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): new ReverseComparator(JPAWeblogManagerImpl__static_init#1)
    //#new obj(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): new TagStatComparator(JPAWeblogManagerImpl__static_init#2)
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.applyCommentDefaultsToEntries(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &applyCommentDefaultsToEntries
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.createAnchor(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Ljava/lang/String; == &createAnchor
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getComment(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntryComment; == &getComment
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getCommentCount()J == &getCommentCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getCommentCount(Lorg/apache/roller/weblogger/pojos/Weblog;)J == &getCommentCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getComments(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;ZII)Ljava/util/List; == &getComments
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getEntryCount()J == &getEntryCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getEntryCount(Lorg/apache/roller/weblogger/pojos/Weblog;)J == &getEntryCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getHitCount(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogHitCount; == &getHitCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getHitCountByWeblog(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogHitCount; == &getHitCountByWeblog
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getHotWeblogs(III)Ljava/util/List; == &getHotWeblogs
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getMostCommentedWeblogEntries(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List; == &getMostCommentedWeblogEntries
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getNextEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry; == &getNextEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getNextPrevEntries(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/util/List; == &getNextPrevEntries
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getPopularTags(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;I)Ljava/util/List; == &getPopularTags
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getPreviousEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry; == &getPreviousEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory; == &getRootWeblogCategory
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getTagComboExists(Ljava/util/List;Lorg/apache/roller/weblogger/pojos/Weblog;)Z == &getTagComboExists
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getTags(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;I)Ljava/util/List; == &getTags
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategories(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List; == &getWeblogCategories
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategories(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/util/List; == &getWeblogCategories
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategory(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory; == &getWeblogCategory
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory; == &getWeblogCategoryByPath
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory; == &getWeblogCategoryByPath
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntries(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List; == &getWeblogEntries
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntries(Lorg/apache/roller/weblogger/pojos/WeblogCategory;Z)Ljava/util/List; == &getWeblogEntries
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntriesPinnedToMain(Ljava/lang/Integer;)Ljava/util/List; == &getWeblogEntriesPinnedToMain
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntry(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry; == &getWeblogEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntryByAnchor(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry; == &getWeblogEntryByAnchor
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntryMap(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;ZLjava/lang/String;II)Ljava/util/Map; == &getWeblogEntryMap
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntryObjectMap(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/Map; == &getWeblogEntryObjectMap
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.getWeblogEntryStringMap(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/Map; == &getWeblogEntryStringMap
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.incrementHitCount(Lorg/apache/roller/weblogger/pojos/Weblog;I)V == &incrementHitCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.isDuplicateWeblogCategoryName(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)Z == &isDuplicateWeblogCategoryName
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.isWeblogCategoryInUse(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)Z == &isWeblogCategoryInUse
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.moveWeblogCategory(Lorg/apache/roller/weblogger/pojos/WeblogCategory;Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V == &moveWeblogCategory
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.moveWeblogCategoryContents(Lorg/apache/roller/weblogger/pojos/WeblogCategory;Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V == &moveWeblogCategoryContents
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.release()V == &release
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeComment(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;)V == &removeComment
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeHitCount(Lorg/apache/roller/weblogger/pojos/WeblogHitCount;)V == &removeHitCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeMatchingComments(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;)I == &removeMatchingComments
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeWeblogCategory(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V == &removeWeblogCategory
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeWeblogEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V == &removeWeblogEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeWeblogEntryAttribute(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V == &removeWeblogEntryAttribute
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.removeWeblogEntryTag(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V == &removeWeblogEntryTag
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.resetAllHitCounts()V == &resetAllHitCounts
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.resetHitCount(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &resetHitCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.saveComment(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;)V == &saveComment
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.saveHitCount(Lorg/apache/roller/weblogger/pojos/WeblogHitCount;)V == &saveHitCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.saveWeblogCategory(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V == &saveWeblogCategory
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.saveWeblogEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V == &saveWeblogEntry
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.updatePathTree(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V == &updatePathTree
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): __Dispatch_Table.updateTagCount(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/Weblog;I)V == &updateTagCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): init'ed(log)
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): reverseComparator == &new ReverseComparator(JPAWeblogManagerImpl__static_init#1)
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): init'ed(statCountCountReverseComparator)
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): init'ed(tagStatCountReverseComparator)
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): tagStatNameComparator == &new TagStatComparator(JPAWeblogManagerImpl__static_init#2)
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): new ReverseComparator(JPAWeblogManagerImpl__static_init#1) num objects == 1
    //#post(org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init): new TagStatComparator(JPAWeblogManagerImpl__static_init#2) num objects == 1
            JPAWeblogManagerImpl.class);
    
    private final Weblogger roller;
    private final JPAPersistenceStrategy strategy;
    
    // cached mapping of entryAnchors -> entryIds
    private Hashtable entryAnchorToIdMap = new Hashtable();
    
    /* inline creation of reverse comparator, anonymous inner class */
    private static final Comparator reverseComparator = new ReverseComparator();
    //#JPAWeblogManagerImpl.java:82: Warning: method not available
    //#    -- call on void org.apache.commons.collections.comparators.ReverseComparator()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init
    //#    unanalyzed callee: void org.apache.commons.collections.comparators.ReverseComparator()
    
    private static final Comparator tagStatNameComparator = new TagStatComparator();
    //#JPAWeblogManagerImpl.java:84: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.TagStatComparator()
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.TagStatComparator()
    
    private static final Comparator tagStatCountReverseComparator =
    //#JPAWeblogManagerImpl.java:86: Warning: method not available
    //#    -- call on TagStatCountComparator org.apache.roller.weblogger.pojos.TagStatCountComparator:getInstance()
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init
    //#    unanalyzed callee: TagStatCountComparator org.apache.roller.weblogger.pojos.TagStatCountComparator:getInstance()
            Collections.reverseOrder(TagStatCountComparator.getInstance());
    
    private static final Comparator statCountCountReverseComparator =
    //#JPAWeblogManagerImpl.java:89: Warning: method not available
    //#    -- call on StatCountCountComparator org.apache.roller.weblogger.pojos.StatCountCountComparator:getInstance()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init
    //#    unanalyzed callee: StatCountCountComparator org.apache.roller.weblogger.pojos.StatCountCountComparator:getInstance()
    //#JPAWeblogManagerImpl.java:89: end of method: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl__static_init
            Collections.reverseOrder(StatCountCountComparator.getInstance());
    
    
    @com.google.inject.Inject
    protected JPAWeblogManagerImpl(Weblogger roller, JPAPersistenceStrategy strategy) {
    //#JPAWeblogManagerImpl.java:94: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)
    //#input(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): log
    //#input(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): roller
    //#input(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): strategy
    //#input(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): this
    //#output(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): new Hashtable(JPAWeblogManagerImpl#1) num objects
    //#output(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): this.entryAnchorToIdMap
    //#output(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller
    //#output(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy
    //#new obj(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): new Hashtable(JPAWeblogManagerImpl#1)
    //#pre[1] (void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): log != null
    //#post(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): this.entryAnchorToIdMap == &new Hashtable(JPAWeblogManagerImpl#1)
    //#post(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller == roller
    //#post(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.roller)
    //#post(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy == strategy
    //#post(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.strategy)
    //#post(void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)): new Hashtable(JPAWeblogManagerImpl#1) num objects == 1
        log.debug("Instantiating JPA Weblog Manager");
    //#JPAWeblogManagerImpl.java:95: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        this.roller = roller;
        this.strategy = strategy;
    }
    //#JPAWeblogManagerImpl.java:98: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl(Weblogger, JPAPersistenceStrategy)
    
    /**
     * @inheritDoc
     */
    public void saveWeblogCategory(WeblogCategory cat) throws WebloggerException {
        boolean exists = getWeblogCategory(cat.getId()) != null;
    //#JPAWeblogManagerImpl.java:104: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.saveWeblogCategory(WeblogCategory)
    //#JPAWeblogManagerImpl.java:104: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getId()
    //#JPAWeblogManagerImpl.java:104: 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.JPAWeblogManagerImpl
    //#    method: void saveWeblogCategory(WeblogCategory)
    //#    suspicious precondition index: [5]
    //#JPAWeblogManagerImpl.java:104: Warning: suspicious precondition
    //#    the precondition for this.roller.userManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogCategory(WeblogCategory)
    //#    suspicious precondition index: [7]
    //#input(void saveWeblogCategory(WeblogCategory)): "."._tainted
    //#input(void saveWeblogCategory(WeblogCategory)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void saveWeblogCategory(WeblogCategory)): __Descendant_Table[others]
    //#input(void saveWeblogCategory(WeblogCategory)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void saveWeblogCategory(WeblogCategory)): __Dispatch_Table.getWeblogCategory(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void saveWeblogCategory(WeblogCategory)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void saveWeblogCategory(WeblogCategory)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void saveWeblogCategory(WeblogCategory)): __Dispatch_Table.isDuplicateWeblogCategoryName(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)Z
    //#input(void saveWeblogCategory(WeblogCategory)): cat
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveWeblogCategory(WeblogCategory)): this
    //#input(void saveWeblogCategory(WeblogCategory)): this.__Tag
    //#input(void saveWeblogCategory(WeblogCategory)): this.roller
    //#input(void saveWeblogCategory(WeblogCategory)): this.roller.__Tag
    //#input(void saveWeblogCategory(WeblogCategory)): this.roller.userManager
    //#input(void saveWeblogCategory(WeblogCategory)): this.roller.userManager.__Tag
    //#input(void saveWeblogCategory(WeblogCategory)): this.roller.userManager.strategy
    //#input(void saveWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.__Tag
    //#input(void saveWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.emf
    //#input(void saveWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void saveWeblogCategory(WeblogCategory)): this.strategy
    //#input(void saveWeblogCategory(WeblogCategory)): this.strategy.__Tag
    //#input(void saveWeblogCategory(WeblogCategory)): this.strategy.emf
    //#input(void saveWeblogCategory(WeblogCategory)): this.strategy.threadLocalEntityManager
    //#pre[1] (void saveWeblogCategory(WeblogCategory)): cat != null
    //#pre[3] (void saveWeblogCategory(WeblogCategory)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[4] (void saveWeblogCategory(WeblogCategory)): this.roller != null
    //#pre[5] (void saveWeblogCategory(WeblogCategory)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[6] (void saveWeblogCategory(WeblogCategory)): this.roller.userManager != null
    //#pre[7] (void saveWeblogCategory(WeblogCategory)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[8] (void saveWeblogCategory(WeblogCategory)): this.roller.userManager.strategy != null
    //#pre[9] (void saveWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[10] (void saveWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[11] (void saveWeblogCategory(WeblogCategory)): this.strategy != null
    //#pre[12] (void saveWeblogCategory(WeblogCategory)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[14] (void saveWeblogCategory(WeblogCategory)): this.strategy.threadLocalEntityManager != null
    //#pre[13] (void saveWeblogCategory(WeblogCategory)): (soft) this.strategy.emf != null
    //#presumption(void saveWeblogCategory(WeblogCategory)): getUserManager(...).strategy.emf@104 != null
    //#presumption(void saveWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories(...)@113 != null
    //#presumption(void saveWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@118 != null
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getParent
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:java.util.Date
    //#unanalyzed(void saveWeblogCategory(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#test_vector(void saveWeblogCategory(WeblogCategory)): javax.persistence.EntityManager:find(...)@216: Inverse{null}, Addr_Set{null}
    //#test_vector(void saveWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getParent(...)@111: Addr_Set{null}, Inverse{null}
        if (!exists) {
            if (isDuplicateWeblogCategoryName(cat)) {
    //#JPAWeblogManagerImpl.java:106: ?org/apache/roller/weblogger/WebloggerException check
    //#    isDuplicateWeblogCategoryName(...) == 0
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogCategory(WeblogCategory)
    //#    basic block: bb_5
    //#    assertion: isDuplicateWeblogCategoryName(...) == 0
    //#    VN: isDuplicateWeblogCategoryName(...)
    //#    Expected: {0}
    //#    Bad: {1}
    //#    Attribs:  Int  Exp in +/-1000  Exp singleton  Bad singleton  Bad overlaps +/-1000  Bad > Exp
                throw new WebloggerException("Duplicate category name, cannot save category");
            }
            // Newly added object. If it has a parent,
            // maintain relationship from both sides
            WeblogCategory parent = cat.getParent();
    //#JPAWeblogManagerImpl.java:111: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.WeblogCategory:getParent()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.WeblogCategory:getParent()
            if(parent != null) {
                parent.getWeblogCategories().add(cat);
    //#JPAWeblogManagerImpl.java:113: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
            }
        }
        
        // update weblog last modified date.  date updated by saveWebsite()
        roller.getUserManager().saveWebsite(cat.getWebsite());        
    //#JPAWeblogManagerImpl.java:118: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
        this.strategy.store(cat);
    }
    //#JPAWeblogManagerImpl.java:120: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.saveWeblogCategory(WeblogCategory)
    
    /**
     * @inheritDoc
     */
    public void removeWeblogCategory(WeblogCategory cat)
    throws WebloggerException {
        if(cat.retrieveWeblogEntries(true).size() > 0) {
    //#JPAWeblogManagerImpl.java:127: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeWeblogCategory(WeblogCategory)
    //#JPAWeblogManagerImpl.java:127: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.WeblogCategory:retrieveWeblogEntries(bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.WeblogCategory:retrieveWeblogEntries(bool)
    //#JPAWeblogManagerImpl.java:127: 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.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    suspicious precondition index: [5]
    //#JPAWeblogManagerImpl.java:127: Warning: suspicious precondition
    //#    the precondition for this.roller.userManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    suspicious precondition index: [7]
    //#input(void removeWeblogCategory(WeblogCategory)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void removeWeblogCategory(WeblogCategory)): __Descendant_Table[others]
    //#input(void removeWeblogCategory(WeblogCategory)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void removeWeblogCategory(WeblogCategory)): cat
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeWeblogCategory(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeWeblogCategory(WeblogCategory)): this
    //#input(void removeWeblogCategory(WeblogCategory)): this.__Tag
    //#input(void removeWeblogCategory(WeblogCategory)): this.roller
    //#input(void removeWeblogCategory(WeblogCategory)): this.roller.__Tag
    //#input(void removeWeblogCategory(WeblogCategory)): this.roller.userManager
    //#input(void removeWeblogCategory(WeblogCategory)): this.roller.userManager.__Tag
    //#input(void removeWeblogCategory(WeblogCategory)): this.roller.userManager.strategy
    //#input(void removeWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.__Tag
    //#input(void removeWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.emf
    //#input(void removeWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void removeWeblogCategory(WeblogCategory)): this.strategy
    //#input(void removeWeblogCategory(WeblogCategory)): this.strategy.__Tag
    //#input(void removeWeblogCategory(WeblogCategory)): this.strategy.emf
    //#input(void removeWeblogCategory(WeblogCategory)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removeWeblogCategory(WeblogCategory)): cat != null
    //#pre[4] (void removeWeblogCategory(WeblogCategory)): this.roller != null
    //#pre[5] (void removeWeblogCategory(WeblogCategory)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[6] (void removeWeblogCategory(WeblogCategory)): this.roller.userManager != null
    //#pre[7] (void removeWeblogCategory(WeblogCategory)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[8] (void removeWeblogCategory(WeblogCategory)): this.roller.userManager.strategy != null
    //#pre[9] (void removeWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[10] (void removeWeblogCategory(WeblogCategory)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[11] (void removeWeblogCategory(WeblogCategory)): this.strategy != null
    //#pre[12] (void removeWeblogCategory(WeblogCategory)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[14] (void removeWeblogCategory(WeblogCategory)): this.strategy.threadLocalEntityManager != null
    //#pre[3] (void removeWeblogCategory(WeblogCategory)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[13] (void removeWeblogCategory(WeblogCategory)): (soft) this.strategy.emf != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): getUserManager(...).strategy.emf@132 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): java.util.List:size(...)@127 <= 0
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory(...)@140 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory(...)@146 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories(...)@136 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@140 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@141 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@142 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@146 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@147 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@148 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@153 != null
    //#presumption(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:retrieveWeblogEntries(...)@127 != null
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:java.util.Date
    //#unanalyzed(void removeWeblogCategory(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#test_vector(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:equals(...)@140: {0}, {1}
    //#test_vector(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:equals(...)@146: {0}, {1}
    //#test_vector(void removeWeblogCategory(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getParent(...)@134: Addr_Set{null}, Inverse{null}
            throw new WebloggerException("Cannot remove category with entries");
        }
        
        // remove cat
        this.strategy.remove(cat);
        //relationship management for the other side
        WeblogCategory parent = cat.getParent();
    //#JPAWeblogManagerImpl.java:134: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.WeblogCategory:getParent()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.WeblogCategory:getParent()
        if(parent != null) {
            parent.getWeblogCategories().remove(cat);
    //#JPAWeblogManagerImpl.java:136: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
        }
        
        // update website default cats if needed
        if(cat.getWebsite().getBloggerCategory().equals(cat)) {
    //#JPAWeblogManagerImpl.java:140: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:140: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#JPAWeblogManagerImpl.java:140: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogCategory:equals(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogCategory:equals(Object)
            WeblogCategory rootCat = this.getRootWeblogCategory(cat.getWebsite());
    //#JPAWeblogManagerImpl.java:141: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
            cat.getWebsite().setBloggerCategory(rootCat);
    //#JPAWeblogManagerImpl.java:142: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:142: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.Weblog:setBloggerCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.Weblog:setBloggerCategory(WeblogCategory)
            this.strategy.store(cat.getWebsite());
    //#JPAWeblogManagerImpl.java:143: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
        }
        
        if(cat.getWebsite().getDefaultCategory().equals(cat)) {
    //#JPAWeblogManagerImpl.java:146: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:146: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory()
    //#JPAWeblogManagerImpl.java:146: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogCategory:equals(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogCategory:equals(Object)
            WeblogCategory rootCat = this.getRootWeblogCategory(cat.getWebsite());
    //#JPAWeblogManagerImpl.java:147: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
            cat.getWebsite().setDefaultCategory(rootCat);
    //#JPAWeblogManagerImpl.java:148: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:148: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.Weblog:setDefaultCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.Weblog:setDefaultCategory(WeblogCategory)
            this.strategy.store(cat.getWebsite());
    //#JPAWeblogManagerImpl.java:149: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
        }
        
        // update weblog last modified date.  date updated by saveWebsite()
        roller.getUserManager().saveWebsite(
    //#JPAWeblogManagerImpl.java:153: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogCategory(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
                cat.getWebsite());
    }
    //#JPAWeblogManagerImpl.java:155: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeWeblogCategory(WeblogCategory)
    
    /**
     * @inheritDoc
     */
    public void moveWeblogCategory(WeblogCategory srcCat, WeblogCategory destCat)
    throws WebloggerException {
        
        // TODO: this check should be made before calling this method?
        if (destCat.descendentOf(srcCat)) {
    //#JPAWeblogManagerImpl.java:164: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#JPAWeblogManagerImpl.java:164: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(WeblogCategory)
    //#JPAWeblogManagerImpl.java:164: 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.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    suspicious precondition index: [7]
    //#JPAWeblogManagerImpl.java:164: Warning: suspicious precondition
    //#    the precondition for this.roller.userManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    suspicious precondition index: [9]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): " under "._tainted
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): "."._tainted
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): "Moving category "._tainted
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): "NEW child category path is "._tainted
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): "OLD child category path was "._tainted
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): "Updating path tree for category "._tainted
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): __Descendant_Table[others]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): __Dispatch_Table.getWeblogCategory(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): __Dispatch_Table.isDuplicateWeblogCategoryName(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)Z
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): __Dispatch_Table.saveWeblogCategory(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): destCat
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): log
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): srcCat
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.__Tag
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.__Tag
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager.__Tag
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager.strategy
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager.strategy.__Tag
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.strategy
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.strategy.__Tag
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.strategy.emf
    //#input(void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.strategy.threadLocalEntityManager
    //#pre[1] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): destCat != null
    //#pre[2] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): log != null
    //#pre[3] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): srcCat != null
    //#pre[6] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller != null
    //#pre[7] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[8] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager != null
    //#pre[9] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[10] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager.strategy != null
    //#pre[11] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[14] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.strategy != null
    //#pre[15] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[17] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[16] (void moveWeblogCategory(WeblogCategory, WeblogCategory)): (soft) this.strategy.emf != null
    //#presumption(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(...)@164 == 0
    //#presumption(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories(...)@175 != null
    //#presumption(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories(...)@178 != null
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getId
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:getUserManager
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:saveWebsite
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getParent
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getName
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:setPath
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:saveWeblogCategory
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:updatePathTree
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.util.Set:add
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:java.util.Date
    //#unanalyzed(void moveWeblogCategory(WeblogCategory, WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#test_vector(void moveWeblogCategory(WeblogCategory, WeblogCategory)): java.lang.String:equals(...)@180: {0}, {1}
    //#test_vector(void moveWeblogCategory(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getParent(...)@173: Addr_Set{null}, Inverse{null}
            throw new WebloggerException(
                    "ERROR cannot move parent category into it's own child");
        }
        
        log.debug("Moving category "+srcCat.getPath() +
    //#JPAWeblogManagerImpl.java:169: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#JPAWeblogManagerImpl.java:169: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                " under "+destCat.getPath());
        
        
        WeblogCategory oldParent = srcCat.getParent();
    //#JPAWeblogManagerImpl.java:173: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.WeblogCategory:getParent()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.WeblogCategory:getParent()
        if(oldParent != null) {
            oldParent.getWeblogCategories().remove(srcCat);
    //#JPAWeblogManagerImpl.java:175: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
        }
        srcCat.setParent(destCat);
    //#JPAWeblogManagerImpl.java:177: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogCategory:setParent(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogCategory:setParent(WeblogCategory)
        destCat.getWeblogCategories().add(srcCat);
    //#JPAWeblogManagerImpl.java:178: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
        
        if("/".equals(destCat.getPath())) {
    //#JPAWeblogManagerImpl.java:180: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
            srcCat.setPath("/"+srcCat.getName());
    //#JPAWeblogManagerImpl.java:181: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#JPAWeblogManagerImpl.java:181: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogCategory:setPath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogCategory:setPath(String)
        } else {
            srcCat.setPath(destCat.getPath() + "/" + srcCat.getName());
    //#JPAWeblogManagerImpl.java:183: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#JPAWeblogManagerImpl.java:183: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#JPAWeblogManagerImpl.java:183: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogCategory:setPath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategory(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogCategory:setPath(String)
        }
        saveWeblogCategory(srcCat);
        
        // the main work to be done for a category move is to update the
        // path attribute of the category and all descendent categories
        updatePathTree(srcCat);
    }
    //#JPAWeblogManagerImpl.java:190: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.moveWeblogCategory(WeblogCategory, WeblogCategory)
    
    
    // updates the paths of all descendents of the given category
    private void updatePathTree(WeblogCategory cat)
    throws WebloggerException {
        
        log.debug("Updating path tree for category "+cat.getPath());
    //#JPAWeblogManagerImpl.java:197: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.updatePathTree(WeblogCategory)
    //#JPAWeblogManagerImpl.java:197: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#JPAWeblogManagerImpl.java:197: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#JPAWeblogManagerImpl.java:197: 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.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    suspicious precondition index: [6]
    //#    Attribs:  Soft
    //#JPAWeblogManagerImpl.java:197: Warning: suspicious precondition
    //#    the precondition for this.roller.userManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    suspicious precondition index: [8]
    //#    Attribs:  Soft
    //#input(void updatePathTree(WeblogCategory)): "."._tainted
    //#input(void updatePathTree(WeblogCategory)): "NEW child category path is "._tainted
    //#input(void updatePathTree(WeblogCategory)): "OLD child category path was "._tainted
    //#input(void updatePathTree(WeblogCategory)): "Updating path tree for category "._tainted
    //#input(void updatePathTree(WeblogCategory)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void updatePathTree(WeblogCategory)): __Descendant_Table[others]
    //#input(void updatePathTree(WeblogCategory)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void updatePathTree(WeblogCategory)): __Dispatch_Table.getWeblogCategory(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void updatePathTree(WeblogCategory)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void updatePathTree(WeblogCategory)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void updatePathTree(WeblogCategory)): __Dispatch_Table.isDuplicateWeblogCategoryName(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)Z
    //#input(void updatePathTree(WeblogCategory)): __Dispatch_Table.saveWeblogCategory(Lorg/apache/roller/weblogger/pojos/WeblogCategory;)V
    //#input(void updatePathTree(WeblogCategory)): cat
    //#input(void updatePathTree(WeblogCategory)): log
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void updatePathTree(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void updatePathTree(WeblogCategory)): this
    //#input(void updatePathTree(WeblogCategory)): this.__Tag
    //#input(void updatePathTree(WeblogCategory)): this.roller
    //#input(void updatePathTree(WeblogCategory)): this.roller.__Tag
    //#input(void updatePathTree(WeblogCategory)): this.roller.userManager
    //#input(void updatePathTree(WeblogCategory)): this.roller.userManager.__Tag
    //#input(void updatePathTree(WeblogCategory)): this.roller.userManager.strategy
    //#input(void updatePathTree(WeblogCategory)): this.roller.userManager.strategy.__Tag
    //#input(void updatePathTree(WeblogCategory)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void updatePathTree(WeblogCategory)): this.strategy
    //#input(void updatePathTree(WeblogCategory)): this.strategy.__Tag
    //#input(void updatePathTree(WeblogCategory)): this.strategy.emf
    //#input(void updatePathTree(WeblogCategory)): this.strategy.threadLocalEntityManager
    //#pre[1] (void updatePathTree(WeblogCategory)): cat != null
    //#pre[2] (void updatePathTree(WeblogCategory)): log != null
    //#pre[4] (void updatePathTree(WeblogCategory)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[5] (void updatePathTree(WeblogCategory)): (soft) this.roller != null
    //#pre[6] (void updatePathTree(WeblogCategory)): (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[7] (void updatePathTree(WeblogCategory)): (soft) this.roller.userManager != null
    //#pre[8] (void updatePathTree(WeblogCategory)): (soft) this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[9] (void updatePathTree(WeblogCategory)): (soft) this.roller.userManager.strategy != null
    //#pre[10] (void updatePathTree(WeblogCategory)): (soft) this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[12] (void updatePathTree(WeblogCategory)): (soft) this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[13] (void updatePathTree(WeblogCategory)): (soft) this.strategy != null
    //#pre[14] (void updatePathTree(WeblogCategory)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[15] (void updatePathTree(WeblogCategory)): (soft) this.strategy.emf != null
    //#pre[16] (void updatePathTree(WeblogCategory)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void updatePathTree(WeblogCategory)): java.util.Iterator:next(...)@202 != null
    //#presumption(void updatePathTree(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories(...)@200 != null
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getId
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:getUserManager
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:saveWebsite
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getParent
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getName
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:setPath
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:saveWeblogCategory
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:updatePathTree
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.util.Set:add
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:java.util.Date
    //#unanalyzed(void updatePathTree(WeblogCategory)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#test_vector(void updatePathTree(WeblogCategory)): java.lang.String:equals(...)@207: {0}, {1}
    //#test_vector(void updatePathTree(WeblogCategory)): java.util.Iterator:hasNext(...)@201: {0}, {1}
        
        WeblogCategory childCat = null;
    //#JPAWeblogManagerImpl.java:199: Warning: unused assignment
    //#    unused assignment into childCat
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    Attribs:  Uncertain
        Iterator childCats = cat.getWeblogCategories().iterator();
    //#JPAWeblogManagerImpl.java:200: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
        while(childCats.hasNext()) {
            childCat = (WeblogCategory) childCats.next();
            
            log.debug("OLD child category path was "+childCat.getPath());
    //#JPAWeblogManagerImpl.java:204: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#JPAWeblogManagerImpl.java:204: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            
            // update path and save
            if("/".equals(cat.getPath())) {
    //#JPAWeblogManagerImpl.java:207: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
                childCat.setPath("/" + childCat.getName());
    //#JPAWeblogManagerImpl.java:208: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#JPAWeblogManagerImpl.java:208: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogCategory:setPath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogCategory:setPath(String)
            } else {
                childCat.setPath(cat.getPath() + "/" + childCat.getName());
    //#JPAWeblogManagerImpl.java:210: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#JPAWeblogManagerImpl.java:210: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#JPAWeblogManagerImpl.java:210: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogCategory:setPath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogCategory:setPath(String)
            }
            saveWeblogCategory(childCat);
            
            log.debug("NEW child category path is "+ childCat.getPath());
    //#JPAWeblogManagerImpl.java:214: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#JPAWeblogManagerImpl.java:214: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updatePathTree(WeblogCategory)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            
            // then make recursive call to update this cats children
            updatePathTree(childCat);
        }
    }
    //#JPAWeblogManagerImpl.java:219: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.updatePathTree(WeblogCategory)
    
    /**
     * @inheritDoc
     */
    public void moveWeblogCategoryContents(WeblogCategory srcCat,
            WeblogCategory destCat)
            throws WebloggerException {
        
        // TODO: this check should be made before calling this method?
        if (destCat.descendentOf(srcCat)) {
    //#JPAWeblogManagerImpl.java:229: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#JPAWeblogManagerImpl.java:229: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(WeblogCategory)
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): destCat
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): srcCat
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): this
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): this.strategy
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): this.strategy.__Tag
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): this.strategy.emf
    //#input(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): this.strategy.threadLocalEntityManager
    //#pre[1] (void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): destCat != null
    //#pre[2] (void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): srcCat != null
    //#pre[4] (void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): (soft) this.strategy != null
    //#pre[5] (void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): (soft) this.strategy.emf != null
    //#pre[7] (void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): java.util.Iterator:next(...)@241 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory(...)@257 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory(...)@257 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory(...)@250 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory(...)@250 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(...)@229 == 0
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getId(...)@250 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getId(...)@257 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@250 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@250 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@253 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@257 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@257 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@260 != null
    //#presumption(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:retrieveWeblogEntries(...)@235 != null
    //#unanalyzed(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#test_vector(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): java.lang.String:equals(...)@250: {1}, {0}
    //#test_vector(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): java.lang.String:equals(...)@257: {1}, {0}
    //#test_vector(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): java.util.Iterator:hasNext(...)@240: {0}, {1}
    //#test_vector(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(...)@250: {0}, {1}
    //#test_vector(void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(...)@257: {0}, {1}
            throw new WebloggerException(
                    "ERROR cannot move parent category into it's own child");
        }
        
        // get all entries in category and subcats
        List results = srcCat.retrieveWeblogEntries(true);
    //#JPAWeblogManagerImpl.java:235: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.WeblogCategory:retrieveWeblogEntries(bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.WeblogCategory:retrieveWeblogEntries(bool)
        
        // Loop through entries in src cat, assign them to dest cat
        Iterator iter = results.iterator();
        Weblog website = destCat.getWebsite();
    //#JPAWeblogManagerImpl.java:239: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
        while (iter.hasNext()) {
            WeblogEntry entry = (WeblogEntry) iter.next();
            entry.setCategory(destCat);
    //#JPAWeblogManagerImpl.java:242: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
            entry.setWebsite(website);
    //#JPAWeblogManagerImpl.java:243: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setWebsite(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setWebsite(Weblog)
            this.strategy.store(entry);
        }
        
        // Make sure website's default and bloggerapi categories
        // are valid after the move
        
        if (srcCat.getWebsite().getDefaultCategory().getId()
    //#JPAWeblogManagerImpl.java:250: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:250: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory()
    //#JPAWeblogManagerImpl.java:250: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getId()
    //#JPAWeblogManagerImpl.java:250: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(WeblogCategory)
        .equals(srcCat.getId())
        || srcCat.getWebsite().getDefaultCategory().descendentOf(srcCat)) {
            srcCat.getWebsite().setDefaultCategory(destCat);
    //#JPAWeblogManagerImpl.java:253: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:253: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.Weblog:setDefaultCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.Weblog:setDefaultCategory(WeblogCategory)
            this.strategy.store(srcCat.getWebsite());
    //#JPAWeblogManagerImpl.java:254: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
        }
        
        if (srcCat.getWebsite().getBloggerCategory().getId()
    //#JPAWeblogManagerImpl.java:257: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:257: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#JPAWeblogManagerImpl.java:257: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getId()
    //#JPAWeblogManagerImpl.java:257: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogCategory:descendentOf(WeblogCategory)
        .equals(srcCat.getId())
        || srcCat.getWebsite().getBloggerCategory().descendentOf(srcCat)) {
            srcCat.getWebsite().setBloggerCategory(destCat);
    //#JPAWeblogManagerImpl.java:260: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:260: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.Weblog:setBloggerCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.Weblog:setBloggerCategory(WeblogCategory)
            this.strategy.store(srcCat.getWebsite());
    //#JPAWeblogManagerImpl.java:261: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
        }
    }
    //#JPAWeblogManagerImpl.java:263: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.moveWeblogCategoryContents(WeblogCategory, WeblogCategory)
    
    /**
     * @inheritDoc
     */
    public void saveComment(WeblogEntryComment comment) throws WebloggerException {
        this.strategy.store(comment);
    //#JPAWeblogManagerImpl.java:269: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.saveComment(WeblogEntryComment)
    //#JPAWeblogManagerImpl.java:269: 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.JPAWeblogManagerImpl
    //#    method: void saveComment(WeblogEntryComment)
    //#    suspicious precondition index: [4]
    //#JPAWeblogManagerImpl.java:269: Warning: suspicious precondition
    //#    the precondition for this.roller.userManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveComment(WeblogEntryComment)
    //#    suspicious precondition index: [6]
    //#input(void saveComment(WeblogEntryComment)): comment
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveComment(WeblogEntryComment)): this
    //#input(void saveComment(WeblogEntryComment)): this.roller
    //#input(void saveComment(WeblogEntryComment)): this.roller.__Tag
    //#input(void saveComment(WeblogEntryComment)): this.roller.userManager
    //#input(void saveComment(WeblogEntryComment)): this.roller.userManager.__Tag
    //#input(void saveComment(WeblogEntryComment)): this.roller.userManager.strategy
    //#input(void saveComment(WeblogEntryComment)): this.roller.userManager.strategy.__Tag
    //#input(void saveComment(WeblogEntryComment)): this.roller.userManager.strategy.emf
    //#input(void saveComment(WeblogEntryComment)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void saveComment(WeblogEntryComment)): this.strategy
    //#input(void saveComment(WeblogEntryComment)): this.strategy.__Tag
    //#input(void saveComment(WeblogEntryComment)): this.strategy.emf
    //#input(void saveComment(WeblogEntryComment)): this.strategy.threadLocalEntityManager
    //#pre[1] (void saveComment(WeblogEntryComment)): comment != null
    //#pre[3] (void saveComment(WeblogEntryComment)): this.roller != null
    //#pre[4] (void saveComment(WeblogEntryComment)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[5] (void saveComment(WeblogEntryComment)): this.roller.userManager != null
    //#pre[6] (void saveComment(WeblogEntryComment)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[7] (void saveComment(WeblogEntryComment)): this.roller.userManager.strategy != null
    //#pre[8] (void saveComment(WeblogEntryComment)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (void saveComment(WeblogEntryComment)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[10] (void saveComment(WeblogEntryComment)): this.strategy != null
    //#pre[11] (void saveComment(WeblogEntryComment)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (void saveComment(WeblogEntryComment)): this.strategy.threadLocalEntityManager != null
    //#pre[12] (void saveComment(WeblogEntryComment)): (soft) this.strategy.emf != null
    //#presumption(void saveComment(WeblogEntryComment)): getUserManager(...).strategy.emf@269 != null
    //#presumption(void saveComment(WeblogEntryComment)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@272 != null
    //#presumption(void saveComment(WeblogEntryComment)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry(...)@272 != null
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:java.util.Date
    //#unanalyzed(void saveComment(WeblogEntryComment)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
        
        // update weblog last modified date.  date updated by saveWebsite()
        roller.getUserManager()
    //#JPAWeblogManagerImpl.java:272: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveComment(WeblogEntryComment)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#JPAWeblogManagerImpl.java:272: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveComment(WeblogEntryComment)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
        .saveWebsite(comment.getWeblogEntry().getWebsite());
    }
    //#JPAWeblogManagerImpl.java:274: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.saveComment(WeblogEntryComment)
    
    /**
     * @inheritDoc
     */
    public void removeComment(WeblogEntryComment comment) throws WebloggerException {
        this.strategy.remove(comment);
    //#JPAWeblogManagerImpl.java:280: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeComment(WeblogEntryComment)
    //#JPAWeblogManagerImpl.java:280: 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.JPAWeblogManagerImpl
    //#    method: void removeComment(WeblogEntryComment)
    //#    suspicious precondition index: [4]
    //#JPAWeblogManagerImpl.java:280: Warning: suspicious precondition
    //#    the precondition for this.roller.userManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeComment(WeblogEntryComment)
    //#    suspicious precondition index: [6]
    //#input(void removeComment(WeblogEntryComment)): comment
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeComment(WeblogEntryComment)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeComment(WeblogEntryComment)): this
    //#input(void removeComment(WeblogEntryComment)): this.roller
    //#input(void removeComment(WeblogEntryComment)): this.roller.__Tag
    //#input(void removeComment(WeblogEntryComment)): this.roller.userManager
    //#input(void removeComment(WeblogEntryComment)): this.roller.userManager.__Tag
    //#input(void removeComment(WeblogEntryComment)): this.roller.userManager.strategy
    //#input(void removeComment(WeblogEntryComment)): this.roller.userManager.strategy.__Tag
    //#input(void removeComment(WeblogEntryComment)): this.roller.userManager.strategy.emf
    //#input(void removeComment(WeblogEntryComment)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void removeComment(WeblogEntryComment)): this.strategy
    //#input(void removeComment(WeblogEntryComment)): this.strategy.__Tag
    //#input(void removeComment(WeblogEntryComment)): this.strategy.emf
    //#input(void removeComment(WeblogEntryComment)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removeComment(WeblogEntryComment)): comment != null
    //#pre[3] (void removeComment(WeblogEntryComment)): this.roller != null
    //#pre[4] (void removeComment(WeblogEntryComment)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[5] (void removeComment(WeblogEntryComment)): this.roller.userManager != null
    //#pre[6] (void removeComment(WeblogEntryComment)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[7] (void removeComment(WeblogEntryComment)): this.roller.userManager.strategy != null
    //#pre[8] (void removeComment(WeblogEntryComment)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (void removeComment(WeblogEntryComment)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[10] (void removeComment(WeblogEntryComment)): this.strategy != null
    //#pre[11] (void removeComment(WeblogEntryComment)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (void removeComment(WeblogEntryComment)): this.strategy.threadLocalEntityManager != null
    //#pre[12] (void removeComment(WeblogEntryComment)): (soft) this.strategy.emf != null
    //#presumption(void removeComment(WeblogEntryComment)): getUserManager(...).strategy.emf@280 != null
    //#presumption(void removeComment(WeblogEntryComment)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@283 != null
    //#presumption(void removeComment(WeblogEntryComment)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry(...)@283 != null
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:java.util.Date
    //#unanalyzed(void removeComment(WeblogEntryComment)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
        
        // update weblog last modified date.  date updated by saveWebsite()
        roller.getUserManager()
    //#JPAWeblogManagerImpl.java:283: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeComment(WeblogEntryComment)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry()
    //#JPAWeblogManagerImpl.java:283: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeComment(WeblogEntryComment)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
        .saveWebsite(comment.getWeblogEntry().getWebsite());
    }
    //#JPAWeblogManagerImpl.java:285: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeComment(WeblogEntryComment)
    
    /**
     * @inheritDoc
     */
    // TODO: perhaps the createAnchor() and queuePings() items should go outside this method?
    public void saveWeblogEntry(WeblogEntry entry) throws WebloggerException {
        
        if (entry.getAnchor() == null || entry.getAnchor().trim().equals("")) {
    //#JPAWeblogManagerImpl.java:293: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.saveWeblogEntry(WeblogEntry)
    //#JPAWeblogManagerImpl.java:293: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#JPAWeblogManagerImpl.java:293: 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.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#JPAWeblogManagerImpl.java:293: 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.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    suspicious precondition index: [19]
    //#    Attribs:  Soft
    //#JPAWeblogManagerImpl.java:293: 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.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    suspicious precondition index: [25]
    //#    Attribs:  Soft
    //#JPAWeblogManagerImpl.java:293: Warning: suspicious precondition
    //#    the precondition for this.roller.userManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    suspicious precondition index: [33]
    //#    Attribs:  Soft
    //#input(void saveWeblogEntry(WeblogEntry)): "="._tainted
    //#input(void saveWeblogEntry(WeblogEntry)): "A ping queue entry is already present for this ping target and website: "._tainted
    //#input(void saveWeblogEntry(WeblogEntry)): "Creating new ping queue entry for auto ping configuration: "._tainted
    //#input(void saveWeblogEntry(WeblogEntry)): "Storing ping queue entry: "._tainted
    //#input(void saveWeblogEntry(WeblogEntry)): "Trouble accessing property: "._tainted
    //#input(void saveWeblogEntry(WeblogEntry)): "]"._tainted
    //#input(void saveWeblogEntry(WeblogEntry)): "fetched property ["._tainted
    //#input(void saveWeblogEntry(WeblogEntry)): "pings.suspendPingProcessing"._tainted
    //#input(void saveWeblogEntry(WeblogEntry)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void saveWeblogEntry(WeblogEntry)): __Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): __Dispatch_Table.createAnchor(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Ljava/lang/String;
    //#input(void saveWeblogEntry(WeblogEntry)): __Dispatch_Table.updateTagCount(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/Weblog;I)V
    //#input(void saveWeblogEntry(WeblogEntry)): entry
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPingQueueManager()Lorg/apache/roller/weblogger/business/pings/PingQueueManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPingQueueManager()Lorg/apache/roller/weblogger/business/pings/PingQueueManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.__Dispatch_Table.getApplicableAutoPings(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Ljava/util/List;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.__Dispatch_Table.getAutoPingsByWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.__Dispatch_Table.queueApplicableAutoPings(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.logger
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.addQueueEntry(Lorg/apache/roller/weblogger/pojos/AutoPing;)V
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.__Dispatch_Table.saveQueueEntry(Lorg/apache/roller/weblogger/pojos/PingQueueEntry;)V
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.log
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPingQueueManager()Lorg/apache/roller/weblogger/business/pings/PingQueueManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/AutoPingManager]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Dispatch_Table.queueApplicableAutoPings(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/PingQueueManager]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/pings/PingQueueManager.__Dispatch_Table.addQueueEntry(Lorg/apache/roller/weblogger/pojos/AutoPing;)V
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/pojos/AutoPing.__Descendant_Table[org/apache/roller/weblogger/pojos/AutoPing]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/pojos/AutoPing.__Descendant_Table[others]
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/pojos/AutoPing.__Dispatch_Table.getPingTarget()Lorg/apache/roller/weblogger/pojos/PingTarget;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/pojos/AutoPing.__Dispatch_Table.getWebsite()Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(void saveWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/pojos/AutoPing.pcInheritedFieldCount
    //#input(void saveWeblogEntry(WeblogEntry)): this
    //#input(void saveWeblogEntry(WeblogEntry)): this.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller...__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller...pingQueueManager
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller...pingQueueManager.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller...pingQueueManager.strategy
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller...pingQueueManager.strategy.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller...pingQueueManager.strategy.emf
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller...pingQueueManager.strategy.threadLocalEntityManager
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.autoPingManager
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.autoPingManager.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.autoPingManager.roller
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.autoPingManager.strategy
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.autoPingManager.strategy.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.autoPingManager.strategy.emf
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.autoPingManager.strategy.threadLocalEntityManager
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.userManager
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.userManager.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.userManager.strategy
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.userManager.strategy.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.userManager.strategy.emf
    //#input(void saveWeblogEntry(WeblogEntry)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void saveWeblogEntry(WeblogEntry)): this.strategy
    //#input(void saveWeblogEntry(WeblogEntry)): this.strategy.__Tag
    //#input(void saveWeblogEntry(WeblogEntry)): this.strategy.emf
    //#input(void saveWeblogEntry(WeblogEntry)): this.strategy.threadLocalEntityManager
    //#pre[1] (void saveWeblogEntry(WeblogEntry)): entry != null
    //#pre[37] (void saveWeblogEntry(WeblogEntry)): this.strategy != null
    //#pre[38] (void saveWeblogEntry(WeblogEntry)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[40] (void saveWeblogEntry(WeblogEntry)): this.strategy.threadLocalEntityManager != null
    //#pre[2] (void saveWeblogEntry(WeblogEntry)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (void saveWeblogEntry(WeblogEntry)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[4] (void saveWeblogEntry(WeblogEntry)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[12] (void saveWeblogEntry(WeblogEntry)): (soft) org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.logger != null
    //#pre[13] (void saveWeblogEntry(WeblogEntry)): (soft) org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.log != null
    //#pre[14] (void saveWeblogEntry(WeblogEntry)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[15] (void saveWeblogEntry(WeblogEntry)): (soft) org/apache/roller/weblogger/pojos/AutoPing.pcInheritedFieldCount <= 4_294_967_293
    //#pre[17] (void saveWeblogEntry(WeblogEntry)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[18] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller != null
    //#pre[19] (void saveWeblogEntry(WeblogEntry)): (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[20] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller...pingQueueManager != null
    //#pre[21] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller...pingQueueManager.__Tag == org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl
    //#pre[22] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller...pingQueueManager.strategy != null
    //#pre[23] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller...pingQueueManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[24] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller...pingQueueManager.strategy.threadLocalEntityManager != null
    //#pre[25] (void saveWeblogEntry(WeblogEntry)): (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[26] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.autoPingManager != null
    //#pre[27] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.autoPingManager.__Tag == org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl
    //#pre[28] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.autoPingManager.roller != null
    //#pre[29] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.autoPingManager.strategy != null
    //#pre[30] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.autoPingManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[31] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.autoPingManager.strategy.threadLocalEntityManager != null
    //#pre[32] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.userManager != null
    //#pre[33] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[34] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.userManager.strategy != null
    //#pre[35] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[36] (void saveWeblogEntry(WeblogEntry)): (soft) this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[39] (void saveWeblogEntry(WeblogEntry)): (soft) this.strategy.emf != null
    //#presumption(void saveWeblogEntry(WeblogEntry)): getAutopingManager(...).strategy.emf@318 != null
    //#presumption(void saveWeblogEntry(WeblogEntry)): getUserManager(...).strategy.emf@318 != null
    //#presumption(void saveWeblogEntry(WeblogEntry)): java.lang.System:currentTimeMillis(...)@310 <= 18_446_744_073_709_491_615
    //#presumption(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getAddedTags(...)@297 != null
    //#presumption(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor(...)@293 != null
    //#presumption(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime(...)@310 != null
    //#presumption(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getRemovedTags(...)@302 != null
    //#presumption(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@299 != null
    //#presumption(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@304 != null
    //#presumption(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@322 != null
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:createAnchorBase
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.Date
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:executeUpdate
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setTotal
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.Integer
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:getBooleanProperty
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:getPingQueueManager
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:addQueueEntry
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.openjpa.enhance.StateManager:accessingField
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.System:currentTimeMillis
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.util.UUIDGenerator:generateUUID
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:getWeblogger
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:getProperty
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.Boolean
    //#unanalyzed(void saveWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#test_vector(void saveWeblogEntry(WeblogEntry)): java.lang.String:equals(...)@293: {0}, {1}
    //#test_vector(void saveWeblogEntry(WeblogEntry)): java.lang.String:equals(...)@310: {0}, {1}
    //#test_vector(void saveWeblogEntry(WeblogEntry)): java.sql.Timestamp:after(...)@310: {0}, {1}
    //#test_vector(void saveWeblogEntry(WeblogEntry)): java.util.Iterator:hasNext(...)@297: {0}, {1}
    //#test_vector(void saveWeblogEntry(WeblogEntry)): java.util.Iterator:hasNext(...)@302: {0}, {1}
    //#test_vector(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor(...)@293: Addr_Set{null}, Inverse{null}
    //#test_vector(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:isPublished(...)@321: {0}, {1}
    //#test_vector(void saveWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:isPublished(...)@326: {0}, {1}
            entry.setAnchor(this.createAnchor(entry));
    //#JPAWeblogManagerImpl.java:294: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setAnchor(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setAnchor(String)
        }
        
        for(Iterator it = entry.getAddedTags().iterator(); it.hasNext();) {
    //#JPAWeblogManagerImpl.java:297: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogEntry:getAddedTags()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogEntry:getAddedTags()
            String name = (String) it.next();
            updateTagCount(name, entry.getWebsite(), 1);
    //#JPAWeblogManagerImpl.java:299: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
        }
        
        for(Iterator it = entry.getRemovedTags().iterator(); it.hasNext();) {
    //#JPAWeblogManagerImpl.java:302: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogEntry:getRemovedTags()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogEntry:getRemovedTags()
            String name = (String) it.next();
            updateTagCount(name, entry.getWebsite(), -1);
    //#JPAWeblogManagerImpl.java:304: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
        }
        
        // if the entry was published to future, set status as SCHEDULED
        // we only consider an entry future published if it is scheduled
        // more than 1 minute into the future
        if ("PUBLISHED".equals(entry.getStatus()) &&
    //#JPAWeblogManagerImpl.java:310: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getStatus()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getStatus()
    //#JPAWeblogManagerImpl.java:310: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
                entry.getPubTime().after(new Date(System.currentTimeMillis() + 60000))) {
            entry.setStatus(WeblogEntry.SCHEDULED);
    //#JPAWeblogManagerImpl.java:312: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
        }
        
        // Store value object (creates new or updates existing)
        entry.setUpdateTime(new Timestamp(new Date().getTime()));
    //#JPAWeblogManagerImpl.java:316: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
        
        this.strategy.store(entry);
        
        // update weblog last modified date.  date updated by saveWebsite()
        if(entry.isPublished()) {
    //#JPAWeblogManagerImpl.java:321: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
            roller.getUserManager()
    //#JPAWeblogManagerImpl.java:322: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
            .saveWebsite(entry.getWebsite());
        }
        
        if(entry.isPublished()) {
    //#JPAWeblogManagerImpl.java:326: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
            // Queue applicable pings for this update.
            roller.getAutopingManager()
    //#JPAWeblogManagerImpl.java:328: ?precondition failure
    //#    org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings: (soft) this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    basic block: bb_16
    //#    assertion: (soft) getAutopingManager(...).roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#    callee: void org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings(WeblogEntry)
    //#    callee assertion: (soft) this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#    callee file: JPAAutoPingManagerImpl.java
    //#    callee precondition index: [19]
    //#    callee srcpos: 92
    //#    VN: getAutopingManager(...).roller.__Tag
    //#    Expected: {334_080, 335_104, 342_016}
    //#    Bad: {0, Invalid}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Soft  Bad < Exp
    //#JPAWeblogManagerImpl.java:328: ?precondition failure
    //#    org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings: (soft) this.roller.pingQueueManager != null
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    basic block: bb_16
    //#    assertion: (soft) getAutopingManager(...).roller.pingQueueManager != null
    //#    callee: void org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings(WeblogEntry)
    //#    callee assertion: (soft) this.roller.pingQueueManager != null
    //#    callee file: JPAAutoPingManagerImpl.java
    //#    callee precondition index: [20]
    //#    callee srcpos: 92
    //#    VN: getAutopingManager(...).roller.pingQueueManager
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null, Invalid}
    //#    Attribs:  Ptr  null in Bad  Soft
    //#JPAWeblogManagerImpl.java:328: ?precondition failure
    //#    org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings: (soft) this.roller.pingQueueManager.__Tag == org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    basic block: bb_16
    //#    assertion: (soft) getAutopingManager(...).roller.pingQueueManager.__Tag == org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl
    //#    callee: void org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings(WeblogEntry)
    //#    callee assertion: (soft) this.roller.pingQueueManager.__Tag == org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl
    //#    callee file: JPAAutoPingManagerImpl.java
    //#    callee precondition index: [21]
    //#    callee srcpos: 92
    //#    VN: getAutopingManager(...).roller.pingQueueManager.__Tag
    //#    Expected: {338_176}
    //#    Bad: {0, Invalid}
    //#    Attribs:  Int  Exp singleton  Bad singleton  Bad overlaps +/-1000  Soft  Bad < Exp
    //#JPAWeblogManagerImpl.java:328: ?precondition failure
    //#    org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings: (soft) this.roller.pingQueueManager.strategy != null
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    basic block: bb_16
    //#    assertion: (soft) getAutopingManager(...).roller.pingQueueManager.strategy != null
    //#    callee: void org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings(WeblogEntry)
    //#    callee assertion: (soft) this.roller.pingQueueManager.strategy != null
    //#    callee file: JPAAutoPingManagerImpl.java
    //#    callee precondition index: [22]
    //#    callee srcpos: 92
    //#    VN: getAutopingManager(...).roller.pingQueueManager.strategy
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null, Invalid}
    //#    Attribs:  Ptr  null in Bad  Soft
    //#JPAWeblogManagerImpl.java:328: ?precondition failure
    //#    org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings: (soft) this.roller.pingQueueManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    basic block: bb_16
    //#    assertion: (soft) getAutopingManager(...).roller.pingQueueManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#    callee: void org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings(WeblogEntry)
    //#    callee assertion: (soft) this.roller.pingQueueManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#    callee file: JPAAutoPingManagerImpl.java
    //#    callee precondition index: [23]
    //#    callee srcpos: 92
    //#    VN: getAutopingManager(...).roller.pingQueueManager.strategy.__Tag
    //#    Expected: {337_408}
    //#    Bad: {0, Invalid}
    //#    Attribs:  Int  Exp singleton  Bad singleton  Bad overlaps +/-1000  Soft  Bad < Exp
    //#JPAWeblogManagerImpl.java:328: ?precondition failure
    //#    org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings: (soft) this.roller.pingQueueManager.strategy.threadLocalEntityManager != null
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void saveWeblogEntry(WeblogEntry)
    //#    basic block: bb_16
    //#    assertion: (soft) getAutopingManager(...).roller.pingQueueManager.strategy.threadLocalEntityManager != null
    //#    callee: void org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.queueApplicableAutoPings(WeblogEntry)
    //#    callee assertion: (soft) this.roller.pingQueueManager.strategy.threadLocalEntityManager != null
    //#    callee file: JPAAutoPingManagerImpl.java
    //#    callee precondition index: [24]
    //#    callee srcpos: 92
    //#    VN: getAutopingManager(...).roller.pingQueueManager.strategy.threadLocalEntityManager
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null, Invalid}
    //#    Attribs:  Ptr  null in Bad  Soft
            .queueApplicableAutoPings(entry);
        }
    }
    //#JPAWeblogManagerImpl.java:331: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.saveWeblogEntry(WeblogEntry)
    
    /**
     * @inheritDoc
     */
    public void removeWeblogEntry(WeblogEntry entry)
    throws WebloggerException {
        
        String entryAnchor = entry.getAnchor();
    //#JPAWeblogManagerImpl.java:339: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeWeblogEntry(WeblogEntry)
    //#JPAWeblogManagerImpl.java:339: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#JPAWeblogManagerImpl.java:339: 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.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    suspicious precondition index: [6]
    //#JPAWeblogManagerImpl.java:339: Warning: suspicious precondition
    //#    the precondition for this.roller.userManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    suspicious precondition index: [8]
    //#input(void removeWeblogEntry(WeblogEntry)): " <> "._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): " = "._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): " AND "._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): " OR c.content LIKE ?"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): " ORDER BY c.postTime ASC"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): " ORDER BY c.postTime DESC"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): " WHERE "._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): "%"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): "(c.url LIKE ?"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): ")"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): ":"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): "SELECT c FROM WeblogEntryComment c "._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): "c.postTime <= ?"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): "c.postTime >= ?"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): "c.status "._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): "c.weblogEntry = ?"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): "c.weblogEntry.website = ?"._tainted
    //#input(void removeWeblogEntry(WeblogEntry)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void removeWeblogEntry(WeblogEntry)): __Descendant_Table[others]
    //#input(void removeWeblogEntry(WeblogEntry)): __Dispatch_Table.getComments(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;ZII)Ljava/util/List;
    //#input(void removeWeblogEntry(WeblogEntry)): __Dispatch_Table.updateTagCount(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/Weblog;I)V
    //#input(void removeWeblogEntry(WeblogEntry)): entry
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.flush()V
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Class;Ljava/lang/String;)V
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeWeblogEntry(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeWeblogEntry(WeblogEntry)): this
    //#input(void removeWeblogEntry(WeblogEntry)): this.__Tag
    //#input(void removeWeblogEntry(WeblogEntry)): this.entryAnchorToIdMap
    //#input(void removeWeblogEntry(WeblogEntry)): this.roller
    //#input(void removeWeblogEntry(WeblogEntry)): this.roller.__Tag
    //#input(void removeWeblogEntry(WeblogEntry)): this.roller.userManager
    //#input(void removeWeblogEntry(WeblogEntry)): this.roller.userManager.__Tag
    //#input(void removeWeblogEntry(WeblogEntry)): this.roller.userManager.strategy
    //#input(void removeWeblogEntry(WeblogEntry)): this.roller.userManager.strategy.__Tag
    //#input(void removeWeblogEntry(WeblogEntry)): this.roller.userManager.strategy.emf
    //#input(void removeWeblogEntry(WeblogEntry)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void removeWeblogEntry(WeblogEntry)): this.strategy
    //#input(void removeWeblogEntry(WeblogEntry)): this.strategy.__Tag
    //#input(void removeWeblogEntry(WeblogEntry)): this.strategy.emf
    //#input(void removeWeblogEntry(WeblogEntry)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removeWeblogEntry(WeblogEntry)): entry != null
    //#pre[3] (void removeWeblogEntry(WeblogEntry)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[4] (void removeWeblogEntry(WeblogEntry)): this.entryAnchorToIdMap != null
    //#pre[5] (void removeWeblogEntry(WeblogEntry)): this.roller != null
    //#pre[6] (void removeWeblogEntry(WeblogEntry)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[7] (void removeWeblogEntry(WeblogEntry)): this.roller.userManager != null
    //#pre[8] (void removeWeblogEntry(WeblogEntry)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[9] (void removeWeblogEntry(WeblogEntry)): this.roller.userManager.strategy != null
    //#pre[10] (void removeWeblogEntry(WeblogEntry)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[11] (void removeWeblogEntry(WeblogEntry)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[12] (void removeWeblogEntry(WeblogEntry)): this.strategy != null
    //#pre[13] (void removeWeblogEntry(WeblogEntry)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[15] (void removeWeblogEntry(WeblogEntry)): this.strategy.threadLocalEntityManager != null
    //#pre[14] (void removeWeblogEntry(WeblogEntry)): (soft) this.strategy.emf != null
    //#presumption(void removeWeblogEntry(WeblogEntry)): getUserManager(...).strategy.emf@390 != null
    //#presumption(void removeWeblogEntry(WeblogEntry)): java.util.Iterator:next(...)@346 != null
    //#presumption(void removeWeblogEntry(WeblogEntry)): java.util.Iterator:next(...)@371 != null
    //#presumption(void removeWeblogEntry(WeblogEntry)): javax.persistence.Query:getResultList(...)@344 != null
    //#presumption(void removeWeblogEntry(WeblogEntry)): javax.persistence.Query:getResultList(...)@924 != null
    //#presumption(void removeWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes(...)@380 != null
    //#presumption(void removeWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getTags(...)@370 != null
    //#presumption(void removeWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@340 != null
    //#presumption(void removeWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@372 != null
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.List:get
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:setFirstResult
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.util.Date
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.Query:executeUpdate
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setTotal
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:java.lang.Integer
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:commit
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.RollerException
    //#unanalyzed(void removeWeblogEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#test_vector(void removeWeblogEntry(WeblogEntry)): java.util.Iterator:hasNext(...)@345: {0}, {1}
    //#test_vector(void removeWeblogEntry(WeblogEntry)): java.util.Iterator:hasNext(...)@364: {0}, {1}
    //#test_vector(void removeWeblogEntry(WeblogEntry)): java.util.Iterator:hasNext(...)@370: {0}, {1}
    //#test_vector(void removeWeblogEntry(WeblogEntry)): java.util.Iterator:hasNext(...)@380: {0}, {1}
    //#test_vector(void removeWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes(...)@379: Addr_Set{null}, Inverse{null}
    //#test_vector(void removeWeblogEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getTags(...)@369: Addr_Set{null}, Inverse{null}
        Weblog website = entry.getWebsite();
    //#JPAWeblogManagerImpl.java:340: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
        
        Query q = strategy.getNamedQuery("WeblogReferrer.getByWeblogEntry");
        q.setParameter(1, entry);
        List referers = q.getResultList();
        for (Iterator iter = referers.iterator(); iter.hasNext();) {
            WeblogReferrer referer = (WeblogReferrer) iter.next();
            this.strategy.remove(referer.getClass(), referer.getId());
    //#JPAWeblogManagerImpl.java:347: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogReferrer:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogReferrer:getId()
        }
        // TODO: can we eliminate this unnecessary flush with OpenJPA 1.0
        this.strategy.flush(); 
       
        // remove comments
        List comments = getComments(
                null,  // website
                entry,
                null,  // search String
                null,  // startDate
                null,  // endDate
                null,  // status
                true,  // reverse chrono order (not that it matters)
                0,     // offset
                -1);   // no limit
        Iterator commentsIT = comments.iterator();
        while (commentsIT.hasNext()) {
            this.strategy.remove((WeblogEntryComment) commentsIT.next());
        }
        
        // remove tags aggregates
        if (entry.getTags() != null) {
    //#JPAWeblogManagerImpl.java:369: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogEntry:getTags()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogEntry:getTags()
            for (Iterator it = entry.getTags().iterator(); it.hasNext(); ) {
    //#JPAWeblogManagerImpl.java:370: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogEntry:getTags()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogEntry:getTags()
                WeblogEntryTag tag = (WeblogEntryTag) it.next();
                updateTagCount(tag.getName(), entry.getWebsite(), -1);
    //#JPAWeblogManagerImpl.java:372: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryTag:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryTag:getName()
    //#JPAWeblogManagerImpl.java:372: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
                it.remove();
                this.strategy.remove(tag);
            }
        }
        
        // remove attributes
        if (entry.getEntryAttributes() != null) {
    //#JPAWeblogManagerImpl.java:379: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes()
            for (Iterator it = entry.getEntryAttributes().iterator(); it.hasNext(); ) {
    //#JPAWeblogManagerImpl.java:380: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes()
                WeblogEntryAttribute att = (WeblogEntryAttribute) it.next();
                it.remove();
                this.strategy.remove(att);
            }
        }
        // TODO: can we eliminate this unnecessary flush with OpenJPA 1.0
        this.strategy.flush(); 
        
        // remove entry
        this.strategy.remove(entry);
        
        // update weblog last modified date. date updated by saveWebsite()
        roller.getUserManager().saveWebsite(website);
        
        // remove entry from cache mapping
        this.entryAnchorToIdMap.remove(website.getHandle() + ":" + entryAnchor);
    //#JPAWeblogManagerImpl.java:396: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    }
    //#JPAWeblogManagerImpl.java:397: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeWeblogEntry(WeblogEntry)
    
    public List getNextPrevEntries(WeblogEntry current, String catName,
            String locale, int maxEntries, boolean next)
            throws WebloggerException {
        Query query = null;
    //#JPAWeblogManagerImpl.java:402: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#JPAWeblogManagerImpl.java:402: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#    Attribs:  Uncertain
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): " AND e.category = ?"._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): " AND e.locale like ?"._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): " AND e.pubTime < ?"._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): " AND e.pubTime > ?"._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): " AND e.status = ?"._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): " ORDER BY e.pubTime ASC"._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): " ORDER BY e.pubTime DESC"._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): "."._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): "Cannot find category: "._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): "SELECT e FROM WeblogEntry e WHERE "._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): "e.website = ?"._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): __Descendant_Table[others]
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): catName
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): catName._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): current
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): locale
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): locale._tainted
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): maxEntries
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): next
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): this
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): this.__Tag
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): this.strategy
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): this.strategy.__Tag
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): this.strategy.emf
    //#input(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): this.strategy.threadLocalEntityManager
    //#output(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): return_value
    //#pre[3] (List getNextPrevEntries(WeblogEntry, String, String, int, bool)): current != null
    //#pre[10] (List getNextPrevEntries(WeblogEntry, String, String, int, bool)): this.strategy != null
    //#pre[11] (List getNextPrevEntries(WeblogEntry, String, String, int, bool)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (List getNextPrevEntries(WeblogEntry, String, String, int, bool)): this.strategy.threadLocalEntityManager != null
    //#pre[9] (List getNextPrevEntries(WeblogEntry, String, String, int, bool)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[12] (List getNextPrevEntries(WeblogEntry, String, String, int, bool)): (soft) this.strategy.emf != null
    //#presumption(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@407 != null
    //#presumption(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@432 != null
    //#post(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): init'ed(return_value)
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): Effects-of-calling:org.apache.roller.RollerException
    //#test_vector(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): catName: Addr_Set{null}, Inverse{null}
    //#test_vector(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): locale: Addr_Set{null}, Inverse{null}
    //#test_vector(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): next: {0}, {1}
    //#test_vector(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): java.lang.String:equals(...)@406: {1}, {0}
    //#test_vector(List getNextPrevEntries(WeblogEntry, String, String, int, bool)): java.lang.String:equals(...)@431: {1}, {0}
        List results = null;
    //#JPAWeblogManagerImpl.java:403: Warning: unused assignment
    //#    unused assignment into results
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#    Attribs:  Uncertain
        WeblogCategory category = null;
    //#JPAWeblogManagerImpl.java:404: Warning: unused assignment
    //#    unused assignment into category
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#    Attribs:  Uncertain
        
        if (catName != null && !catName.trim().equals("/")) {
            category = getWeblogCategoryByPath(current.getWebsite(), null,
    //#JPAWeblogManagerImpl.java:407: Warning: unused assignment
    //#    unused assignment into category
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#JPAWeblogManagerImpl.java:407: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
                    catName);
        }
                
        List params = new ArrayList();
        int size = 0;
        StringBuffer queryString = new StringBuffer();
        StringBuffer whereClause = new StringBuffer();
        queryString.append("SELECT e FROM WeblogEntry e WHERE ");
                     
        params.add(size++, current.getWebsite());
    //#JPAWeblogManagerImpl.java:417: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
        whereClause.append("e.website = ?" + size); 
        
        params.add(size++, WeblogEntry.PUBLISHED);
        whereClause.append(" AND e.status = ?" + size);
                
        if (next) {
            params.add(size++, current.getPubTime());
    //#JPAWeblogManagerImpl.java:424: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
            whereClause.append(" AND e.pubTime > ?" + size);
        } else {
            params.add(size++, current.getPubTime());
    //#JPAWeblogManagerImpl.java:427: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
            whereClause.append(" AND e.pubTime < ?" + size);
        }
        
        if (catName != null && !catName.trim().equals("/")) {
            category = getWeblogCategoryByPath(current.getWebsite(), catName);
    //#JPAWeblogManagerImpl.java:432: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
            if (category != null) {
                params.add(size++, category);
                whereClause.append(" AND e.category = ?" + size);
            } else {
                throw new WebloggerException("Cannot find category: " + catName);
    //#JPAWeblogManagerImpl.java:437: ?conditional throw
    //#    category != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getNextPrevEntries(WeblogEntry, String, String, int, bool)
    //#    basic block: bb_9
    //#    assertion: category != null
    //#    VN: getWeblogCategoryByPath(...) == null
    //#    Expected: {-Inf..0, 2..+Inf}
    //#    Bad: {1}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
            } 
        }
        
        if(locale != null) {
            params.add(size++, locale + '%');
            whereClause.append(" AND e.locale like ?" + size);
        }
        
        if (next) {
            whereClause.append(" ORDER BY e.pubTime ASC");
        } else {
            whereClause.append(" ORDER BY e.pubTime DESC");
        }
        query = strategy.getDynamicQuery(queryString.toString() + whereClause.toString());
        for (int i=0; i<params.size(); i++) {
            query.setParameter(i+1, params.get(i));
        }
        query.setMaxResults(maxEntries);
        
        return query.getResultList();
    //#JPAWeblogManagerImpl.java:457: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getNextPrevEntries(WeblogEntry, String, String, int, bool)
    }
    
    /**
     * @inheritDoc
     */
    public WeblogCategory getRootWeblogCategory(Weblog website)
    throws WebloggerException {
        if (website == null)
    //#JPAWeblogManagerImpl.java:465: method: WeblogCategory org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getRootWeblogCategory(Weblog)
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): this
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): this.strategy
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): this.strategy.__Tag
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): this.strategy.emf
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): this.strategy.threadLocalEntityManager
    //#input(WeblogCategory getRootWeblogCategory(Weblog)): website
    //#output(WeblogCategory getRootWeblogCategory(Weblog)): return_value
    //#pre[2] (WeblogCategory getRootWeblogCategory(Weblog)): this.strategy != null
    //#pre[3] (WeblogCategory getRootWeblogCategory(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (WeblogCategory getRootWeblogCategory(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (WeblogCategory getRootWeblogCategory(Weblog)): website != null
    //#pre[4] (WeblogCategory getRootWeblogCategory(Weblog)): (soft) this.strategy.emf != null
    //#post(WeblogCategory getRootWeblogCategory(Weblog)): init'ed(return_value)
    //#unanalyzed(WeblogCategory getRootWeblogCategory(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogCategory getRootWeblogCategory(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogCategory getRootWeblogCategory(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogCategory getRootWeblogCategory(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogCategory getRootWeblogCategory(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogCategory getRootWeblogCategory(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogCategory getRootWeblogCategory(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(WeblogCategory getRootWeblogCategory(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
            throw new WebloggerException("website is null");
        
        Query q = strategy.getNamedQuery(
                "WeblogCategory.getByWebsite&ParentNull");
        q.setParameter(1, website);
        try {
            return (WeblogCategory)q.getSingleResult();
        } catch (NoResultException e) {
            return null;
    //#JPAWeblogManagerImpl.java:474: end of method: WeblogCategory org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getRootWeblogCategory(Weblog)
        }
    }
    
    /**
     * @inheritDoc
     */
    public List getWeblogCategories(Weblog website, boolean includeRoot)
    throws WebloggerException {
        if (website == null)
    //#JPAWeblogManagerImpl.java:483: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategories(Weblog, bool)
    //#input(List getWeblogCategories(Weblog, bool)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(List getWeblogCategories(Weblog, bool)): __Descendant_Table[others]
    //#input(List getWeblogCategories(Weblog, bool)): __Dispatch_Table.getWeblogCategories(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#input(List getWeblogCategories(Weblog, bool)): includeRoot
    //#input(List getWeblogCategories(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getWeblogCategories(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getWeblogCategories(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getWeblogCategories(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getWeblogCategories(Weblog, bool)): this
    //#input(List getWeblogCategories(Weblog, bool)): this.__Tag
    //#input(List getWeblogCategories(Weblog, bool)): this.strategy
    //#input(List getWeblogCategories(Weblog, bool)): this.strategy.__Tag
    //#input(List getWeblogCategories(Weblog, bool)): this.strategy.emf
    //#input(List getWeblogCategories(Weblog, bool)): this.strategy.threadLocalEntityManager
    //#input(List getWeblogCategories(Weblog, bool)): website
    //#output(List getWeblogCategories(Weblog, bool)): return_value
    //#pre[4] (List getWeblogCategories(Weblog, bool)): this.strategy != null
    //#pre[5] (List getWeblogCategories(Weblog, bool)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (List getWeblogCategories(Weblog, bool)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (List getWeblogCategories(Weblog, bool)): website != null
    //#pre[3] (List getWeblogCategories(Weblog, bool)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[6] (List getWeblogCategories(Weblog, bool)): (soft) this.strategy.emf != null
    //#post(List getWeblogCategories(Weblog, bool)): init'ed(return_value)
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(List getWeblogCategories(Weblog, bool)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(List getWeblogCategories(Weblog, bool)): includeRoot: {0}, {1}
            throw new WebloggerException("website is null");
        
        if (includeRoot) return getWeblogCategories(website);
        
        Query q = strategy.getNamedQuery(
                "WeblogCategory.getByWebsite&ParentNotNull");
        q.setParameter(1, website);
        return q.getResultList();
    //#JPAWeblogManagerImpl.java:491: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategories(Weblog, bool)
    }
    
    /**
     * @inheritDoc
     */
    public List getWeblogCategories(Weblog website)
    throws WebloggerException {
        if (website == null)
    //#JPAWeblogManagerImpl.java:499: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategories(Weblog)
    //#input(List getWeblogCategories(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getWeblogCategories(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getWeblogCategories(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getWeblogCategories(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getWeblogCategories(Weblog)): this
    //#input(List getWeblogCategories(Weblog)): this.strategy
    //#input(List getWeblogCategories(Weblog)): this.strategy.__Tag
    //#input(List getWeblogCategories(Weblog)): this.strategy.emf
    //#input(List getWeblogCategories(Weblog)): this.strategy.threadLocalEntityManager
    //#input(List getWeblogCategories(Weblog)): website
    //#output(List getWeblogCategories(Weblog)): return_value
    //#pre[2] (List getWeblogCategories(Weblog)): this.strategy != null
    //#pre[3] (List getWeblogCategories(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getWeblogCategories(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (List getWeblogCategories(Weblog)): website != null
    //#pre[4] (List getWeblogCategories(Weblog)): (soft) this.strategy.emf != null
    //#post(List getWeblogCategories(Weblog)): init'ed(return_value)
    //#unanalyzed(List getWeblogCategories(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getWeblogCategories(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getWeblogCategories(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getWeblogCategories(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getWeblogCategories(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getWeblogCategories(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getWeblogCategories(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getWeblogCategories(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
            throw new WebloggerException("website is null");
        
        Query q = strategy.getNamedQuery(
                "WeblogCategory.getByWebsite");
        q.setParameter(1, website);
        return q.getResultList();
    //#JPAWeblogManagerImpl.java:505: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategories(Weblog)
    }
    
    /**
     * @inheritDoc
     */
    public List getWeblogEntries(
            Weblog website,
            User    user,
            Date        startDate,
            Date        endDate,
            String      catName,
            List        tags,
            String      status,
            String      text,
            String      sortby,
            String      sortOrder,
            String      locale,
            int         offset,
            int         length) throws WebloggerException {
        
        WeblogCategory cat = null;
    //#JPAWeblogManagerImpl.java:526: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "    OR e.summary LIKE ? "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "    OR e.title LIKE ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " AND ( e.text LIKE ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " AND e.category.id = ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " AND e.creator.id = ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " AND e.locale like ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " AND e.pubTime <= ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " AND e.pubTime >= ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " AND e.status = ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " OR "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " ORDER BY e.pubTime "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " ORDER BY e.updateTime "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): " t.name = ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "("._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): ") "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): ") AND "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "."._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "ASC "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "DESC "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "SELECT e FROM WeblogEntry e JOIN e.tags t WHERE "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "SELECT e FROM WeblogEntry e WHERE "._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "e.website.enabled = ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): "e.website.id = ?"._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): __Descendant_Table[others]
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): catName
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): catName._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): endDate
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): java.lang.Boolean.TRUE
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): length
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): locale
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): locale._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): offset
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): sortOrder
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): sortby
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): startDate
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): status
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): tags
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): text
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): text._tainted
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): this
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): this.__Tag
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): this.strategy
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): this.strategy.__Tag
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): this.strategy.emf
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): this.strategy.threadLocalEntityManager
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): user
    //#input(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): website
    //#output(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): return_value
    //#pre[17] (List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): this.strategy != null
    //#pre[18] (List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[20] (List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[16] (List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[19] (List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): (soft) this.strategy.emf != null
    //#presumption(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): init'ed(java.lang.Boolean.TRUE)
    //#post(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): init'ed(return_value)
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): endDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): locale: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): sortOrder: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): sortby: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): startDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): status: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): tags: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): text: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): user: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): website: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): java.lang.String:equals(...)@531: {0}, {1}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): java.lang.String:equals(...)@620: {0}, {1}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): java.lang.String:equals(...)@626: {0}, {1}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): java.util.List:size(...)@540: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)): org.apache.commons.lang.StringUtils:isNotEmpty(...)@527: {0}, {1}
        if (StringUtils.isNotEmpty(catName) && website != null) {
    //#JPAWeblogManagerImpl.java:527: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isNotEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isNotEmpty(String)
            cat = getWeblogCategoryByPath(website, catName);
            if (cat == null) catName = null;
        }
        if (catName != null && catName.trim().equals("/")) {
            catName = null;
    //#JPAWeblogManagerImpl.java:532: Warning: unused assignment
    //#    unused assignment into catName
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    Attribs:  Uncertain
        }
        
        List params = new ArrayList();
        int size = 0;
        StringBuffer queryString = new StringBuffer();
        
        //queryString.append("SELECT e FROM WeblogEntry e WHERE ");
        if (tags == null || tags.size()==0) {
            queryString.append("SELECT e FROM WeblogEntry e WHERE ");
        } else {
            queryString.append("SELECT e FROM WeblogEntry e JOIN e.tags t WHERE ");
            queryString.append("(");
            for(int i = 0; i < tags.size(); i++) {
                if (i != 0) queryString.append(" OR ");
                params.add(size++, tags.get(i));
                queryString.append(" t.name = ?").append(size);                
            }
            queryString.append(") AND ");
        }
        
        if (website != null) {
            params.add(size++, website.getId());
    //#JPAWeblogManagerImpl.java:554: ?overflow
    //#    size in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    basic block: bb_18
    //#    assertion: size in -2_147_483_649..4_294_967_294
    //#    VN: size + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
    //#JPAWeblogManagerImpl.java:554: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getId()
            queryString.append("e.website.id = ?").append(size);
        } else {
            params.add(size++, Boolean.TRUE);
    //#JPAWeblogManagerImpl.java:557: ?overflow
    //#    size in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    basic block: bb_19
    //#    assertion: size in -2_147_483_649..4_294_967_294
    //#    VN: size + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
            queryString.append("e.website.enabled = ?").append(size);
        }
        
        /*if (tags != null && tags.size() > 0) {
            // A JOIN with WeblogEntryTag in parent quert will cause a DISTINCT in SELECT clause
            // WeblogEntry has a clob field and many databases do not link DISTINCT for CLOB fields
            // Hence as a workaround using corelated EXISTS query.
            queryString.append(" AND EXISTS (SELECT t FROM WeblogEntryTag t WHERE "
                    + " t.weblogEntry = e AND t.name IN (");
            final String PARAM_SEPERATOR = ", ";
            for(int i = 0; i < tags.size(); i++) {
                params.add(size++, tags.get(i));
                queryString.append("?").append(size).append(PARAM_SEPERATOR);
            }
            // Remove the trailing PARAM_SEPERATOR
            queryString.delete(queryString.length() - PARAM_SEPERATOR.length(),
                    queryString.length());

            // Close the brace FOR IN clause and EXIST clause
            queryString.append(" ) )");
        }*/

        if (user != null) {
            params.add(size++, user.getId());
    //#JPAWeblogManagerImpl.java:581: ?overflow
    //#    size in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    basic block: bb_21
    //#    assertion: size in -2_147_483_649..4_294_967_294
    //#    VN: size + 2
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
    //#JPAWeblogManagerImpl.java:581: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getId()
            queryString.append(" AND e.creator.id = ?").append(size);
        }
        
        if (startDate != null) {
            Timestamp start = new Timestamp(startDate.getTime());
            params.add(size++, start);
    //#JPAWeblogManagerImpl.java:587: ?overflow
    //#    size in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    basic block: bb_23
    //#    assertion: size in -2_147_483_649..4_294_967_294
    //#    VN: size + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
            queryString.append(" AND e.pubTime >= ?").append(size);
        }
        
        if (endDate != null) {
            Timestamp end = new Timestamp(endDate.getTime());
            params.add(size++, end);
    //#JPAWeblogManagerImpl.java:593: ?overflow
    //#    size in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    basic block: bb_25
    //#    assertion: size in -2_147_483_649..4_294_967_294
    //#    VN: size + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
            queryString.append(" AND e.pubTime <= ?").append(size);
        }
        
        if (cat != null && website != null) {
    //#JPAWeblogManagerImpl.java:597: Warning: test always goes same way
    //#    test predetermined because website != null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    from bb: bb_27
    //#    live edge: bb_27-->bb_28
    //#    tested vn: website == null
    //#    tested vn values: {0}
            params.add(size++, cat.getId());
    //#JPAWeblogManagerImpl.java:598: ?overflow
    //#    size in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    basic block: bb_28
    //#    assertion: size in -2_147_483_649..4_294_967_294
    //#    VN: size + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
    //#JPAWeblogManagerImpl.java:598: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getId()
            queryString.append(" AND e.category.id = ?").append(size);
        }
                
        if (status != null) {
            params.add(size++, status);
    //#JPAWeblogManagerImpl.java:603: ?overflow
    //#    size in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    basic block: bb_30
    //#    assertion: size in -2_147_483_649..4_294_967_294
    //#    VN: size + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
            queryString.append(" AND e.status = ?").append(size);
        }
        
        if (locale != null) {
            params.add(size++, locale + '%');
    //#JPAWeblogManagerImpl.java:608: ?overflow
    //#    size in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    basic block: bb_32
    //#    assertion: size in -2_147_483_649..4_294_967_294
    //#    VN: size + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
            queryString.append(" AND e.locale like ?").append(size);
        }
        
        if (text != null) {
            params.add(size++, '%' + text + '%');
    //#JPAWeblogManagerImpl.java:613: ?overflow
    //#    size in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    basic block: bb_34
    //#    assertion: size in -2_147_483_649..4_294_967_294
    //#    VN: size + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
            queryString.append(" AND ( e.text LIKE ?").append(size);
            queryString.append("    OR e.summary LIKE ? ").append(size);
            queryString.append("    OR e.title LIKE ?").append(size);
            queryString.append(") ");
        }
        
        if (sortby != null && sortby.equals("updateTime")) {
            queryString.append(" ORDER BY e.updateTime ");
        } else {
            queryString.append(" ORDER BY e.pubTime ");
        }
        
        if (sortOrder != null && sortOrder.equals(ASCENDING)) {
            queryString.append("ASC ");
        } else {
            queryString.append("DESC ");
        }
        
        
        Query query = strategy.getDynamicQuery(queryString.toString());
        for (int i=0; i<params.size(); i++) {
            query.setParameter(i+1, params.get(i));
        }
        
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }
        
        return query.getResultList();
    //#JPAWeblogManagerImpl.java:645: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    }
    
    /**
     * @inheritDoc
     */
    public List getWeblogEntriesPinnedToMain(Integer max)
    throws WebloggerException {
        Query query = strategy.getNamedQuery(
    //#JPAWeblogManagerImpl.java:653: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntriesPinnedToMain(Integer)
    //#input(List getWeblogEntriesPinnedToMain(Integer)): java.lang.Boolean.TRUE
    //#input(List getWeblogEntriesPinnedToMain(Integer)): max
    //#input(List getWeblogEntriesPinnedToMain(Integer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getWeblogEntriesPinnedToMain(Integer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getWeblogEntriesPinnedToMain(Integer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getWeblogEntriesPinnedToMain(Integer)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getWeblogEntriesPinnedToMain(Integer)): this
    //#input(List getWeblogEntriesPinnedToMain(Integer)): this.strategy
    //#input(List getWeblogEntriesPinnedToMain(Integer)): this.strategy.__Tag
    //#input(List getWeblogEntriesPinnedToMain(Integer)): this.strategy.emf
    //#input(List getWeblogEntriesPinnedToMain(Integer)): this.strategy.threadLocalEntityManager
    //#output(List getWeblogEntriesPinnedToMain(Integer)): return_value
    //#pre[3] (List getWeblogEntriesPinnedToMain(Integer)): this.strategy != null
    //#pre[4] (List getWeblogEntriesPinnedToMain(Integer)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (List getWeblogEntriesPinnedToMain(Integer)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (List getWeblogEntriesPinnedToMain(Integer)): (soft) this.strategy.emf != null
    //#presumption(List getWeblogEntriesPinnedToMain(Integer)): init'ed(java.lang.Boolean.TRUE)
    //#post(List getWeblogEntriesPinnedToMain(Integer)): init'ed(return_value)
    //#unanalyzed(List getWeblogEntriesPinnedToMain(Integer)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getWeblogEntriesPinnedToMain(Integer)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getWeblogEntriesPinnedToMain(Integer)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getWeblogEntriesPinnedToMain(Integer)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getWeblogEntriesPinnedToMain(Integer)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getWeblogEntriesPinnedToMain(Integer)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getWeblogEntriesPinnedToMain(Integer)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getWeblogEntriesPinnedToMain(Integer)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(List getWeblogEntriesPinnedToMain(Integer)): max: Addr_Set{null}, Inverse{null}
                "WeblogEntry.getByPinnedToMain&statusOrderByPubTimeDesc");
        query.setParameter(1, Boolean.TRUE);
        query.setParameter(2, WeblogEntry.PUBLISHED);
        if (max != null) {
            query.setMaxResults(max.intValue());
        }
        return query.getResultList();
    //#JPAWeblogManagerImpl.java:660: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntriesPinnedToMain(Integer)
    }
    
    public void removeWeblogEntryAttribute(String name, WeblogEntry entry)
    throws WebloggerException {
        for (Iterator it = entry.getEntryAttributes().iterator(); it.hasNext();) {
    //#JPAWeblogManagerImpl.java:665: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeWeblogEntryAttribute(String, WeblogEntry)
    //#JPAWeblogManagerImpl.java:665: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntryAttribute(String, WeblogEntry)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes()
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): entry
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): name
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): this
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): this.strategy
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): this.strategy.__Tag
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): this.strategy.emf
    //#input(void removeWeblogEntryAttribute(String, WeblogEntry)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removeWeblogEntryAttribute(String, WeblogEntry)): entry != null
    //#pre[4] (void removeWeblogEntryAttribute(String, WeblogEntry)): (soft) this.strategy != null
    //#pre[5] (void removeWeblogEntryAttribute(String, WeblogEntry)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void removeWeblogEntryAttribute(String, WeblogEntry)): (soft) this.strategy.emf != null
    //#pre[7] (void removeWeblogEntryAttribute(String, WeblogEntry)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void removeWeblogEntryAttribute(String, WeblogEntry)): java.util.Iterator:next(...)@666 != null
    //#presumption(void removeWeblogEntryAttribute(String, WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes(...)@665 != null
    //#presumption(void removeWeblogEntryAttribute(String, WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntryAttribute:getName(...)@667 != null
    //#unanalyzed(void removeWeblogEntryAttribute(String, WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeWeblogEntryAttribute(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeWeblogEntryAttribute(String, WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeWeblogEntryAttribute(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeWeblogEntryAttribute(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeWeblogEntryAttribute(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeWeblogEntryAttribute(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#test_vector(void removeWeblogEntryAttribute(String, WeblogEntry)): java.lang.String:equals(...)@667: {0}, {1}
    //#test_vector(void removeWeblogEntryAttribute(String, WeblogEntry)): java.util.Iterator:hasNext(...)@665: {0}, {1}
            WeblogEntryAttribute entryAttribute = (WeblogEntryAttribute) it.next();
            if (entryAttribute.getName().equals(name)) {
    //#JPAWeblogManagerImpl.java:667: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryAttribute:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntryAttribute(String, WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryAttribute:getName()
                //Remove it from database
                this.strategy.remove(entryAttribute);
                //Remove it from the collection
                it.remove();
            }
        }
    }
    //#JPAWeblogManagerImpl.java:674: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeWeblogEntryAttribute(String, WeblogEntry)
    
    public void removeWeblogEntryTag(String name, WeblogEntry entry)
    throws WebloggerException {
        for (Iterator it = entry.getTags().iterator(); it.hasNext();) {
    //#JPAWeblogManagerImpl.java:678: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeWeblogEntryTag(String, WeblogEntry)
    //#JPAWeblogManagerImpl.java:678: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogEntry:getTags()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntryTag(String, WeblogEntry)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogEntry:getTags()
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): entry
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): name
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): this
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): this.strategy
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): this.strategy.__Tag
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): this.strategy.emf
    //#input(void removeWeblogEntryTag(String, WeblogEntry)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removeWeblogEntryTag(String, WeblogEntry)): entry != null
    //#pre[4] (void removeWeblogEntryTag(String, WeblogEntry)): (soft) this.strategy != null
    //#pre[5] (void removeWeblogEntryTag(String, WeblogEntry)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void removeWeblogEntryTag(String, WeblogEntry)): (soft) this.strategy.emf != null
    //#pre[7] (void removeWeblogEntryTag(String, WeblogEntry)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void removeWeblogEntryTag(String, WeblogEntry)): java.util.Iterator:next(...)@679 != null
    //#presumption(void removeWeblogEntryTag(String, WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getTags(...)@678 != null
    //#presumption(void removeWeblogEntryTag(String, WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntryTag:getName(...)@680 != null
    //#unanalyzed(void removeWeblogEntryTag(String, WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeWeblogEntryTag(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeWeblogEntryTag(String, WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeWeblogEntryTag(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeWeblogEntryTag(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeWeblogEntryTag(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeWeblogEntryTag(String, WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#test_vector(void removeWeblogEntryTag(String, WeblogEntry)): java.lang.String:equals(...)@680: {0}, {1}
    //#test_vector(void removeWeblogEntryTag(String, WeblogEntry)): java.util.Iterator:hasNext(...)@678: {0}, {1}
            WeblogEntryTag tag = (WeblogEntryTag) it.next();
            if (tag.getName().equals(name)) {
    //#JPAWeblogManagerImpl.java:680: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryTag:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntryTag(String, WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryTag:getName()
                //Call back the entity to adjust its internal state
                entry.onRemoveTag(name);
    //#JPAWeblogManagerImpl.java:682: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:onRemoveTag(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void removeWeblogEntryTag(String, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:onRemoveTag(String)
                //Remove it from database
                this.strategy.remove(tag);
                //Remove it from the collection
                it.remove();
            }
        }
    }
    //#JPAWeblogManagerImpl.java:689: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeWeblogEntryTag(String, WeblogEntry)
    
    /**
     * @inheritDoc
     */
    public WeblogEntry getWeblogEntryByAnchor(Weblog website,
            String anchor) throws WebloggerException {
        
        if (website == null)
    //#JPAWeblogManagerImpl.java:697: method: WeblogEntry org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntryByAnchor(Weblog, String)
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): ":"._tainted
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): "entryAnchorToIdMap CACHE HIT - "._tainted
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): "entryAnchorToIdMap CACHE MISS - "._tainted
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): __Descendant_Table[others]
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): __Dispatch_Table.getWeblogEntry(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogEntry;
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): anchor
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): anchor._tainted
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): log
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.__Tag
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.entryAnchorToIdMap
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.strategy
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.strategy.__Tag
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.strategy.emf
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.strategy.threadLocalEntityManager
    //#input(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): website
    //#output(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): return_value
    //#pre[1] (WeblogEntry getWeblogEntryByAnchor(Weblog, String)): anchor != null
    //#pre[6] (WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.entryAnchorToIdMap != null
    //#pre[7] (WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.strategy != null
    //#pre[8] (WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[10] (WeblogEntry getWeblogEntryByAnchor(Weblog, String)): this.strategy.threadLocalEntityManager != null
    //#pre[11] (WeblogEntry getWeblogEntryByAnchor(Weblog, String)): website != null
    //#pre[3] (WeblogEntry getWeblogEntryByAnchor(Weblog, String)): (soft) log != null
    //#pre[5] (WeblogEntry getWeblogEntryByAnchor(Weblog, String)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[9] (WeblogEntry getWeblogEntryByAnchor(Weblog, String)): (soft) this.strategy.emf != null
    //#post(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): init'ed(return_value)
    //#unanalyzed(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#test_vector(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): java.util.Hashtable:containsKey(...)@708: {0}, {1}
    //#test_vector(WeblogEntry getWeblogEntryByAnchor(Weblog, String)): javax.persistence.EntityManager:find(...)@216: Addr_Set{null}, Inverse{null}
            throw new WebloggerException("Website is null");
        
        if (anchor == null)
            throw new WebloggerException("Anchor is null");
        
        // mapping key is combo of weblog + anchor
        String mappingKey = website.getHandle()+":"+anchor;
    //#JPAWeblogManagerImpl.java:704: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: WeblogEntry getWeblogEntryByAnchor(Weblog, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        
        // check cache first
        // NOTE: if we ever allow changing anchors then this needs updating
        if(this.entryAnchorToIdMap.containsKey(mappingKey)) {
            
            WeblogEntry entry = this.getWeblogEntry((String) this.entryAnchorToIdMap.get(mappingKey));
            if(entry != null) {
                log.debug("entryAnchorToIdMap CACHE HIT - "+mappingKey);
    //#JPAWeblogManagerImpl.java:712: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: WeblogEntry getWeblogEntryByAnchor(Weblog, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                return entry;
            } else {
                // mapping hit with lookup miss?  mapping must be old, remove it
                this.entryAnchorToIdMap.remove(mappingKey);
            }
        }
        
        // cache failed, do lookup
        Query q = strategy.getNamedQuery(
                "WeblogEntry.getByWebsite&AnchorOrderByPubTimeDesc");
        q.setParameter(1, website);
        q.setParameter(2, anchor);
        WeblogEntry entry = null;
    //#JPAWeblogManagerImpl.java:725: Warning: unused assignment
    //#    unused assignment into entry
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: WeblogEntry getWeblogEntryByAnchor(Weblog, String)
    //#    Attribs:  Uncertain
        try {
            entry = (WeblogEntry)q.getSingleResult();
        } catch (NoResultException e) {
            entry = null;
        }
        
        // add mapping to cache
        if(entry != null) {
            log.debug("entryAnchorToIdMap CACHE MISS - "+mappingKey);
    //#JPAWeblogManagerImpl.java:734: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: WeblogEntry getWeblogEntryByAnchor(Weblog, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            this.entryAnchorToIdMap.put(mappingKey, entry.getId());
    //#JPAWeblogManagerImpl.java:735: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: WeblogEntry getWeblogEntryByAnchor(Weblog, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
        }
        return entry;
    //#JPAWeblogManagerImpl.java:737: end of method: WeblogEntry org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntryByAnchor(Weblog, String)
    }
    
    /**
     * @inheritDoc
     */
    // TODO: this method should be removed and it's functionality moved to getWeblogEntries()
    public List getWeblogEntries(WeblogCategory cat, boolean subcats)
    throws WebloggerException {
        List results = null;
    //#JPAWeblogManagerImpl.java:746: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntries(WeblogCategory, bool)
    //#JPAWeblogManagerImpl.java:746: Warning: unused assignment
    //#    unused assignment into results
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(WeblogCategory, bool)
    //#    Attribs:  Uncertain
    //#input(List getWeblogEntries(WeblogCategory, bool)): cat
    //#input(List getWeblogEntries(WeblogCategory, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getWeblogEntries(WeblogCategory, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getWeblogEntries(WeblogCategory, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getWeblogEntries(WeblogCategory, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getWeblogEntries(WeblogCategory, bool)): subcats
    //#input(List getWeblogEntries(WeblogCategory, bool)): this
    //#input(List getWeblogEntries(WeblogCategory, bool)): this.strategy
    //#input(List getWeblogEntries(WeblogCategory, bool)): this.strategy.__Tag
    //#input(List getWeblogEntries(WeblogCategory, bool)): this.strategy.emf
    //#input(List getWeblogEntries(WeblogCategory, bool)): this.strategy.threadLocalEntityManager
    //#output(List getWeblogEntries(WeblogCategory, bool)): return_value
    //#pre[4] (List getWeblogEntries(WeblogCategory, bool)): this.strategy != null
    //#pre[5] (List getWeblogEntries(WeblogCategory, bool)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (List getWeblogEntries(WeblogCategory, bool)): this.strategy.threadLocalEntityManager != null
    //#pre[1] (List getWeblogEntries(WeblogCategory, bool)): (soft) cat != null
    //#pre[6] (List getWeblogEntries(WeblogCategory, bool)): (soft) this.strategy.emf != null
    //#post(List getWeblogEntries(WeblogCategory, bool)): init'ed(return_value)
    //#unanalyzed(List getWeblogEntries(WeblogCategory, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getWeblogEntries(WeblogCategory, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getWeblogEntries(WeblogCategory, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getWeblogEntries(WeblogCategory, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getWeblogEntries(WeblogCategory, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getWeblogEntries(WeblogCategory, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getWeblogEntries(WeblogCategory, bool)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getWeblogEntries(WeblogCategory, bool)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(List getWeblogEntries(WeblogCategory, bool)): subcats: {1}, {0}
        
        if (!subcats) {
            Query q = strategy.getNamedQuery(
                    "WeblogEntry.getByStatus&Category");
            q.setParameter(1, WeblogEntry.PUBLISHED);
            q.setParameter(2, cat);
            results = q.getResultList();
        } else {
            Query q = strategy.getNamedQuery(
                    "WeblogEntry.getByStatus&Category.pathLike&Website");
            q.setParameter(1, WeblogEntry.PUBLISHED);
            q.setParameter(2, cat.getPath() + '%');
    //#JPAWeblogManagerImpl.java:758: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(WeblogCategory, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
            q.setParameter(3, cat.getWebsite());
    //#JPAWeblogManagerImpl.java:759: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getWeblogEntries(WeblogCategory, bool)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
            results = q.getResultList();
        }
        
        return results;
    //#JPAWeblogManagerImpl.java:763: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntries(WeblogCategory, bool)
    }
    
    /**
     * @inheritDoc
     */
    public String createAnchor(WeblogEntry entry) throws WebloggerException {
        // Check for uniqueness of anchor
        String base = entry.createAnchorBase();
    //#JPAWeblogManagerImpl.java:771: method: String org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.createAnchor(WeblogEntry)
    //#JPAWeblogManagerImpl.java:771: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:createAnchorBase()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: String createAnchor(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:createAnchorBase()
    //#input(String createAnchor(WeblogEntry)): entry
    //#input(String createAnchor(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String createAnchor(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String createAnchor(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(String createAnchor(WeblogEntry)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(String createAnchor(WeblogEntry)): this
    //#input(String createAnchor(WeblogEntry)): this.strategy
    //#input(String createAnchor(WeblogEntry)): this.strategy.__Tag
    //#input(String createAnchor(WeblogEntry)): this.strategy.emf
    //#input(String createAnchor(WeblogEntry)): this.strategy.threadLocalEntityManager
    //#output(String createAnchor(WeblogEntry)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String createAnchor(WeblogEntry)): return_value
    //#new obj(String createAnchor(WeblogEntry)): java.lang.StringBuilder:toString(...)
    //#pre[1] (String createAnchor(WeblogEntry)): entry != null
    //#pre[3] (String createAnchor(WeblogEntry)): this.strategy != null
    //#pre[4] (String createAnchor(WeblogEntry)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (String createAnchor(WeblogEntry)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (String createAnchor(WeblogEntry)): (soft) this.strategy.emf != null
    //#presumption(String createAnchor(WeblogEntry)): javax.persistence.Query:getResultList(...)@784 != null
    //#post(String createAnchor(WeblogEntry)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(String createAnchor(WeblogEntry)): init'ed(return_value)
    //#unanalyzed(String createAnchor(WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String createAnchor(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String createAnchor(WeblogEntry)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String createAnchor(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String createAnchor(WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String createAnchor(WeblogEntry)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String createAnchor(WeblogEntry)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(String createAnchor(WeblogEntry)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(String createAnchor(WeblogEntry)): java.util.List:size(...)@786: {1..4_294_967_295}, {-2_147_483_648..0}
        String name = base;
        int count = 0;
        
        while (true) {
            if (count > 0) {
                name = base + count;
            }
            
            Query q = strategy.getNamedQuery(
                    "WeblogEntry.getByWebsite&Anchor");
            q.setParameter(1, entry.getWebsite());
    //#JPAWeblogManagerImpl.java:782: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: String createAnchor(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
            q.setParameter(2, name);
            List results = q.getResultList();
            
            if (results.size() < 1) {
                break;
            } else {
                count++;
    //#JPAWeblogManagerImpl.java:789: ?overflow
    //#    count in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: String createAnchor(WeblogEntry)
    //#    basic block: bb_6
    //#    assertion: count in -2_147_483_649..4_294_967_294
    //#    VN: count + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
            }
        }
        return name;
    //#JPAWeblogManagerImpl.java:792: end of method: String org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.createAnchor(WeblogEntry)
    }
    
    /**
     * @inheritDoc
     */
    public boolean isDuplicateWeblogCategoryName(WeblogCategory cat)
    throws WebloggerException {
        
        // ensure that no sibling categories share the same name
        WeblogCategory parent = cat.getParent();
    //#JPAWeblogManagerImpl.java:802: method: bool org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.isDuplicateWeblogCategoryName(WeblogCategory)
    //#JPAWeblogManagerImpl.java:802: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.WeblogCategory:getParent()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isDuplicateWeblogCategoryName(WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.WeblogCategory:getParent()
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): "."._tainted
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): __Descendant_Table[others]
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): cat
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): this
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): this.__Tag
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): this.strategy
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): this.strategy.__Tag
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): this.strategy.emf
    //#input(bool isDuplicateWeblogCategoryName(WeblogCategory)): this.strategy.threadLocalEntityManager
    //#output(bool isDuplicateWeblogCategoryName(WeblogCategory)): return_value
    //#pre[1] (bool isDuplicateWeblogCategoryName(WeblogCategory)): cat != null
    //#pre[3] (bool isDuplicateWeblogCategoryName(WeblogCategory)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[4] (bool isDuplicateWeblogCategoryName(WeblogCategory)): (soft) this.strategy != null
    //#pre[5] (bool isDuplicateWeblogCategoryName(WeblogCategory)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (bool isDuplicateWeblogCategoryName(WeblogCategory)): (soft) this.strategy.emf != null
    //#pre[7] (bool isDuplicateWeblogCategoryName(WeblogCategory)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(bool isDuplicateWeblogCategoryName(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@804 != null
    //#post(bool isDuplicateWeblogCategoryName(WeblogCategory)): init'ed(return_value)
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(bool isDuplicateWeblogCategoryName(WeblogCategory)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(bool isDuplicateWeblogCategoryName(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getParent(...)@802: Addr_Set{null}, Inverse{null}
        if (null != parent) {
            return (getWeblogCategoryByPath(
    //#JPAWeblogManagerImpl.java:804: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isDuplicateWeblogCategoryName(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:804: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isDuplicateWeblogCategoryName(WeblogCategory)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
                    cat.getWebsite(), cat.getPath()) != null);
        }
        
        return false;
    //#JPAWeblogManagerImpl.java:808: end of method: bool org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.isDuplicateWeblogCategoryName(WeblogCategory)
    }
    
    /**
     * @inheritDoc
     */
    public boolean isWeblogCategoryInUse(WeblogCategory cat)
    throws WebloggerException {
        
        Query q = strategy.getNamedQuery("WeblogEntry.getByCategory");
    //#JPAWeblogManagerImpl.java:817: method: bool org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.isWeblogCategoryInUse(WeblogCategory)
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): cat
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): this
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): this.strategy
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): this.strategy.__Tag
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): this.strategy.emf
    //#input(bool isWeblogCategoryInUse(WeblogCategory)): this.strategy.threadLocalEntityManager
    //#output(bool isWeblogCategoryInUse(WeblogCategory)): return_value
    //#pre[3] (bool isWeblogCategoryInUse(WeblogCategory)): this.strategy != null
    //#pre[4] (bool isWeblogCategoryInUse(WeblogCategory)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (bool isWeblogCategoryInUse(WeblogCategory)): this.strategy.threadLocalEntityManager != null
    //#pre[1] (bool isWeblogCategoryInUse(WeblogCategory)): (soft) cat != null
    //#pre[5] (bool isWeblogCategoryInUse(WeblogCategory)): (soft) this.strategy.emf != null
    //#presumption(bool isWeblogCategoryInUse(WeblogCategory)): java.util.Iterator:next(...)@827 != null
    //#presumption(bool isWeblogCategoryInUse(WeblogCategory)): javax.persistence.Query:getResultList(...)@819 != null
    //#presumption(bool isWeblogCategoryInUse(WeblogCategory)): org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory(...)@833 != null
    //#presumption(bool isWeblogCategoryInUse(WeblogCategory)): org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory(...)@837 != null
    //#presumption(bool isWeblogCategoryInUse(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories(...)@825 != null
    //#presumption(bool isWeblogCategoryInUse(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@833 != null
    //#presumption(bool isWeblogCategoryInUse(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite(...)@837 != null
    //#post(bool isWeblogCategoryInUse(WeblogCategory)): init'ed(return_value)
    //#unanalyzed(bool isWeblogCategoryInUse(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(bool isWeblogCategoryInUse(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(bool isWeblogCategoryInUse(WeblogCategory)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(bool isWeblogCategoryInUse(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(bool isWeblogCategoryInUse(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(bool isWeblogCategoryInUse(WeblogCategory)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(bool isWeblogCategoryInUse(WeblogCategory)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(bool isWeblogCategoryInUse(WeblogCategory)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(bool isWeblogCategoryInUse(WeblogCategory)): java.util.Iterator:hasNext(...)@826: {0}, {1}
    //#test_vector(bool isWeblogCategoryInUse(WeblogCategory)): java.util.List:size(...)@819: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(bool isWeblogCategoryInUse(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:equals(...)@833: {0}, {1}
    //#test_vector(bool isWeblogCategoryInUse(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:equals(...)@837: {0}, {1}
    //#test_vector(bool isWeblogCategoryInUse(WeblogCategory)): org.apache.roller.weblogger.pojos.WeblogCategory:isInUse(...)@828: {0}, {1}
        q.setParameter(1, cat);
        int entryCount = q.getResultList().size();
        
        if (entryCount > 0) {
            return true;
        }
        
        Iterator cats = cat.getWeblogCategories().iterator();
    //#JPAWeblogManagerImpl.java:825: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isWeblogCategoryInUse(WeblogCategory)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogCategory:getWeblogCategories()
        while (cats.hasNext()) {
            WeblogCategory childCat = (WeblogCategory)cats.next();
            if (childCat.isInUse()) {
    //#JPAWeblogManagerImpl.java:828: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogCategory:isInUse()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isWeblogCategoryInUse(WeblogCategory)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogCategory:isInUse()
                return true;
            }
        }
        
        if (cat.getWebsite().getBloggerCategory().equals(cat)) {
    //#JPAWeblogManagerImpl.java:833: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isWeblogCategoryInUse(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:833: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isWeblogCategoryInUse(WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#JPAWeblogManagerImpl.java:833: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogCategory:equals(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isWeblogCategoryInUse(WeblogCategory)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogCategory:equals(Object)
            return true;
        }
        
        if (cat.getWebsite().getDefaultCategory().equals(cat)) {
    //#JPAWeblogManagerImpl.java:837: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isWeblogCategoryInUse(WeblogCategory)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogCategory:getWebsite()
    //#JPAWeblogManagerImpl.java:837: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isWeblogCategoryInUse(WeblogCategory)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getDefaultCategory()
    //#JPAWeblogManagerImpl.java:837: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogCategory:equals(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool isWeblogCategoryInUse(WeblogCategory)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogCategory:equals(Object)
            return true;
        }
        
        return false;
    //#JPAWeblogManagerImpl.java:841: end of method: bool org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.isWeblogCategoryInUse(WeblogCategory)
    }
    
    /**
     * @inheritDoc
     */
    public List getComments(
            Weblog     website,
            WeblogEntry entry,
            String          searchString,
            Date            startDate,
            Date            endDate,
            String          status,
            boolean         reverseChrono,
            int             offset,
            int             length) throws WebloggerException {
        
        List params = new ArrayList();
    //#JPAWeblogManagerImpl.java:858: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): " <> "._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): " = "._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): " AND "._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): " OR c.content LIKE ?"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): " ORDER BY c.postTime ASC"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): " ORDER BY c.postTime DESC"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): " WHERE "._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): "%"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): "(c.url LIKE ?"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): ")"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): "SELECT c FROM WeblogEntryComment c "._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): "c.postTime <= ?"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): "c.postTime >= ?"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): "c.status "._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): "c.weblogEntry = ?"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): "c.weblogEntry.website = ?"._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): endDate
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): entry
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): length
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): offset
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): reverseChrono
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): searchString
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): searchString._tainted
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): startDate
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): status
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): this
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): this.strategy
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): this.strategy.__Tag
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): this.strategy.emf
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): this.strategy.threadLocalEntityManager
    //#input(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): website
    //#output(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): return_value
    //#pre[21] (List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): this.strategy != null
    //#pre[22] (List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[24] (List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[23] (List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): (soft) this.strategy.emf != null
    //#post(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): init'ed(return_value)
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): endDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): entry: Addr_Set{null}, Inverse{null}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): reverseChrono: {0}, {1}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): searchString: Addr_Set{null}, Inverse{null}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): startDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): status: Addr_Set{null}, Inverse{null}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): website: Addr_Set{null}, Inverse{null}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): java.lang.String:equals(...)@892: {0}, {1}
    //#test_vector(List getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)): java.lang.StringBuffer:length(...)@905: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
        int size = 0;
        StringBuffer queryString = new StringBuffer();
        queryString.append("SELECT c FROM WeblogEntryComment c ");
        
        StringBuffer whereClause = new StringBuffer();
        if (entry != null) {
            params.add(size++, entry);
            whereClause.append("c.weblogEntry = ?").append(size);
        } else if (website != null) {
            params.add(size++, website);
            whereClause.append("c.weblogEntry.website = ?").append(size);
        }
        
        if (searchString != null) {
            params.add(size++, "%" + searchString + "%");
            appendConjuctionToWhereclause(whereClause, "(c.url LIKE ?")
                .append(size).append(" OR c.content LIKE ?").append(size).append(")");
        }
        
        if (startDate != null) {
            Timestamp start = new Timestamp(startDate.getTime());
            params.add(size++, start);
            appendConjuctionToWhereclause(whereClause, "c.postTime >= ?").append(size);
        }
        
        if (endDate != null) {
            Timestamp end = new Timestamp(endDate.getTime());
            params.add(size++, end);
            appendConjuctionToWhereclause(whereClause, "c.postTime <= ?").append(size);
        }
        
        if (status != null) {
            String comparisionOperator;
            if("ALL_IGNORE_SPAM".equals(status)) {
                // we want all comments, except spam
                // so that means where status != SPAM
                status = WeblogEntryComment.SPAM;
                comparisionOperator = " <> ";
            } else {
                comparisionOperator = " = ";
            }
            params.add(size++, status);
            appendConjuctionToWhereclause(whereClause, "c.status ")
                .append(comparisionOperator).append('?').append(size);
        }
        
        if(whereClause.length() != 0) {
            queryString.append(" WHERE ").append(whereClause);
        }
        if (reverseChrono) {
            queryString.append(" ORDER BY c.postTime DESC");
        } else {
            queryString.append(" ORDER BY c.postTime ASC");
        }
        
        Query query = strategy.getDynamicQuery(queryString.toString());
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }
        for (int i=0; i<params.size(); i++) {
            query.setParameter(i+1, params.get(i));
        }
        return query.getResultList();
    //#JPAWeblogManagerImpl.java:924: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getComments(Weblog, WeblogEntry, String, Date, Date, String, bool, int, int)
        
    }
    
    
    /**
     * @inheritDoc
     */
    public int removeMatchingComments(
            Weblog     website,
            WeblogEntry entry,
            String  searchString,
            Date    startDate,
            Date    endDate,
            String status) throws WebloggerException {
        
        // TODO dynamic bulk delete query: I'd MUCH rather use a bulk delete,
        // but MySQL says "General error, message from server: "You can't
        // specify target table 'roller_comment' for update in FROM clause"
        
        List comments = getComments(
    //#JPAWeblogManagerImpl.java:944: method: int org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)
    //#JPAWeblogManagerImpl.java:944: 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.JPAWeblogManagerImpl
    //#    method: int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)
    //#    suspicious precondition index: [10]
    //#    Attribs:  Soft
    //#JPAWeblogManagerImpl.java:944: Warning: suspicious precondition
    //#    the precondition for this.roller.userManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)
    //#    suspicious precondition index: [12]
    //#    Attribs:  Soft
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): " <> "._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): " = "._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): " AND "._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): " OR c.content LIKE ?"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): " ORDER BY c.postTime ASC"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): " ORDER BY c.postTime DESC"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): " WHERE "._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): "%"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): "(c.url LIKE ?"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): ")"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): "SELECT c FROM WeblogEntryComment c "._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): "c.postTime <= ?"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): "c.postTime >= ?"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): "c.status "._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): "c.weblogEntry = ?"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): "c.weblogEntry.website = ?"._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): __Descendant_Table[others]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): __Dispatch_Table.getComments(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;ZII)Ljava/util/List;
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): __Dispatch_Table.removeComment(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;)V
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): endDate
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): entry
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): searchString
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): searchString._tainted
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): startDate
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): status
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.__Tag
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.roller
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.roller.__Tag
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.roller.userManager
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.roller.userManager.__Tag
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.roller.userManager.strategy
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.roller.userManager.strategy.__Tag
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.strategy
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.strategy.__Tag
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.strategy.emf
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.strategy.threadLocalEntityManager
    //#input(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): website
    //#output(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): return_value
    //#pre[8] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[17] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.strategy != null
    //#pre[18] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[20] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): this.strategy.threadLocalEntityManager != null
    //#pre[9] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): (soft) this.roller != null
    //#pre[10] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, 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[11] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): (soft) this.roller.userManager != null
    //#pre[12] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): (soft) this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[13] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): (soft) this.roller.userManager.strategy != null
    //#pre[14] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): (soft) this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[16] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): (soft) this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[19] (int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): (soft) this.strategy.emf != null
    //#presumption(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): java.util.Iterator:next(...)@949 != null
    //#presumption(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): javax.persistence.Query:getResultList(...)@924 != null
    //#post(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): return_value >= 0
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.util.List:add
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.util.List:size
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.util.List:get
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:javax.persistence.Query:setFirstResult
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:getUserManager
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryComment:getWeblogEntry
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:saveWebsite
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#test_vector(int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)): java.util.Iterator:hasNext(...)@948: {0}, {1}
                website, entry, searchString, startDate, endDate,
                status, true, 0, -1);
        int count = 0;
        for (Iterator it = comments.iterator(); it.hasNext();) {
            WeblogEntryComment comment = (WeblogEntryComment) it.next();
            removeComment(comment);
            count++;
    //#JPAWeblogManagerImpl.java:951: ?overflow
    //#    count in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: int removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)
    //#    basic block: bb_3
    //#    assertion: count in -2_147_483_649..4_294_967_294
    //#    VN: count + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
        }
        return count;
    //#JPAWeblogManagerImpl.java:953: end of method: int org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeMatchingComments(Weblog, WeblogEntry, String, Date, Date, String)
    }
    
    
    /**
     * @inheritDoc
     */
    public WeblogCategory getWeblogCategory(String id)
    throws WebloggerException {
        return (WeblogCategory) this.strategy.load(
    //#JPAWeblogManagerImpl.java:962: method: WeblogCategory org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategory(String)
    //#input(WeblogCategory getWeblogCategory(String)): id
    //#input(WeblogCategory getWeblogCategory(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogCategory getWeblogCategory(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogCategory getWeblogCategory(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(WeblogCategory getWeblogCategory(String)): this
    //#input(WeblogCategory getWeblogCategory(String)): this.strategy
    //#input(WeblogCategory getWeblogCategory(String)): this.strategy.__Tag
    //#input(WeblogCategory getWeblogCategory(String)): this.strategy.emf
    //#input(WeblogCategory getWeblogCategory(String)): this.strategy.threadLocalEntityManager
    //#output(WeblogCategory getWeblogCategory(String)): return_value
    //#pre[3] (WeblogCategory getWeblogCategory(String)): this.strategy != null
    //#pre[4] (WeblogCategory getWeblogCategory(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (WeblogCategory getWeblogCategory(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (WeblogCategory getWeblogCategory(String)): (soft) this.strategy.emf != null
    //#post(WeblogCategory getWeblogCategory(String)): init'ed(return_value)
    //#unanalyzed(WeblogCategory getWeblogCategory(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogCategory getWeblogCategory(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogCategory getWeblogCategory(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogCategory getWeblogCategory(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogCategory getWeblogCategory(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogCategory getWeblogCategory(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogCategory getWeblogCategory(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#JPAWeblogManagerImpl.java:962: end of method: WeblogCategory org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategory(String)
                WeblogCategory.class, id);
    }
    
    //--------------------------------------------- WeblogCategory Queries
    
    /**
     * @inheritDoc
     */
    public WeblogCategory getWeblogCategoryByPath(Weblog website,
            String categoryPath) throws WebloggerException {
        return getWeblogCategoryByPath(website, null, categoryPath);
    //#JPAWeblogManagerImpl.java:973: method: WeblogCategory org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategoryByPath(Weblog, String)
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): "."._tainted
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): __Descendant_Table[others]
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): categoryPath
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): categoryPath._tainted
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): this
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): this.__Tag
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): this.strategy
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): this.strategy.__Tag
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): this.strategy.emf
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): this.strategy.threadLocalEntityManager
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, String)): website
    //#output(WeblogCategory getWeblogCategoryByPath(Weblog, String)): return_value
    //#pre[4] (WeblogCategory getWeblogCategoryByPath(Weblog, String)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[5] (WeblogCategory getWeblogCategoryByPath(Weblog, String)): (soft) this.strategy != null
    //#pre[6] (WeblogCategory getWeblogCategoryByPath(Weblog, String)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (WeblogCategory getWeblogCategoryByPath(Weblog, String)): (soft) this.strategy.emf != null
    //#pre[8] (WeblogCategory getWeblogCategoryByPath(Weblog, String)): (soft) this.strategy.threadLocalEntityManager != null
    //#pre[9] (WeblogCategory getWeblogCategoryByPath(Weblog, String)): (soft) website != null
    //#post(WeblogCategory getWeblogCategoryByPath(Weblog, String)): init'ed(return_value)
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#JPAWeblogManagerImpl.java:973: end of method: WeblogCategory org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategoryByPath(Weblog, String)
    }
    
    /**
     * @inheritDoc
     */
    // TODO: ditch this method in favor of getWeblogCategoryByPath(weblog, path)
    public WeblogCategory getWeblogCategoryByPath(Weblog website,
            WeblogCategory category, String path) throws WebloggerException {
        
        if (path == null || path.trim().equals("/")) {
    //#JPAWeblogManagerImpl.java:983: method: WeblogCategory org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategoryByPath(Weblog, WeblogCategory, String)
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): "."._tainted
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): __Descendant_Table[others]
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): path
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): path._tainted
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): this
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): this.__Tag
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): this.strategy
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): this.strategy.__Tag
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): this.strategy.emf
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): this.strategy.threadLocalEntityManager
    //#input(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): website
    //#output(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): return_value
    //#pre[4] (WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[5] (WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): (soft) this.strategy != null
    //#pre[6] (WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): (soft) this.strategy.emf != null
    //#pre[8] (WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): (soft) this.strategy.threadLocalEntityManager != null
    //#pre[9] (WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): (soft) website != null
    //#post(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): init'ed(return_value)
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): path: Addr_Set{null}, Inverse{null}
    //#test_vector(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): java.lang.String:equals(...)@983: {0}, {1}
    //#test_vector(WeblogCategory getWeblogCategoryByPath(Weblog, WeblogCategory, String)): java.lang.String:startsWith(...)@989: {1}, {0}
            return getRootWeblogCategory(website);
        } else {
            String catPath = path;
            
            // all cat paths must begin with a '/'
            if(!catPath.startsWith("/")) {
                catPath = "/"+catPath;
            }
            
            // now just do simple lookup by path
            Query q = strategy.getNamedQuery(
                    "WeblogCategory.getByPath&Website");
            q.setParameter(1, catPath);
            q.setParameter(2, website);
            try {
                return (WeblogCategory)q.getSingleResult();
            } catch (NoResultException e) {
                return null;
    //#JPAWeblogManagerImpl.java:1001: end of method: WeblogCategory org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogCategoryByPath(Weblog, WeblogCategory, String)
            }
        }
    }
    
    /**
     * @inheritDoc
     */
    public WeblogEntryComment getComment(String id) throws WebloggerException {
        return (WeblogEntryComment) this.strategy.load(WeblogEntryComment.class, id);
    //#JPAWeblogManagerImpl.java:1010: method: WeblogEntryComment org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getComment(String)
    //#input(WeblogEntryComment getComment(String)): id
    //#input(WeblogEntryComment getComment(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogEntryComment getComment(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogEntryComment getComment(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(WeblogEntryComment getComment(String)): this
    //#input(WeblogEntryComment getComment(String)): this.strategy
    //#input(WeblogEntryComment getComment(String)): this.strategy.__Tag
    //#input(WeblogEntryComment getComment(String)): this.strategy.emf
    //#input(WeblogEntryComment getComment(String)): this.strategy.threadLocalEntityManager
    //#output(WeblogEntryComment getComment(String)): return_value
    //#pre[3] (WeblogEntryComment getComment(String)): this.strategy != null
    //#pre[4] (WeblogEntryComment getComment(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (WeblogEntryComment getComment(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (WeblogEntryComment getComment(String)): (soft) this.strategy.emf != null
    //#post(WeblogEntryComment getComment(String)): init'ed(return_value)
    //#unanalyzed(WeblogEntryComment getComment(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogEntryComment getComment(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogEntryComment getComment(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogEntryComment getComment(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogEntryComment getComment(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogEntryComment getComment(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogEntryComment getComment(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#JPAWeblogManagerImpl.java:1010: end of method: WeblogEntryComment org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getComment(String)
    }
    
    /**
     * @inheritDoc
     */
    public WeblogEntry getWeblogEntry(String id) throws WebloggerException {
        return (WeblogEntry)strategy.load(WeblogEntry.class, id);
    //#JPAWeblogManagerImpl.java:1017: method: WeblogEntry org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntry(String)
    //#input(WeblogEntry getWeblogEntry(String)): id
    //#input(WeblogEntry getWeblogEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogEntry getWeblogEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogEntry getWeblogEntry(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(WeblogEntry getWeblogEntry(String)): this
    //#input(WeblogEntry getWeblogEntry(String)): this.strategy
    //#input(WeblogEntry getWeblogEntry(String)): this.strategy.__Tag
    //#input(WeblogEntry getWeblogEntry(String)): this.strategy.emf
    //#input(WeblogEntry getWeblogEntry(String)): this.strategy.threadLocalEntityManager
    //#output(WeblogEntry getWeblogEntry(String)): return_value
    //#pre[3] (WeblogEntry getWeblogEntry(String)): this.strategy != null
    //#pre[4] (WeblogEntry getWeblogEntry(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (WeblogEntry getWeblogEntry(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (WeblogEntry getWeblogEntry(String)): (soft) this.strategy.emf != null
    //#post(WeblogEntry getWeblogEntry(String)): init'ed(return_value)
    //#unanalyzed(WeblogEntry getWeblogEntry(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogEntry getWeblogEntry(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogEntry getWeblogEntry(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogEntry getWeblogEntry(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogEntry getWeblogEntry(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogEntry getWeblogEntry(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogEntry getWeblogEntry(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#JPAWeblogManagerImpl.java:1017: end of method: WeblogEntry org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntry(String)
    }
    
    /**
     * @inheritDoc
     */
    public Map getWeblogEntryObjectMap(
            Weblog website,
            Date    startDate,
            Date    endDate,
            String  catName,
            List    tags,
            String  status,
            String  locale,
            int     offset,
            int     length) throws WebloggerException {
        return getWeblogEntryMap(
    //#JPAWeblogManagerImpl.java:1033: method: Map org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "    OR e.summary LIKE ? "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "    OR e.title LIKE ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND ( e.text LIKE ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.category.id = ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.creator.id = ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.locale like ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.pubTime <= ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.pubTime >= ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.status = ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " OR "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " ORDER BY e.pubTime "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " ORDER BY e.updateTime "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): " t.name = ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "("._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): ") "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): ") AND "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "."._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "ASC "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "DESC "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "SELECT e FROM WeblogEntry e JOIN e.tags t WHERE "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "SELECT e FROM WeblogEntry e WHERE "._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "e.website.enabled = ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): "e.website.id = ?"._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): __Descendant_Table[others]
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): __Dispatch_Table.getWeblogEntries(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List;
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): catName
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): catName._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): endDate
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): java.lang.Boolean.TRUE
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): length
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): locale
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): locale._tainted
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): offset
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): reverseComparator
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): startDate
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): status
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): tags
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): this
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): this.__Tag
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.__Tag
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.emf
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.threadLocalEntityManager
    //#input(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): website
    //#output(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): new TreeMap(getWeblogEntryMap#1) num objects
    //#output(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): return_value
    //#new obj(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): new TreeMap(getWeblogEntryMap#1)
    //#pre[13] (Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy != null
    //#pre[14] (Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[16] (Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[12] (Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[15] (Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): (soft) this.strategy.emf != null
    //#post(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): return_value == &new TreeMap(getWeblogEntryMap#1)
    //#post(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): new TreeMap(getWeblogEntryMap#1) num objects == 1
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getId
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getId
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.List:size
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.List:get
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.commons.lang.StringUtils:isNotEmpty
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:getWeblogCategoryByPath
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getId
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setFirstResult
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.TreeMap
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getTimeZoneInstance
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Calendar:setTimeZone
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.util.DateUtil:get8charDateFormat
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.util.DateUtil:getNoonOfDay
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.TreeMap:get
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.text.SimpleDateFormat:format
    //#unanalyzed(Map getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.TreeMap:put
    //#JPAWeblogManagerImpl.java:1033: end of method: Map org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)
                website,
                startDate,
                endDate,
                catName,
                tags,
                status,
                false,
                locale,
                offset,
                length);
    }
    
    /**
     * @inheritDoc
     */
    public Map getWeblogEntryStringMap(
            Weblog website,
            Date    startDate,
            Date    endDate,
            String  catName,
            List    tags,
            String  status,
            String  locale,
            int     offset,
            int     length
            ) throws WebloggerException {
        return getWeblogEntryMap(
    //#JPAWeblogManagerImpl.java:1060: method: Map org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "    OR e.summary LIKE ? "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "    OR e.title LIKE ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND ( e.text LIKE ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.category.id = ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.creator.id = ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.locale like ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.pubTime <= ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.pubTime >= ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " AND e.status = ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " OR "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " ORDER BY e.pubTime "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " ORDER BY e.updateTime "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): " t.name = ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "("._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): ") "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): ") AND "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "."._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "ASC "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "DESC "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "SELECT e FROM WeblogEntry e JOIN e.tags t WHERE "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "SELECT e FROM WeblogEntry e WHERE "._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "e.website.enabled = ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): "e.website.id = ?"._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): __Descendant_Table[others]
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): __Dispatch_Table.getWeblogEntries(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List;
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): catName
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): catName._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): endDate
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): java.lang.Boolean.TRUE
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): length
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): locale
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): locale._tainted
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): offset
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): reverseComparator
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): startDate
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): status
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): tags
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): this
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): this.__Tag
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.__Tag
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.emf
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.threadLocalEntityManager
    //#input(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): website
    //#output(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): new TreeMap(getWeblogEntryMap#1) num objects
    //#output(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): return_value
    //#new obj(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): new TreeMap(getWeblogEntryMap#1)
    //#pre[13] (Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy != null
    //#pre[14] (Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[16] (Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[12] (Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[15] (Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): (soft) this.strategy.emf != null
    //#post(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): return_value == &new TreeMap(getWeblogEntryMap#1)
    //#post(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): new TreeMap(getWeblogEntryMap#1) num objects == 1
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getId
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getId
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.List:size
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.List:get
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.commons.lang.StringUtils:isNotEmpty
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:getWeblogCategoryByPath
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getId
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:javax.persistence.Query:setFirstResult
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.TreeMap
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getTimeZoneInstance
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.Calendar:setTimeZone
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.util.DateUtil:get8charDateFormat
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:org.apache.roller.util.DateUtil:getNoonOfDay
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.TreeMap:get
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.text.SimpleDateFormat:format
    //#unanalyzed(Map getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)): Effects-of-calling:java.util.TreeMap:put
    //#JPAWeblogManagerImpl.java:1060: end of method: Map org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntryStringMap(Weblog, Date, Date, String, List, String, String, int, int)
                website,
                startDate,
                endDate,
                catName,
                tags,
                status,
                true,
                locale,
                offset,
                length);
    }
    
    private Map getWeblogEntryMap(
            Weblog website,
            Date    startDate,
            Date    endDate,
            String  catName,
            List    tags,
            String  status,
            boolean stringsOnly,
            String  locale,
            int     offset,
            int     length) throws WebloggerException {
        
        TreeMap map = new TreeMap(reverseComparator);
    //#JPAWeblogManagerImpl.java:1085: method: Map org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "    OR e.summary LIKE ? "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "    OR e.title LIKE ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " AND ( e.text LIKE ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " AND e.category.id = ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " AND e.creator.id = ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " AND e.locale like ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " AND e.pubTime <= ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " AND e.pubTime >= ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " AND e.status = ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " OR "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " ORDER BY e.pubTime "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " ORDER BY e.updateTime "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): " t.name = ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "("._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): ") "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): ") AND "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "."._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "ASC "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "DESC "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "SELECT e FROM WeblogEntry e JOIN e.tags t WHERE "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "SELECT e FROM WeblogEntry e WHERE "._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "e.website.enabled = ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): "e.website.id = ?"._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): __Descendant_Table[others]
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): __Dispatch_Table.getWeblogEntries(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List;
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): catName
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): catName._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): endDate
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): java.lang.Boolean.TRUE
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): length
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): locale
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): locale._tainted
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): offset
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): reverseComparator
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): startDate
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): status
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): stringsOnly
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): tags
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): this
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): this.__Tag
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): this.strategy
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): this.strategy.__Tag
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): this.strategy.emf
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): this.strategy.threadLocalEntityManager
    //#input(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): website
    //#output(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): new TreeMap(getWeblogEntryMap#1) num objects
    //#output(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): return_value
    //#new obj(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): new TreeMap(getWeblogEntryMap#1)
    //#pre[14] (Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): this.strategy != null
    //#pre[15] (Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[17] (Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[13] (Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[16] (Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): (soft) this.strategy.emf != null
    //#presumption(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): java.util.Calendar:getInstance(...)@1102 != null
    //#presumption(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): java.util.Iterator:next(...)@1109 != null
    //#presumption(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): javax.persistence.Query:getResultList(...)@645 != null
    //#presumption(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): org.apache.roller.util.DateUtil:get8charDateFormat(...)@1107 != null
    //#post(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): return_value == &new TreeMap(getWeblogEntryMap#1)
    //#post(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): new TreeMap(getWeblogEntryMap#1) num objects == 1
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getId
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getId
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.util.List:size
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.util.List:get
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:org.apache.commons.lang.StringUtils:isNotEmpty
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:getWeblogCategoryByPath
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getId
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): Effects-of-calling:javax.persistence.Query:setFirstResult
    //#test_vector(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): stringsOnly: {0}, {1}
    //#test_vector(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): website: Addr_Set{null}, Inverse{null}
    //#test_vector(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): java.util.Iterator:hasNext(...)@1108: {0}, {1}
    //#test_vector(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): java.util.TreeMap:get(...)@1112: Inverse{null}, Addr_Set{null}
    //#test_vector(Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)): java.util.TreeMap:get(...)@1115: Inverse{null}, Addr_Set{null}
        
        List entries = getWeblogEntries( 
                website,
                null, // user
                startDate,
                endDate,
                catName,
                tags,
                status,
                null, // text
                null, // sortBy
                null, // sortOrder
                locale,
                offset,
                length);
        
        Calendar cal = Calendar.getInstance();
        if (website != null) {
            cal.setTimeZone(website.getTimeZoneInstance());
    //#JPAWeblogManagerImpl.java:1104: Warning: method not available
    //#    -- call on TimeZone org.apache.roller.weblogger.pojos.Weblog:getTimeZoneInstance()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)
    //#    unanalyzed callee: TimeZone org.apache.roller.weblogger.pojos.Weblog:getTimeZoneInstance()
        }
        
        SimpleDateFormat formatter = DateUtil.get8charDateFormat();
    //#JPAWeblogManagerImpl.java:1107: Warning: method not available
    //#    -- call on SimpleDateFormat org.apache.roller.util.DateUtil:get8charDateFormat()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)
    //#    unanalyzed callee: SimpleDateFormat org.apache.roller.util.DateUtil:get8charDateFormat()
        for (Iterator wbItr = entries.iterator(); wbItr.hasNext();) {
            WeblogEntry entry = (WeblogEntry) wbItr.next();
            Date sDate = DateUtil.getNoonOfDay(entry.getPubTime(), cal);
    //#JPAWeblogManagerImpl.java:1110: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#JPAWeblogManagerImpl.java:1110: Warning: method not available
    //#    -- call on Date org.apache.roller.util.DateUtil:getNoonOfDay(Date, Calendar)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: Map getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)
    //#    unanalyzed callee: Date org.apache.roller.util.DateUtil:getNoonOfDay(Date, Calendar)
            if (stringsOnly) {
                if (map.get(sDate) == null)
                    map.put(sDate, formatter.format(sDate));
            } else {
                List dayEntries = (List) map.get(sDate);
                if (dayEntries == null) {
                    dayEntries = new ArrayList();
                    map.put(sDate, dayEntries);
                }
                dayEntries.add(entry);
            }
        }
        return map;
    //#JPAWeblogManagerImpl.java:1123: end of method: Map org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getWeblogEntryMap(Weblog, Date, Date, String, List, String, bool, String, int, int)
    }
    
    /**
     * @inheritDoc
     */
    public List getMostCommentedWeblogEntries(Weblog website,
            Date startDate, Date endDate, int offset,
            int length) throws WebloggerException {
        Query query = null;
    //#JPAWeblogManagerImpl.java:1132: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    //#JPAWeblogManagerImpl.java:1132: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    //#    Attribs:  Uncertain
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): endDate
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): length
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): offset
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): startDate
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): statCountCountReverseComparator
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): this
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): this.strategy
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): this.strategy.__Tag
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): this.strategy.emf
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): this.strategy.threadLocalEntityManager
    //#input(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): website
    //#output(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): new ArrayList(getMostCommentedWeblogEntries#8) num objects
    //#output(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): return_value
    //#new obj(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): new ArrayList(getMostCommentedWeblogEntries#8)
    //#pre[15] (List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): this.strategy != null
    //#pre[16] (List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[18] (List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[17] (List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): (soft) this.strategy.emf != null
    //#presumption(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): java.util.Iterator:next(...)@1176 != null
    //#presumption(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): javax.persistence.Query:getResultList(...)@1173 != null
    //#presumption(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): row.length@1176 >= 4
    //#post(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): return_value == &new ArrayList(getMostCommentedWeblogEntries#8)
    //#post(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): new ArrayList(getMostCommentedWeblogEntries#8) num objects == 1
    //#unanalyzed(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): endDate: Inverse{null}, Addr_Set{null}
    //#test_vector(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): startDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): website: Addr_Set{null}, Inverse{null}
    //#test_vector(List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)): java.util.Iterator:hasNext(...)@1175: {0}, {1}
        List queryResults = null;        
    //#JPAWeblogManagerImpl.java:1133: Warning: unused assignment
    //#    unused assignment into queryResults
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    //#    Attribs:  Uncertain
        if (endDate == null) endDate = new Date();
        
        if (website != null) {
            if (startDate != null) {
                Timestamp start = new Timestamp(startDate.getTime());
                Timestamp end = new Timestamp(endDate.getTime());
                query = strategy.getNamedQuery(
                        "WeblogEntryComment.getMostCommentedWeblogEntryByWebsite&EndDate&StartDate");
                query.setParameter(1, website);
                query.setParameter(2, end);
                query.setParameter(3, start);
            } else {
                Timestamp end = new Timestamp(endDate.getTime());
                query = strategy.getNamedQuery(
                        "WeblogEntryComment.getMostCommentedWeblogEntryByWebsite&EndDate");
                query.setParameter(1, website);
                query.setParameter(2, end);
            }
        } else {
            if (startDate != null) {
                Timestamp start = new Timestamp(startDate.getTime());
                Timestamp end = new Timestamp(endDate.getTime());
                query = strategy.getNamedQuery(
                        "WeblogEntryComment.getMostCommentedWeblogEntryByEndDate&StartDate");
                query.setParameter(1, end);
                query.setParameter(2, start);
            } else {
                Timestamp end = new Timestamp(endDate.getTime());
                query = strategy.getNamedQuery(
                        "WeblogEntryComment.getMostCommentedWeblogEntryByEndDate");
                query.setParameter(1, end);
            }
        }
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }
        queryResults = query.getResultList();
        List results = new ArrayList();
        for (Iterator iter = queryResults.iterator(); iter.hasNext();) {
            Object[] row = (Object[]) iter.next();
            results.add(new StatCount(
    //#JPAWeblogManagerImpl.java:1177: ?use of default init
    //#    init'ed(row[1])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    //#    basic block: bb_16
    //#    assertion: init'ed(row[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAWeblogManagerImpl.java:1177: ?use of default init
    //#    init'ed(row[2])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    //#    basic block: bb_16
    //#    assertion: init'ed(row[2])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAWeblogManagerImpl.java:1177: ?use of default init
    //#    init'ed(row[3])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    //#    basic block: bb_16
    //#    assertion: init'ed(row[3])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAWeblogManagerImpl.java:1177: ?use of default init
    //#    init'ed(row[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    //#    basic block: bb_16
    //#    assertion: init'ed(row[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAWeblogManagerImpl.java:1177: ?null dereference
    //#    not_init'ed(row[0])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    //#    basic block: bb_16
    //#    assertion: not_init'ed(row[0])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#JPAWeblogManagerImpl.java:1177: 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.JPAWeblogManagerImpl
    //#    method: List getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.StatCount(String, String, String, String, long)
                    (String)row[1],                             // entry id
                    (String)row[2],                             // entry anchor
                    (String)row[3],                             // entry title
                    "statCount.weblogEntryCommentCountType",    // stat desc
                    ((Long)row[0]).longValue())); // count
        }
        // Original query ordered by desc count.
        // JPA QL doesn't allow queries to be ordered by agregates; do it in memory
        Collections.sort(results, statCountCountReverseComparator);
        
        return results;
    //#JPAWeblogManagerImpl.java:1188: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getMostCommentedWeblogEntries(Weblog, Date, Date, int, int)
    }
    
    /**
     * @inheritDoc
     */
    public WeblogEntry getNextEntry(WeblogEntry current,
            String catName, String locale) throws WebloggerException {
        WeblogEntry entry = null;
    //#JPAWeblogManagerImpl.java:1196: method: WeblogEntry org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getNextEntry(WeblogEntry, String, String)
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): " AND e.category = ?"._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): " AND e.locale like ?"._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): " AND e.pubTime < ?"._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): " AND e.pubTime > ?"._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): " AND e.status = ?"._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): " ORDER BY e.pubTime ASC"._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): " ORDER BY e.pubTime DESC"._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): "."._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): "Cannot find category: "._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): "SELECT e FROM WeblogEntry e WHERE "._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): "e.website = ?"._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): __Descendant_Table[others]
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): __Dispatch_Table.getNextPrevEntries(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/util/List;
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): catName
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): catName._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): current
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): locale
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): locale._tainted
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): this
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): this.__Tag
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): this.strategy
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): this.strategy.__Tag
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): this.strategy.emf
    //#input(WeblogEntry getNextEntry(WeblogEntry, String, String)): this.strategy.threadLocalEntityManager
    //#output(WeblogEntry getNextEntry(WeblogEntry, String, String)): return_value
    //#pre[3] (WeblogEntry getNextEntry(WeblogEntry, String, String)): current != null
    //#pre[7] (WeblogEntry getNextEntry(WeblogEntry, String, String)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[8] (WeblogEntry getNextEntry(WeblogEntry, String, String)): this.strategy != null
    //#pre[9] (WeblogEntry getNextEntry(WeblogEntry, String, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[11] (WeblogEntry getNextEntry(WeblogEntry, String, String)): this.strategy.threadLocalEntityManager != null
    //#pre[10] (WeblogEntry getNextEntry(WeblogEntry, String, String)): (soft) this.strategy.emf != null
    //#post(WeblogEntry getNextEntry(WeblogEntry, String, String)): init'ed(return_value)
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.util.List:add
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.util.List:size
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.util.List:get
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:getWeblogCategoryByPath
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(WeblogEntry getNextEntry(WeblogEntry, String, String)): Effects-of-calling:org.apache.roller.RollerException
    //#test_vector(WeblogEntry getNextEntry(WeblogEntry, String, String)): java.util.List:size(...)@1198: {-2_147_483_648..0}, {1..4_294_967_295}
        List entryList = getNextPrevEntries(current, catName, locale, 1, true);
        if (entryList != null && entryList.size() > 0) {
            entry = (WeblogEntry)entryList.get(0);
        }
        return entry;
    //#JPAWeblogManagerImpl.java:1201: end of method: WeblogEntry org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getNextEntry(WeblogEntry, String, String)
    }
    
    /**
     * @inheritDoc
     */
    public WeblogEntry getPreviousEntry(WeblogEntry current,
            String catName, String locale) throws WebloggerException {
        WeblogEntry entry = null;
    //#JPAWeblogManagerImpl.java:1209: method: WeblogEntry org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getPreviousEntry(WeblogEntry, String, String)
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): " AND e.category = ?"._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): " AND e.locale like ?"._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): " AND e.pubTime < ?"._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): " AND e.pubTime > ?"._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): " AND e.status = ?"._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): " ORDER BY e.pubTime ASC"._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): " ORDER BY e.pubTime DESC"._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): "."._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): "Cannot find category: "._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): "SELECT e FROM WeblogEntry e WHERE "._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): "e.website = ?"._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): __Descendant_Table[others]
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): __Dispatch_Table.getNextPrevEntries(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/util/List;
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): __Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): __Dispatch_Table.getWeblogCategoryByPath(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): catName
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): catName._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): current
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): locale
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): locale._tainted
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): this
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): this.__Tag
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): this.strategy
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): this.strategy.__Tag
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): this.strategy.emf
    //#input(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): this.strategy.threadLocalEntityManager
    //#output(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): return_value
    //#pre[3] (WeblogEntry getPreviousEntry(WeblogEntry, String, String)): current != null
    //#pre[8] (WeblogEntry getPreviousEntry(WeblogEntry, String, String)): this.strategy != null
    //#pre[9] (WeblogEntry getPreviousEntry(WeblogEntry, String, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[11] (WeblogEntry getPreviousEntry(WeblogEntry, String, String)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (WeblogEntry getPreviousEntry(WeblogEntry, String, String)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[10] (WeblogEntry getPreviousEntry(WeblogEntry, String, String)): (soft) this.strategy.emf != null
    //#post(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): init'ed(return_value)
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.util.List:add
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.util.List:size
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.util.List:get
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:getRootWeblogCategory
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:getWeblogCategoryByPath
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): Effects-of-calling:org.apache.roller.RollerException
    //#test_vector(WeblogEntry getPreviousEntry(WeblogEntry, String, String)): java.util.List:size(...)@1211: {-2_147_483_648..0}, {1..4_294_967_295}
        List entryList = getNextPrevEntries(current, catName, locale, 1, false);
        if (entryList != null && entryList.size() > 0) {
            entry = (WeblogEntry)entryList.get(0);
        }
        return entry;
    //#JPAWeblogManagerImpl.java:1214: end of method: WeblogEntry org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getPreviousEntry(WeblogEntry, String, String)
    }
    
    /**
     * @inheritDoc
     */
    public void release() {}
    //#JPAWeblogManagerImpl.java:1220: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.release()
    //#JPAWeblogManagerImpl.java:1220: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.release()
    
    /**
     * @inheritDoc
     */
    public void applyCommentDefaultsToEntries(Weblog website)
    throws WebloggerException {
        if (log.isDebugEnabled()) {
    //#JPAWeblogManagerImpl.java:1227: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.applyCommentDefaultsToEntries(Weblog)
    //#JPAWeblogManagerImpl.java:1227: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void applyCommentDefaultsToEntries(Weblog)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#input(void applyCommentDefaultsToEntries(Weblog)): log
    //#input(void applyCommentDefaultsToEntries(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void applyCommentDefaultsToEntries(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void applyCommentDefaultsToEntries(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void applyCommentDefaultsToEntries(Weblog)): this
    //#input(void applyCommentDefaultsToEntries(Weblog)): this.strategy
    //#input(void applyCommentDefaultsToEntries(Weblog)): this.strategy.__Tag
    //#input(void applyCommentDefaultsToEntries(Weblog)): this.strategy.emf
    //#input(void applyCommentDefaultsToEntries(Weblog)): this.strategy.threadLocalEntityManager
    //#input(void applyCommentDefaultsToEntries(Weblog)): website
    //#pre[1] (void applyCommentDefaultsToEntries(Weblog)): log != null
    //#pre[3] (void applyCommentDefaultsToEntries(Weblog)): this.strategy != null
    //#pre[4] (void applyCommentDefaultsToEntries(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void applyCommentDefaultsToEntries(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (void applyCommentDefaultsToEntries(Weblog)): website != null
    //#pre[5] (void applyCommentDefaultsToEntries(Weblog)): (soft) this.strategy.emf != null
    //#presumption(void applyCommentDefaultsToEntries(Weblog)): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#unanalyzed(void applyCommentDefaultsToEntries(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void applyCommentDefaultsToEntries(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void applyCommentDefaultsToEntries(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void applyCommentDefaultsToEntries(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void applyCommentDefaultsToEntries(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void applyCommentDefaultsToEntries(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void applyCommentDefaultsToEntries(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(void applyCommentDefaultsToEntries(Weblog)): org.apache.commons.logging.Log:isDebugEnabled(...)@1227: {0}, {1}
            log.debug("applyCommentDefaults");
    //#JPAWeblogManagerImpl.java:1228: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void applyCommentDefaultsToEntries(Weblog)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }
        
        // TODO: Non-standard JPA bulk update, using parameter values in set clause
        Query q = strategy.getNamedUpdate(
                "WeblogEntry.updateAllowComments&CommentDaysByWebsite");
        q.setParameter(1, website.getDefaultAllowComments());
    //#JPAWeblogManagerImpl.java:1234: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.Weblog:getDefaultAllowComments()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void applyCommentDefaultsToEntries(Weblog)
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.Weblog:getDefaultAllowComments()
        q.setParameter(2, new Integer(website.getDefaultCommentDays()));
    //#JPAWeblogManagerImpl.java:1235: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.Weblog:getDefaultCommentDays()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void applyCommentDefaultsToEntries(Weblog)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.Weblog:getDefaultCommentDays()
        q.setParameter(3, website);
        q.executeUpdate();
    }
    //#JPAWeblogManagerImpl.java:1238: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.applyCommentDefaultsToEntries(Weblog)
    
    /**
     * @inheritDoc
     */
    public List getPopularTags(Weblog website, Date startDate, int limit)
    throws WebloggerException {
        Query query = null;
    //#JPAWeblogManagerImpl.java:1245: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getPopularTags(Weblog, Date, int)
    //#JPAWeblogManagerImpl.java:1245: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    Attribs:  Uncertain
    //#input(List getPopularTags(Weblog, Date, int)): limit
    //#input(List getPopularTags(Weblog, Date, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getPopularTags(Weblog, Date, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getPopularTags(Weblog, Date, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getPopularTags(Weblog, Date, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getPopularTags(Weblog, Date, int)): startDate
    //#input(List getPopularTags(Weblog, Date, int)): tagStatNameComparator
    //#input(List getPopularTags(Weblog, Date, int)): this
    //#input(List getPopularTags(Weblog, Date, int)): this.strategy
    //#input(List getPopularTags(Weblog, Date, int)): this.strategy.__Tag
    //#input(List getPopularTags(Weblog, Date, int)): this.strategy.emf
    //#input(List getPopularTags(Weblog, Date, int)): this.strategy.threadLocalEntityManager
    //#input(List getPopularTags(Weblog, Date, int)): website
    //#output(List getPopularTags(Weblog, Date, int)): new ArrayList(getPopularTags#3) num objects
    //#output(List getPopularTags(Weblog, Date, int)): return_value
    //#new obj(List getPopularTags(Weblog, Date, int)): new ArrayList(getPopularTags#3)
    //#pre[11] (List getPopularTags(Weblog, Date, int)): this.strategy != null
    //#pre[12] (List getPopularTags(Weblog, Date, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[14] (List getPopularTags(Weblog, Date, int)): this.strategy.threadLocalEntityManager != null
    //#pre[13] (List getPopularTags(Weblog, Date, int)): (soft) this.strategy.emf != null
    //#presumption(List getPopularTags(Weblog, Date, int)): (int) (java.lang.Math:floor(...)@1299 + 1) in -2_147_483_648..4_294_967_295
    //#presumption(List getPopularTags(Weblog, Date, int)): java.util.Iterator:next(...)@1282 != null
    //#presumption(List getPopularTags(Weblog, Date, int)): java.util.Iterator:next(...)@1298 != null
    //#presumption(List getPopularTags(Weblog, Date, int)): javax.persistence.Query:getResultList(...)@1274 != null
    //#presumption(List getPopularTags(Weblog, Date, int)): row.length@1282 >= 2
    //#post(List getPopularTags(Weblog, Date, int)): return_value == &new ArrayList(getPopularTags#3)
    //#post(List getPopularTags(Weblog, Date, int)): new ArrayList(getPopularTags#3) num objects == 1
    //#unanalyzed(List getPopularTags(Weblog, Date, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getPopularTags(Weblog, Date, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getPopularTags(Weblog, Date, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getPopularTags(Weblog, Date, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getPopularTags(Weblog, Date, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getPopularTags(Weblog, Date, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getPopularTags(Weblog, Date, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getPopularTags(Weblog, Date, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(List getPopularTags(Weblog, Date, int)): limit: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getPopularTags(Weblog, Date, int)): startDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getPopularTags(Weblog, Date, int)): website: Addr_Set{null}, Inverse{null}
    //#test_vector(List getPopularTags(Weblog, Date, int)): java.util.Iterator:hasNext(...)@1281: {0}, {1}
    //#test_vector(List getPopularTags(Weblog, Date, int)): java.util.Iterator:hasNext(...)@1297: {0}, {1}
        List queryResults = null;
    //#JPAWeblogManagerImpl.java:1246: Warning: unused assignment
    //#    unused assignment into queryResults
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    Attribs:  Uncertain
        
        if (website != null) {
            if (startDate != null) {
                Timestamp start = new Timestamp(startDate.getTime());
                query = strategy.getNamedQuery(
                        "WeblogEntryTagAggregate.getPopularTagsByWebsite&StartDate");
                query.setParameter(1, website);
                query.setParameter(2, start);
            } else {
                query = strategy.getNamedQuery(
                        "WeblogEntryTagAggregate.getPopularTagsByWebsite");
                query.setParameter(1, website);
            }
        } else {
            if (startDate != null) {
                Timestamp start = new Timestamp(startDate.getTime());
                query = strategy.getNamedQuery(
                        "WeblogEntryTagAggregate.getPopularTagsByWebsiteNull&StartDate");
                query.setParameter(1, start);
            } else {
                query = strategy.getNamedQuery(
                        "WeblogEntryTagAggregate.getPopularTagsByWebsiteNull");
            }
        }
        if (limit != -1) {
            query.setMaxResults(limit);
        }
        queryResults = query.getResultList();
        
        double min = Integer.MAX_VALUE;
        double max = Integer.MIN_VALUE;
        
        List results = new ArrayList(limit);
        
        for (Iterator iter = queryResults.iterator(); iter.hasNext();) {
            Object[] row = (Object[]) iter.next();
            TagStat t = new TagStat();
    //#JPAWeblogManagerImpl.java:1283: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.TagStat()
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.TagStat()
            t.setName((String) row[0]);
    //#JPAWeblogManagerImpl.java:1284: ?use of default init
    //#    init'ed(row[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    basic block: bb_12
    //#    assertion: init'ed(row[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAWeblogManagerImpl.java:1284: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.TagStat:setName(String)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.TagStat:setName(String)
            t.setCount(((Number) row[1]).intValue());
    //#JPAWeblogManagerImpl.java:1285: ?use of default init
    //#    init'ed(row[1])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    basic block: bb_12
    //#    assertion: init'ed(row[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAWeblogManagerImpl.java:1285: ?null dereference
    //#    not_init'ed(row[1])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    basic block: bb_12
    //#    assertion: not_init'ed(row[1])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#JPAWeblogManagerImpl.java:1285: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.TagStat:setCount(int)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.TagStat:setCount(int)
            
            min = Math.min(min, t.getCount());
    //#JPAWeblogManagerImpl.java:1287: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.TagStat:getCount()
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.TagStat:getCount()
            max = Math.max(max, t.getCount());
    //#JPAWeblogManagerImpl.java:1288: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.TagStat:getCount()
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.TagStat:getCount()
            results.add(t);
        }
        
        min = Math.log(1+min);
        max = Math.log(1+max);
        
        double range = Math.max(.01, max - min) * 1.0001;
        
        for (Iterator iter = results.iterator(); iter.hasNext(); ) {
            TagStat t = (TagStat) iter.next();
            t.setIntensity((int) (1 + Math.floor(5 * (Math.log(1+t.getCount()) - min) / range)));
    //#JPAWeblogManagerImpl.java:1299: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.TagStat:getCount()
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.TagStat:getCount()
    //#JPAWeblogManagerImpl.java:1299: ?divide by zero
    //#    range != +0
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    basic block: bb_15
    //#    assertion: range != +0
    //#    VN: java.lang.Math:max(...)@1295*4_504_049_987_333_233/4_503_599_627_370_496
    //#    Expected: {[-Inf..+0), (+0..+Inf]}
    //#    Bad: {[+0..+0]}
    //#    Attribs:  Rat  Bad singleton  Bad overlaps +/-1000  Uncertain
    //#JPAWeblogManagerImpl.java:1299: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.TagStat:setIntensity(int)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getPopularTags(Weblog, Date, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.TagStat:setIntensity(int)
        }
        
        // sort results by name, because query had to sort by total
        Collections.sort(results, tagStatNameComparator);
        
        return results;
    //#JPAWeblogManagerImpl.java:1305: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getPopularTags(Weblog, Date, int)
    }
    
    /**
     * @inheritDoc
     */
    public List getTags(Weblog website, String sortBy,
            String startsWith, int limit) throws WebloggerException {
        Query query = null;
    //#JPAWeblogManagerImpl.java:1313: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getTags(Weblog, String, String, int)
    //#JPAWeblogManagerImpl.java:1313: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getTags(Weblog, String, String, int)
    //#    Attribs:  Uncertain
    //#input(List getTags(Weblog, String, String, int)): " AND w.name LIKE ?"._tainted
    //#input(List getTags(Weblog, String, String, int)): " GROUP BY w.name, w.total ORDER BY "._tainted
    //#input(List getTags(Weblog, String, String, int)): " w.weblog IS NULL"._tainted
    //#input(List getTags(Weblog, String, String, int)): " w.weblog.id = ?"._tainted
    //#input(List getTags(Weblog, String, String, int)): "SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregate w WHERE "._tainted
    //#input(List getTags(Weblog, String, String, int)): "w.name"._tainted
    //#input(List getTags(Weblog, String, String, int)): "w.total DESC"._tainted
    //#input(List getTags(Weblog, String, String, int)): limit
    //#input(List getTags(Weblog, String, String, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getTags(Weblog, String, String, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getTags(Weblog, String, String, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getTags(Weblog, String, String, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getTags(Weblog, String, String, int)): sortBy
    //#input(List getTags(Weblog, String, String, int)): sortBy._tainted
    //#input(List getTags(Weblog, String, String, int)): startsWith
    //#input(List getTags(Weblog, String, String, int)): startsWith._tainted
    //#input(List getTags(Weblog, String, String, int)): tagStatCountReverseComparator
    //#input(List getTags(Weblog, String, String, int)): tagStatNameComparator
    //#input(List getTags(Weblog, String, String, int)): this
    //#input(List getTags(Weblog, String, String, int)): this.strategy
    //#input(List getTags(Weblog, String, String, int)): this.strategy.__Tag
    //#input(List getTags(Weblog, String, String, int)): this.strategy.emf
    //#input(List getTags(Weblog, String, String, int)): this.strategy.threadLocalEntityManager
    //#input(List getTags(Weblog, String, String, int)): website
    //#output(List getTags(Weblog, String, String, int)): new ArrayList(getTags#6) num objects
    //#output(List getTags(Weblog, String, String, int)): return_value
    //#new obj(List getTags(Weblog, String, String, int)): new ArrayList(getTags#6)
    //#pre[7] (List getTags(Weblog, String, String, int)): this.strategy != null
    //#pre[8] (List getTags(Weblog, String, String, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[10] (List getTags(Weblog, String, String, int)): this.strategy.threadLocalEntityManager != null
    //#pre[9] (List getTags(Weblog, String, String, int)): (soft) this.strategy.emf != null
    //#presumption(List getTags(Weblog, String, String, int)): java.util.Iterator:next(...)@1352 != null
    //#presumption(List getTags(Weblog, String, String, int)): javax.persistence.Query:getResultList(...)@1348 != null
    //#presumption(List getTags(Weblog, String, String, int)): row.length@1352 >= 2
    //#post(List getTags(Weblog, String, String, int)): return_value == &new ArrayList(getTags#6)
    //#post(List getTags(Weblog, String, String, int)): new ArrayList(getTags#6) num objects == 1
    //#unanalyzed(List getTags(Weblog, String, String, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getTags(Weblog, String, String, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getTags(Weblog, String, String, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getTags(Weblog, String, String, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getTags(Weblog, String, String, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getTags(Weblog, String, String, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getTags(Weblog, String, String, int)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(List getTags(Weblog, String, String, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getTags(Weblog, String, String, int)): limit: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getTags(Weblog, String, String, int)): sortBy: Inverse{null}, Addr_Set{null}
    //#test_vector(List getTags(Weblog, String, String, int)): startsWith: Addr_Set{null}, Inverse{null}
    //#test_vector(List getTags(Weblog, String, String, int)): website: Addr_Set{null}, Inverse{null}
    //#test_vector(List getTags(Weblog, String, String, int)): java.lang.String:equals(...)@1334: {0}, {1}
    //#test_vector(List getTags(Weblog, String, String, int)): java.lang.String:length(...)@1329: {0}, {1..4_294_967_295}
    //#test_vector(List getTags(Weblog, String, String, int)): java.util.Iterator:hasNext(...)@1351: {0}, {1}
        List queryResults = null;
    //#JPAWeblogManagerImpl.java:1314: Warning: unused assignment
    //#    unused assignment into queryResults
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getTags(Weblog, String, String, int)
    //#    Attribs:  Uncertain
        boolean sortByName = sortBy == null || !sortBy.equals("count");
                
        List params = new ArrayList();
        int size = 0;
        StringBuffer queryString = new StringBuffer();            
        queryString.append("SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregate w WHERE ");
                
        if (website != null) {
            params.add(size++, website.getId());
    //#JPAWeblogManagerImpl.java:1323: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getTags(Weblog, String, String, int)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getId()
            queryString.append(" w.weblog.id = ?").append(size);
        } else {
            queryString.append(" w.weblog IS NULL"); 
        }
                       
        if (startsWith != null && startsWith.length() > 0) {
            params.add(size++, startsWith + '%');
            queryString.append(" AND w.name LIKE ?" + size);
        }
                    
        if (sortBy != null && sortBy.equals("count")) {
            sortBy = "w.total DESC";
        } else {
            sortBy = "w.name";
        }
        queryString.append(" GROUP BY w.name, w.total ORDER BY " + sortBy);

        query = strategy.getDynamicQuery(queryString.toString());
        for (int i=0; i<params.size(); i++) {
            query.setParameter(i+1, params.get(i));
        }
        if (limit != -1) {
            query.setMaxResults(limit);
        }
        queryResults = query.getResultList();
        
        List results = new ArrayList();
        for (Iterator iter = queryResults.iterator(); iter.hasNext();) {
            Object[] row = (Object[]) iter.next();
            TagStat ce = new TagStat();
    //#JPAWeblogManagerImpl.java:1353: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.TagStat()
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getTags(Weblog, String, String, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.TagStat()
            ce.setName((String) row[0]);
    //#JPAWeblogManagerImpl.java:1354: ?use of default init
    //#    init'ed(row[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getTags(Weblog, String, String, int)
    //#    basic block: bb_22
    //#    assertion: init'ed(row[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAWeblogManagerImpl.java:1354: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.TagStat:setName(String)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getTags(Weblog, String, String, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.TagStat:setName(String)
            // The JPA query retrieves SUM(w.total) always as long
            ce.setCount(((Long) row[1]).intValue());
    //#JPAWeblogManagerImpl.java:1356: ?use of default init
    //#    init'ed(row[1])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getTags(Weblog, String, String, int)
    //#    basic block: bb_22
    //#    assertion: init'ed(row[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAWeblogManagerImpl.java:1356: ?null dereference
    //#    not_init'ed(row[1])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getTags(Weblog, String, String, int)
    //#    basic block: bb_22
    //#    assertion: not_init'ed(row[1])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#JPAWeblogManagerImpl.java:1356: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.TagStat:setCount(int)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: List getTags(Weblog, String, String, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.TagStat:setCount(int)
            results.add(ce);
        }
        
        if (sortByName) {
            Collections.sort(results, tagStatNameComparator);
        } else {
            Collections.sort(results, tagStatCountReverseComparator);
        }
        
        return results;
    //#JPAWeblogManagerImpl.java:1366: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getTags(Weblog, String, String, int)
    }
    
    
    /**
     * @inheritDoc
     */
    public boolean getTagComboExists(List tags, Weblog weblog) throws WebloggerException{
        
        if(tags == null || tags.size() == 0) {
    //#JPAWeblogManagerImpl.java:1375: method: bool org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getTagComboExists(List, Weblog)
    //#input(bool getTagComboExists(List, Weblog)): " AND w.weblog = ?"._tainted
    //#input(bool getTagComboExists(List, Weblog)): " AND w.weblog IS NULL"._tainted
    //#input(bool getTagComboExists(List, Weblog)): ", "._tainted
    //#input(bool getTagComboExists(List, Weblog)): "FROM WeblogEntryTagAggregate w WHERE w.name IN ("._tainted
    //#input(bool getTagComboExists(List, Weblog)): "SELECT DISTINCT w.name "._tainted
    //#input(bool getTagComboExists(List, Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(bool getTagComboExists(List, Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(bool getTagComboExists(List, Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(bool getTagComboExists(List, Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(bool getTagComboExists(List, Weblog)): tags
    //#input(bool getTagComboExists(List, Weblog)): this
    //#input(bool getTagComboExists(List, Weblog)): this.strategy
    //#input(bool getTagComboExists(List, Weblog)): this.strategy.__Tag
    //#input(bool getTagComboExists(List, Weblog)): this.strategy.emf
    //#input(bool getTagComboExists(List, Weblog)): this.strategy.threadLocalEntityManager
    //#input(bool getTagComboExists(List, Weblog)): weblog
    //#output(bool getTagComboExists(List, Weblog)): return_value
    //#pre[3] (bool getTagComboExists(List, Weblog)): (soft) this.strategy != null
    //#pre[4] (bool getTagComboExists(List, Weblog)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (bool getTagComboExists(List, Weblog)): (soft) this.strategy.emf != null
    //#pre[6] (bool getTagComboExists(List, Weblog)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(bool getTagComboExists(List, Weblog)): java.lang.String:length(...)@1394 - java.lang.StringBuffer:length(...)@1394 in -4_294_967_295..2_147_483_648
    //#presumption(bool getTagComboExists(List, Weblog)): java.util.List:size(...)@1385 <= 4_294_967_294
    //#presumption(bool getTagComboExists(List, Weblog)): java.util.List:size(...)@1388 <= 4_294_967_294
    //#post(bool getTagComboExists(List, Weblog)): init'ed(return_value)
    //#unanalyzed(bool getTagComboExists(List, Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(bool getTagComboExists(List, Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(bool getTagComboExists(List, Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(bool getTagComboExists(List, Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(bool getTagComboExists(List, Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(bool getTagComboExists(List, Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(bool getTagComboExists(List, Weblog)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(bool getTagComboExists(List, Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(bool getTagComboExists(List, Weblog)): tags: Addr_Set{null}, Inverse{null}
    //#test_vector(bool getTagComboExists(List, Weblog)): weblog: Addr_Set{null}, Inverse{null}
    //#test_vector(bool getTagComboExists(List, Weblog)): java.util.List:size(...)@1375: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
            return false;
        }
        
        StringBuffer queryString = new StringBuffer();
        queryString.append("SELECT DISTINCT w.name ");
        queryString.append("FROM WeblogEntryTagAggregate w WHERE w.name IN (");
        //?1) AND w.weblog = ?2");
        //Append tags as parameter markers to avoid potential escaping issues
        //The IN clause would be of form (?1, ?2, ?3, ..)
        ArrayList params = new ArrayList(tags.size() + 1);
        final String PARAM_SEPERATOR = ", ";
    //#JPAWeblogManagerImpl.java:1386: Warning: unused assignment
    //#    unused assignment into PARAM_SEPERATOR
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: bool getTagComboExists(List, Weblog)
        int i;
        for (i=0; i < tags.size(); i++) {
            queryString.append('?').append(i+1).append(PARAM_SEPERATOR);
            params.add(tags.get(i));
        }
        
        // Remove the trailing PARAM_SEPERATOR
        queryString.delete(queryString.length() - PARAM_SEPERATOR.length(),
                queryString.length());
        // Close the brace of IN clause
        queryString.append(')');
        
        if(weblog != null) {
            queryString.append(" AND w.weblog = ?").append(i+1);
            params.add(weblog);
        } else {
            queryString.append(" AND w.weblog IS NULL");
        }
        
        Query q = strategy.getDynamicQuery(queryString.toString());
        for (int j=0; j<params.size(); j++) {
            q.setParameter(j+1, params.get(j));
        }
        List results = q.getResultList();
        
        //TODO: DatamapperPort: Since we are only interested in knowing whether
        //results.size() == tags.size(). This query can be optimized to just fetch COUNT
        //instead of objects as done currently
        return (results != null && results.size() == tags.size());
    //#JPAWeblogManagerImpl.java:1415: end of method: bool org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getTagComboExists(List, Weblog)
    }
    
    /**
     * @inheritDoc
     */
    public void updateTagCount(String name, Weblog website, int amount)
    throws WebloggerException {
        if(amount == 0) {
    //#JPAWeblogManagerImpl.java:1423: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.updateTagCount(String, Weblog, int)
    //#input(void updateTagCount(String, Weblog, int)): amount
    //#input(void updateTagCount(String, Weblog, int)): name
    //#input(void updateTagCount(String, Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void updateTagCount(String, Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void updateTagCount(String, Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void updateTagCount(String, Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void updateTagCount(String, Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void updateTagCount(String, Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void updateTagCount(String, Weblog, int)): this
    //#input(void updateTagCount(String, Weblog, int)): this.strategy
    //#input(void updateTagCount(String, Weblog, int)): this.strategy.__Tag
    //#input(void updateTagCount(String, Weblog, int)): this.strategy.emf
    //#input(void updateTagCount(String, Weblog, int)): this.strategy.threadLocalEntityManager
    //#input(void updateTagCount(String, Weblog, int)): website
    //#pre[1] (void updateTagCount(String, Weblog, int)): amount != 0
    //#pre[4] (void updateTagCount(String, Weblog, int)): this.strategy != null
    //#pre[5] (void updateTagCount(String, Weblog, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (void updateTagCount(String, Weblog, int)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (void updateTagCount(String, Weblog, int)): website != null
    //#pre[6] (void updateTagCount(String, Weblog, int)): (soft) this.strategy.emf != null
    //#presumption(void updateTagCount(String, Weblog, int)): amount + org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal(...)@1464 in -2_147_483_648..4_294_967_295
    //#presumption(void updateTagCount(String, Weblog, int)): amount + org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal(...)@1484 in -2_147_483_648..4_294_967_295
    //#presumption(void updateTagCount(String, Weblog, int)): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void updateTagCount(String, Weblog, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(void updateTagCount(String, Weblog, int)): amount: {-2_147_483_648..-1}, {1..4_294_967_295}
            throw new WebloggerException("Tag increment amount cannot be zero.");
        }
        
        if(website == null) {
            throw new WebloggerException("Website cannot be NULL.");
        }
        
        // The reason why add order lastUsed desc is to make sure we keep picking the most recent
        // one in the case where we have multiple rows (clustered environment)
        // eventually that second entry will have a very low total (most likely 1) and
        // won't matter
        Query weblogQuery = strategy.getNamedQuery(
                "WeblogEntryTagAggregate.getByName&WebsiteOrderByLastUsedDesc");
        weblogQuery.setParameter(1, name);
        weblogQuery.setParameter(2, website);
        WeblogEntryTagAggregate weblogTagData;
        try {
            weblogTagData = (WeblogEntryTagAggregate)weblogQuery.getSingleResult();
        } catch (NoResultException e) {
            weblogTagData = null;
        }
        
        Query siteQuery = strategy.getNamedQuery(
                "WeblogEntryTagAggregate.getByName&WebsiteNullOrderByLastUsedDesc");
        siteQuery.setParameter(1, name);
        WeblogEntryTagAggregate siteTagData;
        try {
            siteTagData = (WeblogEntryTagAggregate)siteQuery.getSingleResult();
        } catch (NoResultException e) {
            siteTagData = null;
        }
        Timestamp lastUsed = new Timestamp((new Date()).getTime());
        
        // create it only if we are going to need it.
        if (weblogTagData == null && amount > 0) {
            weblogTagData = new WeblogEntryTagAggregate(null, website, name, amount);
    //#JPAWeblogManagerImpl.java:1459: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate(String, Weblog, String, int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate(String, Weblog, String, int)
            weblogTagData.setLastUsed(lastUsed);
    //#JPAWeblogManagerImpl.java:1460: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed(Timestamp)
            strategy.store(weblogTagData);
            
        } else if (weblogTagData != null) {
            weblogTagData.setTotal(weblogTagData.getTotal() + amount);
    //#JPAWeblogManagerImpl.java:1464: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal()
    //#JPAWeblogManagerImpl.java:1464: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setTotal(int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setTotal(int)
            weblogTagData.setLastUsed(lastUsed);
    //#JPAWeblogManagerImpl.java:1465: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed(Timestamp)
            strategy.store(weblogTagData);
            // Why use update query when only one object needs update?
//            Query update = strategy.getNamedUpdate(
//                    "WeblogEntryTagAggregate.updateAddToTotalByName&Weblog");
//            update.setParameter(1, new Long(amount));
//            update.setParameter(2, lastUsed);
//            update.setParameter(3, weblogTagData.getName());
//            update.setParameter(4, website);
//            update.executeUpdate();
        }
        
        // create it only if we are going to need it.
        if (siteTagData == null && amount > 0) {
            siteTagData = new WeblogEntryTagAggregate(null, null, name, amount);
    //#JPAWeblogManagerImpl.java:1479: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate(String, Weblog, String, int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate(String, Weblog, String, int)
            siteTagData.setLastUsed(lastUsed);
    //#JPAWeblogManagerImpl.java:1480: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed(Timestamp)
            strategy.store(siteTagData);
            
        } else if(siteTagData != null) {
            siteTagData.setTotal(siteTagData.getTotal() + amount);
    //#JPAWeblogManagerImpl.java:1484: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal()
    //#JPAWeblogManagerImpl.java:1484: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setTotal(int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setTotal(int)
            siteTagData.setLastUsed(lastUsed);
    //#JPAWeblogManagerImpl.java:1485: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void updateTagCount(String, Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed(Timestamp)
            strategy.store(siteTagData);
            // Why use update query when only one object needs update?
//            Query update = strategy.getNamedUpdate(
//                    "WeblogEntryTagAggregate.updateAddToTotalByName&WeblogNull");
//            update.setParameter(1, new Long(amount));
//            update.setParameter(2, siteTagData.getName());
//            update.executeUpdate();
        }
        
        // delete all bad counts
        Query removeq = strategy.getNamedUpdate(
                "WeblogEntryTagAggregate.removeByTotalLessEqual");
        removeq.setParameter(1, new Integer(0));
        removeq.executeUpdate();
    }
    //#JPAWeblogManagerImpl.java:1500: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.updateTagCount(String, Weblog, int)
    
    /**
     * @inheritDoc
     */
    public WeblogHitCount getHitCount(String id) throws WebloggerException {
        
        // do lookup
        return (WeblogHitCount) strategy.load(WeblogHitCount.class, id);
    //#JPAWeblogManagerImpl.java:1508: method: WeblogHitCount org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getHitCount(String)
    //#input(WeblogHitCount getHitCount(String)): id
    //#input(WeblogHitCount getHitCount(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogHitCount getHitCount(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogHitCount getHitCount(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(WeblogHitCount getHitCount(String)): this
    //#input(WeblogHitCount getHitCount(String)): this.strategy
    //#input(WeblogHitCount getHitCount(String)): this.strategy.__Tag
    //#input(WeblogHitCount getHitCount(String)): this.strategy.emf
    //#input(WeblogHitCount getHitCount(String)): this.strategy.threadLocalEntityManager
    //#output(WeblogHitCount getHitCount(String)): return_value
    //#pre[3] (WeblogHitCount getHitCount(String)): this.strategy != null
    //#pre[4] (WeblogHitCount getHitCount(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (WeblogHitCount getHitCount(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (WeblogHitCount getHitCount(String)): (soft) this.strategy.emf != null
    //#post(WeblogHitCount getHitCount(String)): init'ed(return_value)
    //#unanalyzed(WeblogHitCount getHitCount(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogHitCount getHitCount(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogHitCount getHitCount(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogHitCount getHitCount(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogHitCount getHitCount(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogHitCount getHitCount(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogHitCount getHitCount(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#JPAWeblogManagerImpl.java:1508: end of method: WeblogHitCount org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getHitCount(String)
    }
    
    /**
     * @inheritDoc
     */
    public WeblogHitCount getHitCountByWeblog(Weblog weblog)
    throws WebloggerException {
        Query q = strategy.getNamedQuery("WeblogHitCount.getByWeblog");
    //#JPAWeblogManagerImpl.java:1516: method: WeblogHitCount org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getHitCountByWeblog(Weblog)
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): this
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): this.strategy
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): this.strategy.__Tag
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): this.strategy.emf
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): this.strategy.threadLocalEntityManager
    //#input(WeblogHitCount getHitCountByWeblog(Weblog)): weblog
    //#output(WeblogHitCount getHitCountByWeblog(Weblog)): return_value
    //#pre[2] (WeblogHitCount getHitCountByWeblog(Weblog)): this.strategy != null
    //#pre[3] (WeblogHitCount getHitCountByWeblog(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (WeblogHitCount getHitCountByWeblog(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (WeblogHitCount getHitCountByWeblog(Weblog)): (soft) this.strategy.emf != null
    //#post(WeblogHitCount getHitCountByWeblog(Weblog)): init'ed(return_value)
    //#unanalyzed(WeblogHitCount getHitCountByWeblog(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogHitCount getHitCountByWeblog(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogHitCount getHitCountByWeblog(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogHitCount getHitCountByWeblog(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogHitCount getHitCountByWeblog(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogHitCount getHitCountByWeblog(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogHitCount getHitCountByWeblog(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(WeblogHitCount getHitCountByWeblog(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
        q.setParameter(1, weblog);
        try {
            return (WeblogHitCount)q.getSingleResult();
        } catch (NoResultException e) {
            return null;
    //#JPAWeblogManagerImpl.java:1521: end of method: WeblogHitCount org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getHitCountByWeblog(Weblog)
        }
    }
    
    /**
     * @inheritDoc
     */
    public List getHotWeblogs(int sinceDays, int offset, int length)
    throws WebloggerException {
        
        // figure out start date
        Calendar cal = Calendar.getInstance();
    //#JPAWeblogManagerImpl.java:1532: method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getHotWeblogs(int, int, int)
    //#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)): 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)): return_value
    //#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)): java.util.Calendar:getInstance(...)@1532 != null
    //#post(List getHotWeblogs(int, int, int)): init'ed(return_value)
    //#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.Query:setFlushMode
    //#unanalyzed(List getHotWeblogs(int, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(List getHotWeblogs(int, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getHotWeblogs(int, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
        cal.setTime(new Date());
        cal.add(Calendar.DATE, -1 * sinceDays);
        Date startDate = cal.getTime();
        
        Query query = strategy.getNamedQuery(
                "WeblogHitCount.getByWeblogEnabledTrueAndActiveTrue&DailyHitsGreaterThenZero&WeblogLastModifiedGreaterOrderByDailyHitsDesc");
        query.setParameter(1, startDate);
        
        // Was commented out due to https://glassfish.dev.java.net/issues/show_bug.cgi?id=2084
        // TODO: determine if this is still an issue. Is it a problem with other JPA implementations?
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }        
        return query.getResultList();
    //#JPAWeblogManagerImpl.java:1549: end of method: List org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getHotWeblogs(int, int, int)
    }
    
    
    /**
     * @inheritDoc
     */
    public void saveHitCount(WeblogHitCount hitCount) throws WebloggerException {
        this.strategy.store(hitCount);
    //#JPAWeblogManagerImpl.java:1557: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.saveHitCount(WeblogHitCount)
    //#input(void saveHitCount(WeblogHitCount)): hitCount
    //#input(void saveHitCount(WeblogHitCount)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveHitCount(WeblogHitCount)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveHitCount(WeblogHitCount)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveHitCount(WeblogHitCount)): this
    //#input(void saveHitCount(WeblogHitCount)): this.strategy
    //#input(void saveHitCount(WeblogHitCount)): this.strategy.__Tag
    //#input(void saveHitCount(WeblogHitCount)): this.strategy.emf
    //#input(void saveHitCount(WeblogHitCount)): this.strategy.threadLocalEntityManager
    //#pre[3] (void saveHitCount(WeblogHitCount)): this.strategy != null
    //#pre[4] (void saveHitCount(WeblogHitCount)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void saveHitCount(WeblogHitCount)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void saveHitCount(WeblogHitCount)): (soft) this.strategy.emf != null
    //#unanalyzed(void saveHitCount(WeblogHitCount)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveHitCount(WeblogHitCount)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityManager:persist
    }
    //#JPAWeblogManagerImpl.java:1558: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.saveHitCount(WeblogHitCount)
    
    
    /**
     * @inheritDoc
     */
    public void removeHitCount(WeblogHitCount hitCount) throws WebloggerException {
        this.strategy.remove(hitCount);
    //#JPAWeblogManagerImpl.java:1565: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeHitCount(WeblogHitCount)
    //#input(void removeHitCount(WeblogHitCount)): hitCount
    //#input(void removeHitCount(WeblogHitCount)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeHitCount(WeblogHitCount)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeHitCount(WeblogHitCount)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeHitCount(WeblogHitCount)): this
    //#input(void removeHitCount(WeblogHitCount)): this.strategy
    //#input(void removeHitCount(WeblogHitCount)): this.strategy.__Tag
    //#input(void removeHitCount(WeblogHitCount)): this.strategy.emf
    //#input(void removeHitCount(WeblogHitCount)): this.strategy.threadLocalEntityManager
    //#pre[3] (void removeHitCount(WeblogHitCount)): this.strategy != null
    //#pre[4] (void removeHitCount(WeblogHitCount)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void removeHitCount(WeblogHitCount)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void removeHitCount(WeblogHitCount)): (soft) this.strategy.emf != null
    //#unanalyzed(void removeHitCount(WeblogHitCount)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeHitCount(WeblogHitCount)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeHitCount(WeblogHitCount)): Effects-of-calling:javax.persistence.EntityManager:remove
    }
    //#JPAWeblogManagerImpl.java:1566: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.removeHitCount(WeblogHitCount)
    
    
    /**
     * @inheritDoc
     */
    public void incrementHitCount(Weblog weblog, int amount)
    throws WebloggerException {
        
        if(amount == 0) {
    //#JPAWeblogManagerImpl.java:1575: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.incrementHitCount(Weblog, int)
    //#input(void incrementHitCount(Weblog, int)): amount
    //#input(void incrementHitCount(Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void incrementHitCount(Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void incrementHitCount(Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void incrementHitCount(Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void incrementHitCount(Weblog, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void incrementHitCount(Weblog, int)): this
    //#input(void incrementHitCount(Weblog, int)): this.strategy
    //#input(void incrementHitCount(Weblog, int)): this.strategy.__Tag
    //#input(void incrementHitCount(Weblog, int)): this.strategy.emf
    //#input(void incrementHitCount(Weblog, int)): this.strategy.threadLocalEntityManager
    //#input(void incrementHitCount(Weblog, int)): weblog
    //#pre[1] (void incrementHitCount(Weblog, int)): amount != 0
    //#pre[3] (void incrementHitCount(Weblog, int)): this.strategy != null
    //#pre[4] (void incrementHitCount(Weblog, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void incrementHitCount(Weblog, int)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (void incrementHitCount(Weblog, int)): weblog != null
    //#pre[5] (void incrementHitCount(Weblog, int)): (soft) this.strategy.emf != null
    //#presumption(void incrementHitCount(Weblog, int)): amount + org.apache.roller.weblogger.pojos.WeblogHitCount:getDailyHits(...)@1599 in -2_147_483_648..4_294_967_295
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void incrementHitCount(Weblog, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(void incrementHitCount(Weblog, int)): amount: {-2_147_483_648..-1}, {1..4_294_967_295}
            throw new WebloggerException("Tag increment amount cannot be zero.");
        }
        
        if(weblog == null) {
            throw new WebloggerException("Website cannot be NULL.");
        }
        
        Query q = strategy.getNamedQuery("WeblogHitCount.getByWeblog");
        q.setParameter(1, weblog);
        WeblogHitCount hitCount = null;
    //#JPAWeblogManagerImpl.java:1585: Warning: unused assignment
    //#    unused assignment into hitCount
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void incrementHitCount(Weblog, int)
    //#    Attribs:  Uncertain
        try {
            hitCount = (WeblogHitCount)q.getSingleResult();
        } catch (NoResultException e) {
            hitCount = null;
        }
        
        // create it if it doesn't exist
        if(hitCount == null && amount > 0) {
            hitCount = new WeblogHitCount();
    //#JPAWeblogManagerImpl.java:1594: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogHitCount()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void incrementHitCount(Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogHitCount()
            hitCount.setWeblog(weblog);
    //#JPAWeblogManagerImpl.java:1595: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogHitCount:setWeblog(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void incrementHitCount(Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogHitCount:setWeblog(Weblog)
            hitCount.setDailyHits(amount);
    //#JPAWeblogManagerImpl.java:1596: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogHitCount:setDailyHits(int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void incrementHitCount(Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogHitCount:setDailyHits(int)
            strategy.store(hitCount);
        } else if(hitCount != null) {
            hitCount.setDailyHits(hitCount.getDailyHits() + amount);
    //#JPAWeblogManagerImpl.java:1599: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.WeblogHitCount:getDailyHits()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void incrementHitCount(Weblog, int)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.WeblogHitCount:getDailyHits()
    //#JPAWeblogManagerImpl.java:1599: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogHitCount:setDailyHits(int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void incrementHitCount(Weblog, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogHitCount:setDailyHits(int)
            strategy.store(hitCount);
        }
    }
    //#JPAWeblogManagerImpl.java:1602: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.incrementHitCount(Weblog, int)
    
    /**
     * @inheritDoc
     */
    public void resetAllHitCounts() throws WebloggerException {       
        Query q = strategy.getNamedUpdate("WeblogHitCount.updateDailyHitCountZero");
    //#JPAWeblogManagerImpl.java:1608: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.resetAllHitCounts()
    //#input(void resetAllHitCounts()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void resetAllHitCounts()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void resetAllHitCounts()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void resetAllHitCounts()): this
    //#input(void resetAllHitCounts()): this.strategy
    //#input(void resetAllHitCounts()): this.strategy.__Tag
    //#input(void resetAllHitCounts()): this.strategy.emf
    //#input(void resetAllHitCounts()): this.strategy.threadLocalEntityManager
    //#pre[2] (void resetAllHitCounts()): this.strategy != null
    //#pre[3] (void resetAllHitCounts()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void resetAllHitCounts()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (void resetAllHitCounts()): (soft) this.strategy.emf != null
    //#presumption(void resetAllHitCounts()): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#unanalyzed(void resetAllHitCounts()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void resetAllHitCounts()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void resetAllHitCounts()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void resetAllHitCounts()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void resetAllHitCounts()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void resetAllHitCounts()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void resetAllHitCounts()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
        q.executeUpdate();
    }
    //#JPAWeblogManagerImpl.java:1610: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.resetAllHitCounts()
    
    /**
     * @inheritDoc
     */
    public void resetHitCount(Weblog weblog) throws WebloggerException {
        Query q = strategy.getNamedQuery("WeblogHitCount.getByWeblog");
    //#JPAWeblogManagerImpl.java:1616: method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.resetHitCount(Weblog)
    //#input(void resetHitCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void resetHitCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void resetHitCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void resetHitCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void resetHitCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void resetHitCount(Weblog)): this
    //#input(void resetHitCount(Weblog)): this.strategy
    //#input(void resetHitCount(Weblog)): this.strategy.__Tag
    //#input(void resetHitCount(Weblog)): this.strategy.emf
    //#input(void resetHitCount(Weblog)): this.strategy.threadLocalEntityManager
    //#input(void resetHitCount(Weblog)): weblog
    //#pre[2] (void resetHitCount(Weblog)): this.strategy != null
    //#pre[3] (void resetHitCount(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void resetHitCount(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (void resetHitCount(Weblog)): (soft) this.strategy.emf != null
    //#presumption(void resetHitCount(Weblog)): javax.persistence.Query:getSingleResult(...)@1620 != null
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void resetHitCount(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
        q.setParameter(1, weblog);
        WeblogHitCount hitCount = null;
    //#JPAWeblogManagerImpl.java:1618: Warning: unused assignment
    //#    unused assignment into hitCount
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void resetHitCount(Weblog)
    //#    Attribs:  Uncertain
        try {
            hitCount = (WeblogHitCount)q.getSingleResult();
            hitCount.setDailyHits(0);
    //#JPAWeblogManagerImpl.java:1621: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogHitCount:setDailyHits(int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
    //#    method: void resetHitCount(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogHitCount:setDailyHits(int)
            strategy.store(hitCount);
        } catch (NoResultException e) {
            // ignore: no hit count for weblog
        }       

    }
    //#JPAWeblogManagerImpl.java:1627: end of method: void org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.resetHitCount(Weblog)
    
    /**
     * @inheritDoc
     */
    public long getCommentCount() throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPAWeblogManagerImpl.java:1633: method: long org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getCommentCount()
    //#input(long getCommentCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(long getCommentCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(long getCommentCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(long getCommentCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(long getCommentCount()): this
    //#input(long getCommentCount()): this.strategy
    //#input(long getCommentCount()): this.strategy.__Tag
    //#input(long getCommentCount()): this.strategy.emf
    //#input(long getCommentCount()): this.strategy.threadLocalEntityManager
    //#output(long getCommentCount()): return_value
    //#pre[2] (long getCommentCount()): this.strategy != null
    //#pre[3] (long getCommentCount()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (long getCommentCount()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (long getCommentCount()): (soft) this.strategy.emf != null
    //#presumption(long getCommentCount()): java.util.List:get(...)@1637 != null
    //#presumption(long getCommentCount()): javax.persistence.Query:getResultList(...)@1636 != null
    //#post(long getCommentCount()): init'ed(return_value)
    //#unanalyzed(long getCommentCount()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(long getCommentCount()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(long getCommentCount()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(long getCommentCount()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(long getCommentCount()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(long getCommentCount()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(long getCommentCount()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(long getCommentCount()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
                "WeblogEntryComment.getCountAllDistinctByStatus");
        q.setParameter(1, WeblogEntryComment.APPROVED);
        List results = q.getResultList();
        return ((Long)results.get(0)).longValue();
    //#JPAWeblogManagerImpl.java:1637: end of method: long org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getCommentCount()
    }
    
    /**
     * @inheritDoc
     */
    public long getCommentCount(Weblog website) throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPAWeblogManagerImpl.java:1644: method: long org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getCommentCount(Weblog)
    //#input(long getCommentCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(long getCommentCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(long getCommentCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(long getCommentCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(long getCommentCount(Weblog)): this
    //#input(long getCommentCount(Weblog)): this.strategy
    //#input(long getCommentCount(Weblog)): this.strategy.__Tag
    //#input(long getCommentCount(Weblog)): this.strategy.emf
    //#input(long getCommentCount(Weblog)): this.strategy.threadLocalEntityManager
    //#input(long getCommentCount(Weblog)): website
    //#output(long getCommentCount(Weblog)): return_value
    //#pre[2] (long getCommentCount(Weblog)): this.strategy != null
    //#pre[3] (long getCommentCount(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (long getCommentCount(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (long getCommentCount(Weblog)): (soft) this.strategy.emf != null
    //#presumption(long getCommentCount(Weblog)): java.util.List:get(...)@1649 != null
    //#presumption(long getCommentCount(Weblog)): javax.persistence.Query:getResultList(...)@1648 != null
    //#post(long getCommentCount(Weblog)): init'ed(return_value)
    //#unanalyzed(long getCommentCount(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(long getCommentCount(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(long getCommentCount(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(long getCommentCount(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(long getCommentCount(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(long getCommentCount(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(long getCommentCount(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(long getCommentCount(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
                "WeblogEntryComment.getCountDistinctByWebsite&Status");
        q.setParameter(1, website);
        q.setParameter(2, WeblogEntryComment.APPROVED);
        List results = q.getResultList();
        return ((Long)results.get(0)).longValue();
    //#JPAWeblogManagerImpl.java:1649: end of method: long org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getCommentCount(Weblog)
    }
    
    /**
     * @inheritDoc
     */
    public long getEntryCount() throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPAWeblogManagerImpl.java:1656: method: long org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getEntryCount()
    //#input(long getEntryCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(long getEntryCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(long getEntryCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(long getEntryCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(long getEntryCount()): this
    //#input(long getEntryCount()): this.strategy
    //#input(long getEntryCount()): this.strategy.__Tag
    //#input(long getEntryCount()): this.strategy.emf
    //#input(long getEntryCount()): this.strategy.threadLocalEntityManager
    //#output(long getEntryCount()): return_value
    //#pre[2] (long getEntryCount()): this.strategy != null
    //#pre[3] (long getEntryCount()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (long getEntryCount()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (long getEntryCount()): (soft) this.strategy.emf != null
    //#presumption(long getEntryCount()): java.util.List:get(...)@1660 != null
    //#presumption(long getEntryCount()): javax.persistence.Query:getResultList(...)@1659 != null
    //#post(long getEntryCount()): init'ed(return_value)
    //#unanalyzed(long getEntryCount()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(long getEntryCount()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(long getEntryCount()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(long getEntryCount()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(long getEntryCount()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(long getEntryCount()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(long getEntryCount()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(long getEntryCount()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
                "WeblogEntry.getCountDistinctByStatus");
        q.setParameter(1, "PUBLISHED");
        List results = q.getResultList();
        return ((Long)results.get(0)).longValue();
    //#JPAWeblogManagerImpl.java:1660: end of method: long org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getEntryCount()
    }
    
    /**
     * @inheritDoc
     */
    public long getEntryCount(Weblog website) throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPAWeblogManagerImpl.java:1667: method: long org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getEntryCount(Weblog)
    //#input(long getEntryCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(long getEntryCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(long getEntryCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(long getEntryCount(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(long getEntryCount(Weblog)): this
    //#input(long getEntryCount(Weblog)): this.strategy
    //#input(long getEntryCount(Weblog)): this.strategy.__Tag
    //#input(long getEntryCount(Weblog)): this.strategy.emf
    //#input(long getEntryCount(Weblog)): this.strategy.threadLocalEntityManager
    //#input(long getEntryCount(Weblog)): website
    //#output(long getEntryCount(Weblog)): return_value
    //#pre[2] (long getEntryCount(Weblog)): this.strategy != null
    //#pre[3] (long getEntryCount(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (long getEntryCount(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (long getEntryCount(Weblog)): (soft) this.strategy.emf != null
    //#presumption(long getEntryCount(Weblog)): java.util.List:get(...)@1672 != null
    //#presumption(long getEntryCount(Weblog)): javax.persistence.Query:getResultList(...)@1671 != null
    //#post(long getEntryCount(Weblog)): init'ed(return_value)
    //#unanalyzed(long getEntryCount(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(long getEntryCount(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(long getEntryCount(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(long getEntryCount(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(long getEntryCount(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(long getEntryCount(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(long getEntryCount(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(long getEntryCount(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
                "WeblogEntry.getCountDistinctByStatus&Website");
        q.setParameter(1, "PUBLISHED");
        q.setParameter(2, website);
        List results = q.getResultList();
        return ((Long)results.get(0)).longValue();
    //#JPAWeblogManagerImpl.java:1672: end of method: long org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.getEntryCount(Weblog)
    }
    
    /**
     * Appends given expression to given whereClause. If whereClause already
     * has other conditions, an " AND " is also appended before appending
     * the expression
     * @param whereClause The given where Clauuse
     * @param expression The given expression
     * @return the whereClause.
     */
    private static StringBuffer appendConjuctionToWhereclause(StringBuffer whereClause,
            String expression) {
        if(whereClause.length() != 0 && expression.length() != 0) {
    //#JPAWeblogManagerImpl.java:1685: method: StringBuffer org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.appendConjuctionToWhereclause(StringBuffer, String)
    //#input(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): " AND "._tainted
    //#input(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): expression
    //#input(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): expression._tainted
    //#input(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): whereClause
    //#input(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): whereClause._tainted
    //#output(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): return_value
    //#output(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): whereClause._tainted
    //#pre[4] (StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): whereClause != null
    //#pre[1] (StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): (soft) expression != null
    //#post(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): return_value == whereClause
    //#post(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): return_value != null
    //#post(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): whereClause._tainted == old whereClause._tainted | One-of{expression._tainted, old whereClause._tainted}
    //#post(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): init'ed(whereClause._tainted)
    //#test_vector(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): java.lang.String:length(...)@1685: {0}, {1..4_294_967_295}
    //#test_vector(StringBuffer appendConjuctionToWhereclause(StringBuffer, String)): java.lang.StringBuffer:length(...)@1685: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
            whereClause.append(" AND ");
        }
        return whereClause.append(expression);
    //#JPAWeblogManagerImpl.java:1688: end of method: StringBuffer org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl.appendConjuctionToWhereclause(StringBuffer, String)
    }
    
}
    //#JPAWeblogManagerImpl.java:: end of class: org.apache.roller.weblogger.business.jpa.JPAWeblogManagerImpl
