//# 11 errors, 2,385 messages
//#

    //#JPAUserManagerImpl.java:1:1: class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  The ASF licenses this file to You
 * under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.  For additional information regarding
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */
package org.apache.roller.weblogger.business.jpa;

import java.sql.Timestamp;
import javax.persistence.NoResultException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.BookmarkManager;
import org.apache.roller.weblogger.business.UserManager;
import org.apache.roller.weblogger.business.WeblogManager;
import org.apache.roller.weblogger.business.pings.AutoPingManager;
import org.apache.roller.weblogger.business.pings.PingTargetManager;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.pojos.*;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Collection;
import java.util.Comparator;
import javax.persistence.Query;
import org.apache.roller.weblogger.business.FileManager;
import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.business.WebloggerFactory;

/*
 * JPAUserManagerImpl.java
 *
 * Created on May 29, 2006, 3:15 PM
 *
 */
@com.google.inject.Singleton
public class JPAUserManagerImpl implements UserManager {
    
    /** The logger instance for this class. */
    private static Log log = LogFactory.getLog(JPAUserManagerImpl.class);
    //#JPAUserManagerImpl.java:60: method: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init
    //#JPAUserManagerImpl.java:60: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.addUser(Lorg/apache/roller/weblogger/pojos/User;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.addWeblogContents(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.addWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getAllPermissions(Lorg/apache/roller/weblogger/pojos/User;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getAllPermissions(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getMostCommentedWebsites(Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPage(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPageByAction(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPageByLink(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPageByName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPages(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPendingPermissions(Lorg/apache/roller/weblogger/pojos/User;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPendingPermissions(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPermissions(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogPermission;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPermissions(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;)Lorg/apache/roller/weblogger/pojos/WeblogPermission;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUser(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserByActivationCode(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserByUserName(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserByUserName(Ljava/lang/String;Ljava/lang/Boolean;)Lorg/apache/roller/weblogger/pojos/User;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserCount()J
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserNameLetterMap()Ljava/util/Map;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsers(II)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsers(Ljava/lang/Boolean;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/Boolean;II)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/Boolean;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsersByLetter(CII)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsersStartingWith(Ljava/lang/String;Ljava/lang/Boolean;II)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWeblogCount()J
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWeblogHandleLetterMap()Ljava/util/Map;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWeblogsByLetter(CII)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWebsite(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWebsiteByHandle(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWebsiteByHandle(Ljava/lang/String;Ljava/lang/Boolean;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWebsites(Lorg/apache/roller/weblogger/pojos/User;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.inviteUser(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;S)Lorg/apache/roller/weblogger/pojos/WeblogPermission;
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.release()V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removePage(Lorg/apache/roller/weblogger/pojos/WeblogTemplate;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removePermissions(Lorg/apache/roller/weblogger/pojos/WeblogPermission;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removeUser(Lorg/apache/roller/weblogger/pojos/User;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removeWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removeWebsiteContents(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.retireUser(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.revokeRole(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/User;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.savePage(Lorg/apache/roller/weblogger/pojos/WeblogTemplate;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.savePermissions(Lorg/apache/roller/weblogger/pojos/WeblogPermission;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.saveUser(Lorg/apache/roller/weblogger/pojos/User;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.updateTagAggregates(Ljava/util/List;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): log
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#output(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): statCountCountReverseComparator
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.addUser(Lorg/apache/roller/weblogger/pojos/User;)V == &addUser
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.addWeblogContents(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &addWeblogContents
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.addWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &addWebsite
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getAllPermissions(Lorg/apache/roller/weblogger/pojos/User;)Ljava/util/List; == &getAllPermissions
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getAllPermissions(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List; == &getAllPermissions
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getMostCommentedWebsites(Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List; == &getMostCommentedWebsites
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPage(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate; == &getPage
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPageByAction(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate; == &getPageByAction
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPageByLink(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate; == &getPageByLink
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPageByName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate; == &getPageByName
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPages(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List; == &getPages
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPendingPermissions(Lorg/apache/roller/weblogger/pojos/User;)Ljava/util/List; == &getPendingPermissions
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPendingPermissions(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List; == &getPendingPermissions
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPermissions(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogPermission; == &getPermissions
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getPermissions(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;)Lorg/apache/roller/weblogger/pojos/WeblogPermission; == &getPermissions
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUser(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User; == &getUser
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserByActivationCode(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User; == &getUserByActivationCode
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserByUserName(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User; == &getUserByUserName
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserByUserName(Ljava/lang/String;Ljava/lang/Boolean;)Lorg/apache/roller/weblogger/pojos/User; == &getUserByUserName
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserCount()J == &getUserCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUserNameLetterMap()Ljava/util/Map; == &getUserNameLetterMap
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsers(II)Ljava/util/List; == &getUsers
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsers(Ljava/lang/Boolean;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List; == &getUsers
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/Boolean;II)Ljava/util/List; == &getUsers
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/Boolean;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List; == &getUsers
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsersByLetter(CII)Ljava/util/List; == &getUsersByLetter
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getUsersStartingWith(Ljava/lang/String;Ljava/lang/Boolean;II)Ljava/util/List; == &getUsersStartingWith
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWeblogCount()J == &getWeblogCount
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWeblogHandleLetterMap()Ljava/util/Map; == &getWeblogHandleLetterMap
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWeblogsByLetter(CII)Ljava/util/List; == &getWeblogsByLetter
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWebsite(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog; == &getWebsite
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWebsiteByHandle(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog; == &getWebsiteByHandle
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWebsiteByHandle(Ljava/lang/String;Ljava/lang/Boolean;)Lorg/apache/roller/weblogger/pojos/Weblog; == &getWebsiteByHandle
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.getWebsites(Lorg/apache/roller/weblogger/pojos/User;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List; == &getWebsites
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.inviteUser(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;S)Lorg/apache/roller/weblogger/pojos/WeblogPermission; == &inviteUser
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.release()V == &release
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removePage(Lorg/apache/roller/weblogger/pojos/WeblogTemplate;)V == &removePage
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removePermissions(Lorg/apache/roller/weblogger/pojos/WeblogPermission;)V == &removePermissions
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removeUser(Lorg/apache/roller/weblogger/pojos/User;)V == &removeUser
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removeWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &removeWebsite
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.removeWebsiteContents(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &removeWebsiteContents
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.retireUser(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/User;)V == &retireUser
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.revokeRole(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/User;)V == &revokeRole
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.savePage(Lorg/apache/roller/weblogger/pojos/WeblogTemplate;)V == &savePage
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.savePermissions(Lorg/apache/roller/weblogger/pojos/WeblogPermission;)V == &savePermissions
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.saveUser(Lorg/apache/roller/weblogger/pojos/User;)V == &saveUser
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &saveWebsite
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): __Dispatch_Table.updateTagAggregates(Ljava/util/List;)V == &updateTagAggregates
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): init'ed(log)
    //#post(org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init): init'ed(statCountCountReverseComparator)
    
    private static final Comparator statCountCountReverseComparator =
    //#JPAUserManagerImpl.java:62: Warning: method not available
    //#    -- call on StatCountCountComparator org.apache.roller.weblogger.pojos.StatCountCountComparator:getInstance()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init
    //#    unanalyzed callee: StatCountCountComparator org.apache.roller.weblogger.pojos.StatCountCountComparator:getInstance()
    //#JPAUserManagerImpl.java:62: end of method: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl__static_init
            Collections.reverseOrder(StatCountCountComparator.getInstance());
    
    private final Weblogger roller;
    private final JPAPersistenceStrategy strategy;
    
    // cached mapping of weblogHandles -> weblogIds
    private Map weblogHandleToIdMap = new Hashtable();
    
    // cached mapping of userNames -> userIds
    private Map userNameToIdMap = new Hashtable();
    
    
    @com.google.inject.Inject
    protected JPAUserManagerImpl(Weblogger roller, JPAPersistenceStrategy strat) {
    //#JPAUserManagerImpl.java:76: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)
    //#input(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): log
    //#input(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): roller
    //#input(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): strat
    //#input(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): this
    //#output(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): new Hashtable(JPAUserManagerImpl#1) num objects
    //#output(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): new Hashtable(JPAUserManagerImpl#2) num objects
    //#output(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller
    //#output(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy
    //#output(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): this.userNameToIdMap
    //#output(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): this.weblogHandleToIdMap
    //#new obj(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): new Hashtable(JPAUserManagerImpl#1)
    //#new obj(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): new Hashtable(JPAUserManagerImpl#2)
    //#pre[1] (void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): log != null
    //#post(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): this.roller == roller
    //#post(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.roller)
    //#post(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): this.strategy == strat
    //#post(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): init'ed(this.strategy)
    //#post(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): this.userNameToIdMap == &new Hashtable(JPAUserManagerImpl#2)
    //#post(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): this.weblogHandleToIdMap == &new Hashtable(JPAUserManagerImpl#1)
    //#post(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): new Hashtable(JPAUserManagerImpl#1) num objects == 1
    //#post(void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)): new Hashtable(JPAUserManagerImpl#2) num objects == 1
        log.debug("Instantiating JPA User Manager");
    //#JPAUserManagerImpl.java:77: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        this.roller = roller;
        this.strategy = strat;
    }
    //#JPAUserManagerImpl.java:80: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl(Weblogger, JPAPersistenceStrategy)
    
    /**
     * Update existing website.
     */
    public void saveWebsite(Weblog website) throws WebloggerException {
        
        website.setLastModified(new java.util.Date());
    //#JPAUserManagerImpl.java:87: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.saveWebsite(Weblog)
    //#JPAUserManagerImpl.java:87: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.Weblog:setLastModified(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void saveWebsite(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.Weblog:setLastModified(Date)
    //#input(void saveWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveWebsite(Weblog)): this
    //#input(void saveWebsite(Weblog)): this.strategy
    //#input(void saveWebsite(Weblog)): this.strategy.__Tag
    //#input(void saveWebsite(Weblog)): this.strategy.emf
    //#input(void saveWebsite(Weblog)): this.strategy.threadLocalEntityManager
    //#input(void saveWebsite(Weblog)): website
    //#pre[2] (void saveWebsite(Weblog)): this.strategy != null
    //#pre[3] (void saveWebsite(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void saveWebsite(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (void saveWebsite(Weblog)): website != null
    //#pre[4] (void saveWebsite(Weblog)): (soft) this.strategy.emf != null
    //#unanalyzed(void saveWebsite(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveWebsite(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:persist
        strategy.store(website);
    }
    //#JPAUserManagerImpl.java:89: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.saveWebsite(Weblog)
    
    public void removeWebsite(Weblog weblog) throws WebloggerException {
        
        // remove contents first, then remove website
        this.removeWebsiteContents(weblog);
    //#JPAUserManagerImpl.java:94: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removeWebsite(Weblog)
    //#JPAUserManagerImpl.java:94: Warning: call too complex - analysis skipped
    //#    -- call on void removeWebsiteContents(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeWebsite(Weblog)
    //#    unanalyzed callee: void removeWebsiteContents(Weblog)
    //#input(void removeWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeWebsite(Weblog)): this
    //#input(void removeWebsite(Weblog)): this.strategy
    //#input(void removeWebsite(Weblog)): this.strategy.__Tag
    //#input(void removeWebsite(Weblog)): this.strategy.emf
    //#input(void removeWebsite(Weblog)): this.strategy.threadLocalEntityManager
    //#input(void removeWebsite(Weblog)): this.weblogHandleToIdMap
    //#input(void removeWebsite(Weblog)): weblog
    //#pre[5] (void removeWebsite(Weblog)): this.strategy != null
    //#pre[6] (void removeWebsite(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (void removeWebsite(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[9] (void removeWebsite(Weblog)): this.weblogHandleToIdMap != null
    //#pre[10] (void removeWebsite(Weblog)): weblog != null
    //#pre[7] (void removeWebsite(Weblog)): (soft) this.strategy.emf != null
    //#unanalyzed(void removeWebsite(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeWebsite(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:remove
        this.strategy.remove(weblog);
        
        // remove entry from cache mapping
        this.weblogHandleToIdMap.remove(weblog.getHandle());
    //#JPAUserManagerImpl.java:98: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeWebsite(Weblog)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    }
    //#JPAUserManagerImpl.java:99: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removeWebsite(Weblog)
    
    /**
     * convenience method for removing contents of a weblog.
     * TODO BACKEND: use manager methods instead of queries here
     */
    private void removeWebsiteContents(Weblog website)
    throws  WebloggerException {
        
        BookmarkManager bmgr = roller.getBookmarkManager();
    //#JPAUserManagerImpl.java:108: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removeWebsiteContents(Weblog)
    //#JPAUserManagerImpl.java:108: 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.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    suspicious precondition index: [2]
    //#JPAUserManagerImpl.java:108: 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.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    suspicious precondition index: [10]
    //#    Attribs:  Soft
    //#JPAUserManagerImpl.java:108: 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.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    suspicious precondition index: [12]
    //#    Attribs:  Soft
    //#JPAUserManagerImpl.java:108: 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.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    suspicious precondition index: [16]
    //#JPAUserManagerImpl.java:108: Warning: suspicious precondition
    //#    the precondition for this.roller.autoPingManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    suspicious precondition index: [18]
    //#JPAUserManagerImpl.java:108: Warning: suspicious precondition
    //#    the precondition for this.roller.bookmarkManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    suspicious precondition index: [23]
    //#JPAUserManagerImpl.java:108: Warning: suspicious precondition
    //#    the precondition for this.roller.pingTargetManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    suspicious precondition index: [28]
    //#input(void removeWebsiteContents(Weblog)): " <> "._tainted
    //#input(void removeWebsiteContents(Weblog)): " = "._tainted
    //#input(void removeWebsiteContents(Weblog)): " AND "._tainted
    //#input(void removeWebsiteContents(Weblog)): " AND w.name LIKE ?"._tainted
    //#input(void removeWebsiteContents(Weblog)): " GROUP BY w.name, w.total ORDER BY "._tainted
    //#input(void removeWebsiteContents(Weblog)): " OR c.content LIKE ?"._tainted
    //#input(void removeWebsiteContents(Weblog)): " ORDER BY c.postTime ASC"._tainted
    //#input(void removeWebsiteContents(Weblog)): " ORDER BY c.postTime DESC"._tainted
    //#input(void removeWebsiteContents(Weblog)): " WHERE "._tainted
    //#input(void removeWebsiteContents(Weblog)): " w.weblog IS NULL"._tainted
    //#input(void removeWebsiteContents(Weblog)): " w.weblog.id = ?"._tainted
    //#input(void removeWebsiteContents(Weblog)): "%"._tainted
    //#input(void removeWebsiteContents(Weblog)): "(c.url LIKE ?"._tainted
    //#input(void removeWebsiteContents(Weblog)): ")"._tainted
    //#input(void removeWebsiteContents(Weblog)): "."._tainted
    //#input(void removeWebsiteContents(Weblog)): ":"._tainted
    //#input(void removeWebsiteContents(Weblog)): "Invalid path ["._tainted
    //#input(void removeWebsiteContents(Weblog)): "SELECT c FROM WeblogEntryComment c "._tainted
    //#input(void removeWebsiteContents(Weblog)): "SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregate w WHERE "._tainted
    //#input(void removeWebsiteContents(Weblog)): "], "._tainted
    //#input(void removeWebsiteContents(Weblog)): "c.postTime <= ?"._tainted
    //#input(void removeWebsiteContents(Weblog)): "c.postTime >= ?"._tainted
    //#input(void removeWebsiteContents(Weblog)): "c.status "._tainted
    //#input(void removeWebsiteContents(Weblog)): "c.weblogEntry = ?"._tainted
    //#input(void removeWebsiteContents(Weblog)): "c.weblogEntry.website = ?"._tainted
    //#input(void removeWebsiteContents(Weblog)): "cannot read from path."._tainted
    //#input(void removeWebsiteContents(Weblog)): "directory doesn't exist."._tainted
    //#input(void removeWebsiteContents(Weblog)): "trying to get outside uploads dir."._tainted
    //#input(void removeWebsiteContents(Weblog)): "trying to use nested directories."._tainted
    //#input(void removeWebsiteContents(Weblog)): "w.name"._tainted
    //#input(void removeWebsiteContents(Weblog)): "w.total DESC"._tainted
    //#input(void removeWebsiteContents(Weblog)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void removeWebsiteContents(Weblog)): __Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): __Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeWebsiteContents(Weblog)): __Dispatch_Table.updateTagAggregates(Ljava/util/List;)V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/BookmarkManager.__Descendant_Table[org/apache/roller/weblogger/business/BookmarkManager]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/BookmarkManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/BookmarkManager.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/BookmarkManager.__Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/FileManager.__Descendant_Table[org/apache/roller/weblogger/business/FileManagerImpl]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/FileManager.__Descendant_Table[org/apache/roller/weblogger/business/FileManager]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/FileManager.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/FileManager.__Dispatch_Table.deleteAllFiles(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/FileManagerImpl.__Dispatch_Table.deleteAllFiles(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/FileManagerImpl.java.io.File.separator
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/FileManagerImpl.java.io.File.separator._tainted
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/FileManagerImpl.java.io.File.separatorChar
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[org/apache/roller/weblogger/business/WeblogManager]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WeblogManager.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WeblogManager.__Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WeblogManager.__Dispatch_Table.getTags(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;I)Ljava/util/List;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WeblogManager.__Dispatch_Table.removeWeblogEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getBookmarkManager()Lorg/apache/roller/weblogger/business/BookmarkManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getFileManager()Lorg/apache/roller/weblogger/business/FileManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPingTargetManager()Lorg/apache/roller/weblogger/business/pings/PingTargetManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getWeblogManager()Lorg/apache/roller/weblogger/business/WeblogManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.fileManager
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.fileManager.__Tag
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.fileManager.upload_dir._tainted
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getBookmarkManager()Lorg/apache/roller/weblogger/business/BookmarkManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getFileManager()Lorg/apache/roller/weblogger/business/FileManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPingTargetManager()Lorg/apache/roller/weblogger/business/pings/PingTargetManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getWeblogManager()Lorg/apache/roller/weblogger/business/WeblogManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.__Dispatch_Table.getAutoPingsByWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.__Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.flush()V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Class;Ljava/lang/String;)V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl.__Dispatch_Table.getCustomPingTargets(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__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 removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Dispatch_Table.getRootWeblogCategory(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogCategory;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Dispatch_Table.getTags(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;I)Ljava/util/List;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Dispatch_Table.removeWeblogEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.__Dispatch_Table.updateTagCount(Ljava/lang/String;Lorg/apache/roller/weblogger/pojos/Weblog;I)V
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.tagStatCountReverseComparator
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.tagStatNameComparator
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getBookmarkManager()Lorg/apache/roller/weblogger/business/BookmarkManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getFileManager()Lorg/apache/roller/weblogger/business/FileManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPingTargetManager()Lorg/apache/roller/weblogger/business/pings/PingTargetManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getWeblogManager()Lorg/apache/roller/weblogger/business/WeblogManager;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/AutoPingManager]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Dispatch_Table.getAutoPingsByWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/PingTargetManager]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Dispatch_Table.getCustomPingTargets(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/pojos/AutoPing.__Descendant_Table[org/apache/roller/weblogger/pojos/AutoPing]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/pojos/AutoPing.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[org/apache/roller/weblogger/pojos/PingQueueEntry]
    //#input(void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/pojos/PingQueueEntry.__Descendant_Table[others]
    //#input(void removeWebsiteContents(Weblog)): this
    //#input(void removeWebsiteContents(Weblog)): this.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller
    //#input(void removeWebsiteContents(Weblog)): this.roller...__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller...userManager
    //#input(void removeWebsiteContents(Weblog)): this.roller...userManager.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller...userManager.strategy
    //#input(void removeWebsiteContents(Weblog)): this.roller...userManager.strategy.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller...userManager.strategy.emf
    //#input(void removeWebsiteContents(Weblog)): this.roller...userManager.strategy.threadLocalEntityManager
    //#input(void removeWebsiteContents(Weblog)): this.roller.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller.autoPingManager
    //#input(void removeWebsiteContents(Weblog)): this.roller.autoPingManager.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller.autoPingManager.strategy
    //#input(void removeWebsiteContents(Weblog)): this.roller.autoPingManager.strategy.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller.autoPingManager.strategy.emf
    //#input(void removeWebsiteContents(Weblog)): this.roller.autoPingManager.strategy.threadLocalEntityManager
    //#input(void removeWebsiteContents(Weblog)): this.roller.bookmarkManager
    //#input(void removeWebsiteContents(Weblog)): this.roller.bookmarkManager.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller.bookmarkManager.strategy
    //#input(void removeWebsiteContents(Weblog)): this.roller.bookmarkManager.strategy.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller.bookmarkManager.strategy.emf
    //#input(void removeWebsiteContents(Weblog)): this.roller.bookmarkManager.strategy.threadLocalEntityManager
    //#input(void removeWebsiteContents(Weblog)): this.roller.pingTargetManager
    //#input(void removeWebsiteContents(Weblog)): this.roller.pingTargetManager.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller.pingTargetManager.strategy
    //#input(void removeWebsiteContents(Weblog)): this.roller.pingTargetManager.strategy.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller.pingTargetManager.strategy.emf
    //#input(void removeWebsiteContents(Weblog)): this.roller.pingTargetManager.strategy.threadLocalEntityManager
    //#input(void removeWebsiteContents(Weblog)): this.roller.weblogManager
    //#input(void removeWebsiteContents(Weblog)): this.roller.weblogManager.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller.weblogManager.entryAnchorToIdMap
    //#input(void removeWebsiteContents(Weblog)): this.roller.weblogManager.roller
    //#input(void removeWebsiteContents(Weblog)): this.roller.weblogManager.strategy
    //#input(void removeWebsiteContents(Weblog)): this.roller.weblogManager.strategy.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.roller.weblogManager.strategy.emf
    //#input(void removeWebsiteContents(Weblog)): this.roller.weblogManager.strategy.threadLocalEntityManager
    //#input(void removeWebsiteContents(Weblog)): this.strategy
    //#input(void removeWebsiteContents(Weblog)): this.strategy.__Tag
    //#input(void removeWebsiteContents(Weblog)): this.strategy.emf
    //#input(void removeWebsiteContents(Weblog)): this.strategy.threadLocalEntityManager
    //#input(void removeWebsiteContents(Weblog)): website
    //#pre[1] (void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[2] (void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[3] (void removeWebsiteContents(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[8] (void removeWebsiteContents(Weblog)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[9] (void removeWebsiteContents(Weblog)): this.roller != null
    //#pre[16] (void removeWebsiteContents(Weblog)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[17] (void removeWebsiteContents(Weblog)): this.roller.autoPingManager != null
    //#pre[18] (void removeWebsiteContents(Weblog)): this.roller.autoPingManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl, org/apache/roller/weblogger/business/pings/AutoPingManager}
    //#pre[19] (void removeWebsiteContents(Weblog)): this.roller.autoPingManager.strategy != null
    //#pre[20] (void removeWebsiteContents(Weblog)): this.roller.autoPingManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[21] (void removeWebsiteContents(Weblog)): this.roller.autoPingManager.strategy.threadLocalEntityManager != null
    //#pre[22] (void removeWebsiteContents(Weblog)): this.roller.bookmarkManager != null
    //#pre[23] (void removeWebsiteContents(Weblog)): this.roller.bookmarkManager.__Tag in {org/apache/roller/weblogger/business/BookmarkManager, org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl}
    //#pre[24] (void removeWebsiteContents(Weblog)): this.roller.bookmarkManager.strategy != null
    //#pre[25] (void removeWebsiteContents(Weblog)): this.roller.bookmarkManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[26] (void removeWebsiteContents(Weblog)): this.roller.bookmarkManager.strategy.threadLocalEntityManager != null
    //#pre[27] (void removeWebsiteContents(Weblog)): this.roller.pingTargetManager != null
    //#pre[28] (void removeWebsiteContents(Weblog)): this.roller.pingTargetManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl, org/apache/roller/weblogger/business/pings/PingTargetManager}
    //#pre[29] (void removeWebsiteContents(Weblog)): this.roller.pingTargetManager.strategy != null
    //#pre[30] (void removeWebsiteContents(Weblog)): this.roller.pingTargetManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[31] (void removeWebsiteContents(Weblog)): this.roller.pingTargetManager.strategy.threadLocalEntityManager != null
    //#pre[32] (void removeWebsiteContents(Weblog)): this.roller.weblogManager != null
    //#pre[35] (void removeWebsiteContents(Weblog)): this.roller.weblogManager.strategy != null
    //#pre[36] (void removeWebsiteContents(Weblog)): this.roller.weblogManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[37] (void removeWebsiteContents(Weblog)): this.roller.weblogManager.strategy.threadLocalEntityManager != null
    //#pre[38] (void removeWebsiteContents(Weblog)): this.strategy != null
    //#pre[39] (void removeWebsiteContents(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[41] (void removeWebsiteContents(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[42] (void removeWebsiteContents(Weblog)): website != null
    //#pre[10] (void removeWebsiteContents(Weblog)): (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] (void removeWebsiteContents(Weblog)): (soft) this.roller...userManager != null
    //#pre[12] (void removeWebsiteContents(Weblog)): (soft) this.roller...userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[13] (void removeWebsiteContents(Weblog)): (soft) this.roller...userManager.strategy != null
    //#pre[14] (void removeWebsiteContents(Weblog)): (soft) this.roller...userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[15] (void removeWebsiteContents(Weblog)): (soft) this.roller...userManager.strategy.threadLocalEntityManager != null
    //#pre[33] (void removeWebsiteContents(Weblog)): (soft) this.roller.weblogManager.__Tag == org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl
    //#pre[34] (void removeWebsiteContents(Weblog)): (soft) this.roller.weblogManager.roller != null
    //#pre[40] (void removeWebsiteContents(Weblog)): (soft) this.strategy.emf != null
    //#presumption(void removeWebsiteContents(Weblog)): autoPingMgr.strategy.emf@139 != null
    //#presumption(void removeWebsiteContents(Weblog)): bmgr.strategy.emf@174 != null
    //#presumption(void removeWebsiteContents(Weblog)): fmgr.__Tag in {org/apache/roller/weblogger/business/FileManager, org/apache/roller/weblogger/business/FileManagerImpl}
    //#presumption(void removeWebsiteContents(Weblog)): getWeblogManager(...)@109.roller.userManager != wmgr.roller.userManager
    //#presumption(void removeWebsiteContents(Weblog)): getWeblogManager(...)@109.roller.userManager.strategy != wmgr.roller.userManager.strategy
    //#presumption(void removeWebsiteContents(Weblog)): getWeblogger(...).__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#presumption(void removeWebsiteContents(Weblog)): getWeblogger(...).fileManager != null
    //#presumption(void removeWebsiteContents(Weblog)): getWeblogger(...)@226 init'ed
    //#presumption(void removeWebsiteContents(Weblog)): java.util.Iterator:next(...).__Tag@144 == org/apache/roller/weblogger/pojos/PingQueueEntry
    //#presumption(void removeWebsiteContents(Weblog)): java.util.Iterator:next(...).__Tag@153 == org/apache/roller/weblogger/pojos/AutoPing
    //#presumption(void removeWebsiteContents(Weblog)): java.util.Iterator:next(...)@195 != null
    //#presumption(void removeWebsiteContents(Weblog)): java.util.Iterator:next(...)@208 != null
    //#presumption(void removeWebsiteContents(Weblog)): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#presumption(void removeWebsiteContents(Weblog)): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#presumption(void removeWebsiteContents(Weblog)): javax.persistence.Query:getResultList(...)@110 != null
    //#presumption(void removeWebsiteContents(Weblog)): javax.persistence.Query:getResultList(...)@114 != null
    //#presumption(void removeWebsiteContents(Weblog)): javax.persistence.Query:getResultList(...)@141 != null
    //#presumption(void removeWebsiteContents(Weblog)): javax.persistence.Query:getResultList(...)@167 != null
    //#presumption(void removeWebsiteContents(Weblog)): javax.persistence.Query:getResultList(...)@176 != null
    //#presumption(void removeWebsiteContents(Weblog)): javax.persistence.Query:getResultList(...)@185 != null
    //#presumption(void removeWebsiteContents(Weblog)): javax.persistence.Query:getResultList(...)@193 != null
    //#presumption(void removeWebsiteContents(Weblog)): org.apache.roller.weblogger.pojos.User:getPermissions(...)@215 != null
    //#presumption(void removeWebsiteContents(Weblog)): org.apache.roller.weblogger.pojos.Weblog:getPermissions(...)@207 != null
    //#presumption(void removeWebsiteContents(Weblog)): org.apache.roller.weblogger.pojos.WeblogPermission:getUser(...)@214 != null
    //#presumption(void removeWebsiteContents(Weblog)): pingTargetMgr.strategy.emf@150 != null
    //#presumption(void removeWebsiteContents(Weblog)): this.roller.weblogManager.roller != getWeblogManager(...)@109.roller
    //#presumption(void removeWebsiteContents(Weblog)): wmgr.entryAnchorToIdMap@123 != null
    //#presumption(void removeWebsiteContents(Weblog)): wmgr.strategy.emf@112 != null
    //#presumption(void removeWebsiteContents(Weblog)): wmgr.strategy.emf@191 != null
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getId
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.List:get
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.TagStat
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.TagStat:setName
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.Long:intValue
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.TagStat:setCount
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:commit
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.RollerException
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.WebloggerException
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.Query:setFirstResult
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.Date
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTags
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTag:getName
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.Iterator:remove
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getEntryAttributes
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:javax.persistence.Query:executeUpdate
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:getUserManager
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:saveWebsite
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:getComments
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setLastUsed
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setTotal
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.Integer
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogReferrer:getId
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.util.Hashtable:remove
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.String:replace
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.io.File
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.io.File:exists
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.io.File:mkdirs
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.io.File:getAbsolutePath
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.io.File:canRead
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.io.File:getCanonicalPath
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.io.File:isDirectory
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.io.File:listFiles
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:deleteAllFiles
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:java.io.File:delete
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.TagStat:getName
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.TagStat:getCount
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#unanalyzed(void removeWebsiteContents(Weblog)): Effects-of-calling:getWeblogger
    //#test_vector(void removeWebsiteContents(Weblog)): java.util.Iterator:hasNext(...)@116: {0}, {1}
    //#test_vector(void removeWebsiteContents(Weblog)): java.util.Iterator:hasNext(...)@143: {0}, {1}
    //#test_vector(void removeWebsiteContents(Weblog)): java.util.Iterator:hasNext(...)@152: {0}, {1}
    //#test_vector(void removeWebsiteContents(Weblog)): java.util.Iterator:hasNext(...)@160: {0}, {1}
    //#test_vector(void removeWebsiteContents(Weblog)): java.util.Iterator:hasNext(...)@168: {0}, {1}
    //#test_vector(void removeWebsiteContents(Weblog)): java.util.Iterator:hasNext(...)@177: {0}, {1}
    //#test_vector(void removeWebsiteContents(Weblog)): java.util.Iterator:hasNext(...)@194: {0}, {1}
    //#test_vector(void removeWebsiteContents(Weblog)): java.util.Iterator:hasNext(...)@207: {0}, {1}
        WeblogManager wmgr = roller.getWeblogManager();
        
        // remove tags
        Query tagQuery = strategy.getNamedQuery("WeblogEntryTag.getByWeblog");
        tagQuery.setParameter(1, website);
        List results = tagQuery.getResultList();
        
        for(Iterator iter = results.iterator(); iter.hasNext();) {
            WeblogEntryTag tagData = (WeblogEntryTag) iter.next();
            this.strategy.remove(tagData);
        }
        
        // remove site tag aggregates
        List tags = wmgr.getTags(website, null, null, -1);
        updateTagAggregates(tags);
        
        // delete all weblog tag aggregates
        Query removeAggs= strategy.getNamedUpdate(
                "WeblogEntryTagAggregate.removeByWeblog");
        removeAggs.setParameter(1, website);
        removeAggs.executeUpdate();
        
        // delete all bad counts
        Query removeCounts = strategy.getNamedUpdate(
                "WeblogEntryTagAggregate.removeByTotalLessEqual");
        removeCounts.setParameter(1, new Integer(0));
        removeCounts.executeUpdate();
        
        
        // Remove the website's ping queue entries
        Query q = strategy.getNamedQuery("PingQueueEntry.getByWebsite");
        q.setParameter(1, website);
        List queueEntries = q.getResultList();
        Iterator it = queueEntries.iterator();
        while(it.hasNext()) {
            this.strategy.remove((PingQueueEntry) it.next());
        }
        
        // Remove the website's auto ping configurations
        AutoPingManager autoPingMgr = roller
        .getAutopingManager();
        List autopings = autoPingMgr.getAutoPingsByWebsite(website);
        it = autopings.iterator();
        while(it.hasNext()) {
            this.strategy.remove((AutoPing) it.next());
        }
        
        // Remove the website's custom ping targets
        PingTargetManager pingTargetMgr = roller.getPingTargetManager();
        List pingtargets = pingTargetMgr.getCustomPingTargets(website);
        it = pingtargets.iterator();
        while(it.hasNext()) {
            this.strategy.remove((PingTarget) it.next());
        }
        
        // remove associated referers
        Query refQuery2 = strategy.getNamedQuery("WeblogReferrer.getByWebsite");
        refQuery2.setParameter(1, website);
        List referers = refQuery2.getResultList();
        for (Iterator iter = referers.iterator(); iter.hasNext();) {
            WeblogReferrer referer = (WeblogReferrer) iter.next();
            this.strategy.remove(referer);
        }
        
        // remove associated pages
        Query pageQuery = strategy.getNamedQuery("WeblogTemplate.getByWebsite");
        pageQuery.setParameter(1, website);
        List pages = pageQuery.getResultList();
        for (Iterator iter = pages.iterator(); iter.hasNext();) {
            WeblogTemplate page = (WeblogTemplate) iter.next();
            this.strategy.remove(page);
        }
        
        // remove folders (including bookmarks)
        WeblogBookmarkFolder rootFolder = bmgr.getRootFolder(website);
        if (null != rootFolder) {
            this.strategy.remove(rootFolder);
        }
        
        this.strategy.flush();

        // remove entries
        Query refQuery = strategy.getNamedQuery("WeblogEntry.getByWebsite");
        refQuery.setParameter(1, website);
        List entries = refQuery.getResultList();
        for (Iterator iter = entries.iterator(); iter.hasNext();) {
            WeblogEntry entry = (WeblogEntry) iter.next();
            wmgr.removeWeblogEntry(entry);
        }
        
        // remove categories
        WeblogCategory rootCat = wmgr.getRootWeblogCategory(website);
        if (null != rootCat) {
            this.strategy.remove(rootCat);
        }
        
        // remove permissions
        // make sure that both sides of the relationship are maintained
        for (Iterator iterator = website.getPermissions().iterator(); iterator.hasNext();) {
    //#JPAUserManagerImpl.java:207: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
            WeblogPermission perms = (WeblogPermission) iterator.next();
            
            //Remove it from website
            iterator.remove();
            
            //Remove it from corresponding user
            User user = perms.getUser();
    //#JPAUserManagerImpl.java:214: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogPermission:getUser()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogPermission:getUser()
            user.getPermissions().remove(perms);
    //#JPAUserManagerImpl.java:215: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.User:getPermissions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeWebsiteContents(Weblog)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.User:getPermissions()

            //Remove it from database
            this.strategy.remove(perms);
        }
        
        // flush the changes before returning. This is required as there is a
        // circular dependency between WeblogCategory and Weblog
        this.strategy.flush();
        
        // remove uploaded files
        FileManager fmgr = WebloggerFactory.getWeblogger().getFileManager();
        fmgr.deleteAllFiles(website);
    }
    //#JPAUserManagerImpl.java:228: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removeWebsiteContents(Weblog)
    
    protected void updateTagAggregates(List tags) throws WebloggerException {
        for(Iterator iter = tags.iterator(); iter.hasNext();) {
    //#JPAUserManagerImpl.java:231: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.updateTagAggregates(List)
    //#input(void updateTagAggregates(List)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void updateTagAggregates(List)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void updateTagAggregates(List)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedUpdate(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void updateTagAggregates(List)): tags
    //#input(void updateTagAggregates(List)): this
    //#input(void updateTagAggregates(List)): this.strategy
    //#input(void updateTagAggregates(List)): this.strategy.__Tag
    //#input(void updateTagAggregates(List)): this.strategy.emf
    //#input(void updateTagAggregates(List)): this.strategy.threadLocalEntityManager
    //#pre[1] (void updateTagAggregates(List)): tags != null
    //#pre[3] (void updateTagAggregates(List)): (soft) this.strategy != null
    //#pre[4] (void updateTagAggregates(List)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void updateTagAggregates(List)): (soft) this.strategy.emf != null
    //#pre[6] (void updateTagAggregates(List)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void updateTagAggregates(List)): java.util.Iterator:next(...)@232 != null
    //#presumption(void updateTagAggregates(List)): javax.persistence.EntityManager:createNamedQuery(...)@301 != null
    //#presumption(void updateTagAggregates(List)): javax.persistence.Query:getSingleResult(...)@237 != null
    //#presumption(void updateTagAggregates(List)): org.apache.roller.weblogger.pojos.TagStat:getCount(...)@238 - org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal(...)@238 in -4_294_967_295..2_147_483_648
    //#unanalyzed(void updateTagAggregates(List)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void updateTagAggregates(List)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void updateTagAggregates(List)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void updateTagAggregates(List)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void updateTagAggregates(List)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void updateTagAggregates(List)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void updateTagAggregates(List)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#test_vector(void updateTagAggregates(List)): java.util.Iterator:hasNext(...)@231: {0}, {1}
            TagStat stat = (TagStat) iter.next();            
            Query query = strategy.getNamedUpdate(
                "WeblogEntryTagAggregate.getByName&WebsiteNullOrderByLastUsedDesc");
            query.setParameter(1, stat.getName());
    //#JPAUserManagerImpl.java:235: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.TagStat:getName()
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void updateTagAggregates(List)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.TagStat:getName()
            try {
                WeblogEntryTagAggregate agg = (WeblogEntryTagAggregate)query.getSingleResult();
                agg.setTotal(agg.getTotal() - stat.getCount());
    //#JPAUserManagerImpl.java:238: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void updateTagAggregates(List)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:getTotal()
    //#JPAUserManagerImpl.java:238: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.TagStat:getCount()
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void updateTagAggregates(List)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.TagStat:getCount()
    //#JPAUserManagerImpl.java:238: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setTotal(int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void updateTagAggregates(List)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntryTagAggregate:setTotal(int)
            } catch (NoResultException ignored) {} // no agg to be updated
        }
    }
    //#JPAUserManagerImpl.java:241: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.updateTagAggregates(List)
    
    public void saveUser(User data) throws WebloggerException {
        this.strategy.store(data);
    //#JPAUserManagerImpl.java:244: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.saveUser(User)
    //#input(void saveUser(User)): data
    //#input(void saveUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveUser(User)): this
    //#input(void saveUser(User)): this.strategy
    //#input(void saveUser(User)): this.strategy.__Tag
    //#input(void saveUser(User)): this.strategy.emf
    //#input(void saveUser(User)): this.strategy.threadLocalEntityManager
    //#pre[3] (void saveUser(User)): this.strategy != null
    //#pre[4] (void saveUser(User)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void saveUser(User)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void saveUser(User)): (soft) this.strategy.emf != null
    //#unanalyzed(void saveUser(User)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveUser(User)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveUser(User)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveUser(User)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveUser(User)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveUser(User)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveUser(User)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveUser(User)): Effects-of-calling:javax.persistence.EntityManager:persist
    }
    //#JPAUserManagerImpl.java:245: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.saveUser(User)
    
    public void removeUser(User user) throws WebloggerException {
        //remove permissions
        // make sure that both sides of the relationship are maintained
        for (Iterator iterator = user.getPermissions().iterator(); iterator.hasNext();) {
    //#JPAUserManagerImpl.java:250: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removeUser(User)
    //#JPAUserManagerImpl.java:250: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.User:getPermissions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeUser(User)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.User:getPermissions()
    //#input(void removeUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeUser(User)): this
    //#input(void removeUser(User)): this.strategy
    //#input(void removeUser(User)): this.strategy.__Tag
    //#input(void removeUser(User)): this.strategy.emf
    //#input(void removeUser(User)): this.strategy.threadLocalEntityManager
    //#input(void removeUser(User)): this.userNameToIdMap
    //#input(void removeUser(User)): user
    //#pre[2] (void removeUser(User)): this.strategy != null
    //#pre[3] (void removeUser(User)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void removeUser(User)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (void removeUser(User)): this.userNameToIdMap != null
    //#pre[7] (void removeUser(User)): user != null
    //#pre[4] (void removeUser(User)): (soft) this.strategy.emf != null
    //#presumption(void removeUser(User)): java.util.Iterator:next(...)@251 != null
    //#presumption(void removeUser(User)): org.apache.roller.weblogger.pojos.User:getPermissions(...)@250 != null
    //#presumption(void removeUser(User)): org.apache.roller.weblogger.pojos.Weblog:getPermissions(...)@258 != null
    //#presumption(void removeUser(User)): org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite(...)@257 != null
    //#unanalyzed(void removeUser(User)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeUser(User)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeUser(User)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeUser(User)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeUser(User)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeUser(User)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeUser(User)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#test_vector(void removeUser(User)): java.util.Iterator:hasNext(...)@250: {0}, {1}
            WeblogPermission perms = (WeblogPermission) iterator.next();
            //Remove it from database
            this.strategy.remove(perms);
            //Remove it from website
            iterator.remove();
            //Remove it from corresponding user
            Weblog website = perms.getWebsite();
    //#JPAUserManagerImpl.java:257: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeUser(User)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
            website.getPermissions().remove(perms);
    //#JPAUserManagerImpl.java:258: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeUser(User)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
        }
        
        this.strategy.remove(user);
        
        // remove entry from cache mapping
        this.userNameToIdMap.remove(user.getUserName());
    //#JPAUserManagerImpl.java:264: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removeUser(User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
    }
    //#JPAUserManagerImpl.java:265: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removeUser(User)
    
    public void savePermissions(WeblogPermission perms)
    throws WebloggerException {
        //if (getPermissions(perms.getWebsite(), perms.getUser()) != null) {
            //throw new WebloggerException("ERROR: user already has permission in weblog");
        //}
        if (getPermissions(perms.getId()) == null) { 
    //#JPAUserManagerImpl.java:272: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.savePermissions(WeblogPermission)
    //#JPAUserManagerImpl.java:272: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogPermission:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void savePermissions(WeblogPermission)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogPermission:getId()
    //#input(void savePermissions(WeblogPermission)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void savePermissions(WeblogPermission)): __Descendant_Table[others]
    //#input(void savePermissions(WeblogPermission)): __Dispatch_Table.getPermissions(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogPermission;
    //#input(void savePermissions(WeblogPermission)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void savePermissions(WeblogPermission)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void savePermissions(WeblogPermission)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void savePermissions(WeblogPermission)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void savePermissions(WeblogPermission)): perms
    //#input(void savePermissions(WeblogPermission)): this
    //#input(void savePermissions(WeblogPermission)): this.__Tag
    //#input(void savePermissions(WeblogPermission)): this.strategy
    //#input(void savePermissions(WeblogPermission)): this.strategy.__Tag
    //#input(void savePermissions(WeblogPermission)): this.strategy.emf
    //#input(void savePermissions(WeblogPermission)): this.strategy.threadLocalEntityManager
    //#pre[1] (void savePermissions(WeblogPermission)): perms != null
    //#pre[3] (void savePermissions(WeblogPermission)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[4] (void savePermissions(WeblogPermission)): this.strategy != null
    //#pre[5] (void savePermissions(WeblogPermission)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (void savePermissions(WeblogPermission)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (void savePermissions(WeblogPermission)): (soft) this.strategy.emf != null
    //#presumption(void savePermissions(WeblogPermission)): org.apache.roller.weblogger.pojos.User:getPermissions(...)@279 != null
    //#presumption(void savePermissions(WeblogPermission)): org.apache.roller.weblogger.pojos.Weblog:getPermissions(...)@276 != null
    //#presumption(void savePermissions(WeblogPermission)): org.apache.roller.weblogger.pojos.WeblogPermission:getUser(...)@278 != null
    //#presumption(void savePermissions(WeblogPermission)): org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite(...)@275 != null
    //#unanalyzed(void savePermissions(WeblogPermission)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void savePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void savePermissions(WeblogPermission)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void savePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void savePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void savePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void savePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void savePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void savePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityManager:find
    //#test_vector(void savePermissions(WeblogPermission)): javax.persistence.EntityManager:find(...)@216: Inverse{null}, Addr_Set{null}
            // This is a new object make sure that relationship is set on managed
            // copy of other side
            Weblog website = perms.getWebsite(); //(Weblog) getManagedObject(perms.getWebsite());
    //#JPAUserManagerImpl.java:275: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void savePermissions(WeblogPermission)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
            website.getPermissions().add(perms);
    //#JPAUserManagerImpl.java:276: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void savePermissions(WeblogPermission)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
            
            User user = perms.getUser(); //(User) getManagedObject(perms.getUser());
    //#JPAUserManagerImpl.java:278: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogPermission:getUser()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void savePermissions(WeblogPermission)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogPermission:getUser()
            user.getPermissions().add(perms);
    //#JPAUserManagerImpl.java:279: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.User:getPermissions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void savePermissions(WeblogPermission)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.User:getPermissions()
        }
        this.strategy.store(perms);
    }
    //#JPAUserManagerImpl.java:282: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.savePermissions(WeblogPermission)
    
    public void removePermissions(WeblogPermission perms)
    throws WebloggerException {
        this.strategy.remove(perms);
    //#JPAUserManagerImpl.java:286: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removePermissions(WeblogPermission)
    //#input(void removePermissions(WeblogPermission)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removePermissions(WeblogPermission)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removePermissions(WeblogPermission)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removePermissions(WeblogPermission)): perms
    //#input(void removePermissions(WeblogPermission)): this
    //#input(void removePermissions(WeblogPermission)): this.strategy
    //#input(void removePermissions(WeblogPermission)): this.strategy.__Tag
    //#input(void removePermissions(WeblogPermission)): this.strategy.emf
    //#input(void removePermissions(WeblogPermission)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removePermissions(WeblogPermission)): perms != null
    //#pre[3] (void removePermissions(WeblogPermission)): this.strategy != null
    //#pre[4] (void removePermissions(WeblogPermission)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void removePermissions(WeblogPermission)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void removePermissions(WeblogPermission)): (soft) this.strategy.emf != null
    //#presumption(void removePermissions(WeblogPermission)): org.apache.roller.weblogger.pojos.User:getPermissions(...)@293 != null
    //#presumption(void removePermissions(WeblogPermission)): org.apache.roller.weblogger.pojos.Weblog:getPermissions(...)@290 != null
    //#presumption(void removePermissions(WeblogPermission)): org.apache.roller.weblogger.pojos.WeblogPermission:getUser(...)@292 != null
    //#presumption(void removePermissions(WeblogPermission)): org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite(...)@289 != null
    //#unanalyzed(void removePermissions(WeblogPermission)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removePermissions(WeblogPermission)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removePermissions(WeblogPermission)): Effects-of-calling:javax.persistence.EntityManager:remove
        // make sure that relationship is set on managed
        // copy of other side
        Weblog website = perms.getWebsite(); //Weblog) getManagedObject(perms.getWebsite());
    //#JPAUserManagerImpl.java:289: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removePermissions(WeblogPermission)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
        website.getPermissions().remove(perms);
    //#JPAUserManagerImpl.java:290: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removePermissions(WeblogPermission)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
        
        User user = perms.getUser(); //(User) getManagedObject(perms.getUser());
    //#JPAUserManagerImpl.java:292: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogPermission:getUser()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removePermissions(WeblogPermission)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogPermission:getUser()
        user.getPermissions().remove(perms);
    //#JPAUserManagerImpl.java:293: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.User:getPermissions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removePermissions(WeblogPermission)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.User:getPermissions()
    }
    //#JPAUserManagerImpl.java:294: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removePermissions(WeblogPermission)
    
    /**
     * @see org.apache.roller.weblogger.model.UserManager#storePage(org.apache.roller.weblogger.pojos.WeblogTemplate)
     */
    public void savePage(WeblogTemplate page) throws WebloggerException {
        this.strategy.store(page);
    //#JPAUserManagerImpl.java:300: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.savePage(WeblogTemplate)
    //#JPAUserManagerImpl.java:300: 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.JPAUserManagerImpl
    //#    method: void savePage(WeblogTemplate)
    //#    suspicious precondition index: [4]
    //#JPAUserManagerImpl.java:300: 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.JPAUserManagerImpl
    //#    method: void savePage(WeblogTemplate)
    //#    suspicious precondition index: [6]
    //#input(void savePage(WeblogTemplate)): __Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void savePage(WeblogTemplate)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void savePage(WeblogTemplate)): page
    //#input(void savePage(WeblogTemplate)): this
    //#input(void savePage(WeblogTemplate)): this.roller
    //#input(void savePage(WeblogTemplate)): this.roller.__Tag
    //#input(void savePage(WeblogTemplate)): this.roller.userManager
    //#input(void savePage(WeblogTemplate)): this.roller.userManager.__Tag
    //#input(void savePage(WeblogTemplate)): this.roller.userManager.strategy
    //#input(void savePage(WeblogTemplate)): this.roller.userManager.strategy.__Tag
    //#input(void savePage(WeblogTemplate)): this.roller.userManager.strategy.emf
    //#input(void savePage(WeblogTemplate)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void savePage(WeblogTemplate)): this.strategy
    //#input(void savePage(WeblogTemplate)): this.strategy.__Tag
    //#input(void savePage(WeblogTemplate)): this.strategy.emf
    //#input(void savePage(WeblogTemplate)): this.strategy.threadLocalEntityManager
    //#pre[1] (void savePage(WeblogTemplate)): page != null
    //#pre[3] (void savePage(WeblogTemplate)): this.roller != null
    //#pre[4] (void savePage(WeblogTemplate)): 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 savePage(WeblogTemplate)): this.roller.userManager != null
    //#pre[6] (void savePage(WeblogTemplate)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[7] (void savePage(WeblogTemplate)): this.roller.userManager.strategy != null
    //#pre[8] (void savePage(WeblogTemplate)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (void savePage(WeblogTemplate)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[10] (void savePage(WeblogTemplate)): this.strategy != null
    //#pre[11] (void savePage(WeblogTemplate)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (void savePage(WeblogTemplate)): this.strategy.threadLocalEntityManager != null
    //#pre[12] (void savePage(WeblogTemplate)): (soft) this.strategy.emf != null
    //#presumption(void savePage(WeblogTemplate)): getUserManager(...).strategy.emf@300 != null
    //#presumption(void savePage(WeblogTemplate)): org.apache.roller.weblogger.pojos.WeblogTemplate:getWebsite(...)@303 != null
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:java.util.Date
    //#unanalyzed(void savePage(WeblogTemplate)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
        
        // update weblog last modified date.  date updated by saveWebsite()
        roller.getUserManager()
    //#JPAUserManagerImpl.java:303: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogTemplate:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void savePage(WeblogTemplate)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogTemplate:getWebsite()
        .saveWebsite(page.getWebsite());
    }
    //#JPAUserManagerImpl.java:305: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.savePage(WeblogTemplate)
    
    public void removePage(WeblogTemplate page) throws WebloggerException {
        this.strategy.remove(page);
    //#JPAUserManagerImpl.java:308: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removePage(WeblogTemplate)
    //#JPAUserManagerImpl.java:308: 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.JPAUserManagerImpl
    //#    method: void removePage(WeblogTemplate)
    //#    suspicious precondition index: [4]
    //#JPAUserManagerImpl.java:308: 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.JPAUserManagerImpl
    //#    method: void removePage(WeblogTemplate)
    //#    suspicious precondition index: [6]
    //#input(void removePage(WeblogTemplate)): __Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void removePage(WeblogTemplate)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removePage(WeblogTemplate)): page
    //#input(void removePage(WeblogTemplate)): this
    //#input(void removePage(WeblogTemplate)): this.roller
    //#input(void removePage(WeblogTemplate)): this.roller.__Tag
    //#input(void removePage(WeblogTemplate)): this.roller.userManager
    //#input(void removePage(WeblogTemplate)): this.roller.userManager.__Tag
    //#input(void removePage(WeblogTemplate)): this.roller.userManager.strategy
    //#input(void removePage(WeblogTemplate)): this.roller.userManager.strategy.__Tag
    //#input(void removePage(WeblogTemplate)): this.roller.userManager.strategy.emf
    //#input(void removePage(WeblogTemplate)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void removePage(WeblogTemplate)): this.strategy
    //#input(void removePage(WeblogTemplate)): this.strategy.__Tag
    //#input(void removePage(WeblogTemplate)): this.strategy.emf
    //#input(void removePage(WeblogTemplate)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removePage(WeblogTemplate)): page != null
    //#pre[3] (void removePage(WeblogTemplate)): this.roller != null
    //#pre[4] (void removePage(WeblogTemplate)): 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 removePage(WeblogTemplate)): this.roller.userManager != null
    //#pre[6] (void removePage(WeblogTemplate)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[7] (void removePage(WeblogTemplate)): this.roller.userManager.strategy != null
    //#pre[8] (void removePage(WeblogTemplate)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (void removePage(WeblogTemplate)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[10] (void removePage(WeblogTemplate)): this.strategy != null
    //#pre[11] (void removePage(WeblogTemplate)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (void removePage(WeblogTemplate)): this.strategy.threadLocalEntityManager != null
    //#pre[12] (void removePage(WeblogTemplate)): (soft) this.strategy.emf != null
    //#presumption(void removePage(WeblogTemplate)): getUserManager(...).strategy.emf@308 != null
    //#presumption(void removePage(WeblogTemplate)): org.apache.roller.weblogger.pojos.WeblogTemplate:getWebsite(...)@311 != null
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:java.util.Date
    //#unanalyzed(void removePage(WeblogTemplate)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
        
        // update weblog last modified date.  date updated by saveWebsite()
        roller.getUserManager().saveWebsite(page.getWebsite());
    //#JPAUserManagerImpl.java:311: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogTemplate:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void removePage(WeblogTemplate)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogTemplate:getWebsite()
    }
    //#JPAUserManagerImpl.java:312: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.removePage(WeblogTemplate)
    
    public void addUser(User newUser) throws WebloggerException {
        
        if(newUser == null)
    //#JPAUserManagerImpl.java:316: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.addUser(User)
    //#input(void addUser(User)): " AND "._tainted
    //#input(void addUser(User)): " AND u.dateCreated < ?"._tainted
    //#input(void addUser(User)): " ORDER BY u.dateCreated DESC"._tainted
    //#input(void addUser(User)): " WHERE "._tainted
    //#input(void addUser(User)): " WHERE p.website = ?"._tainted
    //#input(void addUser(User)): "SELECT u FROM User u "._tainted
    //#input(void addUser(User)): "SELECT u FROM User u JOIN u.permissions p "._tainted
    //#input(void addUser(User)): "u.dateCreated > ?"._tainted
    //#input(void addUser(User)): "u.enabled = ?"._tainted
    //#input(void addUser(User)): "userNameToIdMap CACHE HIT - "._tainted
    //#input(void addUser(User)): "userNameToIdMap CACHE MISS - "._tainted
    //#input(void addUser(User)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void addUser(User)): __Descendant_Table[others]
    //#input(void addUser(User)): __Dispatch_Table.getUser(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User;
    //#input(void addUser(User)): __Dispatch_Table.getUserByUserName(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User;
    //#input(void addUser(User)): __Dispatch_Table.getUserByUserName(Ljava/lang/String;Ljava/lang/Boolean;)Lorg/apache/roller/weblogger/pojos/User;
    //#input(void addUser(User)): __Dispatch_Table.getUsers(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/Boolean;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List;
    //#input(void addUser(User)): java.lang.Boolean.TRUE
    //#input(void addUser(User)): log
    //#input(void addUser(User)): newUser
    //#input(void addUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void addUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void addUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void addUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void addUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void addUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void addUser(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void addUser(User)): this
    //#input(void addUser(User)): this.__Tag
    //#input(void addUser(User)): this.strategy
    //#input(void addUser(User)): this.strategy.__Tag
    //#input(void addUser(User)): this.strategy.emf
    //#input(void addUser(User)): this.strategy.threadLocalEntityManager
    //#input(void addUser(User)): this.userNameToIdMap
    //#pre[2] (void addUser(User)): newUser != null
    //#pre[4] (void addUser(User)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[5] (void addUser(User)): this.strategy != null
    //#pre[6] (void addUser(User)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (void addUser(User)): this.strategy.threadLocalEntityManager != null
    //#pre[9] (void addUser(User)): this.userNameToIdMap != null
    //#pre[1] (void addUser(User)): (soft) log != null
    //#pre[7] (void addUser(User)): (soft) this.strategy.emf != null
    //#presumption(void addUser(User)): init'ed(java.lang.Boolean.TRUE)
    //#presumption(void addUser(User)): javax.persistence.Query:getResultList(...)@753 != null
    //#presumption(void addUser(User)): org.apache.roller.weblogger.pojos.User:getUserName(...)@332 != null
    //#presumption(void addUser(User)): org.apache.roller.weblogger.pojos.User:getUserName(...)@332 != null
    //#unanalyzed(void addUser(User)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void addUser(User)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getUserName
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void addUser(User)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getId
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.Map:remove
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.StringBuffer:length
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.Query:setFirstResult
    //#unanalyzed(void addUser(User)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.List:get
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(void addUser(User)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.lang.Boolean:equals
    //#unanalyzed(void addUser(User)): Effects-of-calling:java.util.Date
    //#test_vector(void addUser(User)): java.util.List:size(...)@322: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
            throw new WebloggerException("cannot add null user");
        
        // TODO BACKEND: we must do this in a better fashion, like getUserCnt()?
        boolean adminUser = false;
        List existingUsers = this.getUsers(null, Boolean.TRUE, null, null, 0, 1);
        if(existingUsers.size() == 0) {
            // Make first user an admin
            adminUser = true;
            
            //if user was disabled (because of activation user 
            // account with e-mail property), enable it for admin user
            newUser.setEnabled(Boolean.TRUE);
    //#JPAUserManagerImpl.java:328: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.User:setEnabled(Boolean)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addUser(User)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.User:setEnabled(Boolean)
            newUser.setActivationCode(null);
    //#JPAUserManagerImpl.java:329: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.User:setActivationCode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addUser(User)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.User:setActivationCode(String)
        }
        
        if(getUserByUserName(newUser.getUserName()) != null ||
    //#JPAUserManagerImpl.java:332: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addUser(User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
    //#JPAUserManagerImpl.java:332: ?org/apache/roller/weblogger/WebloggerException check
    //#    getUserByUserName(...) == null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addUser(User)
    //#    basic block: bb_3
    //#    assertion: getUserByUserName(...) == null
    //#    VN: getUserByUserName(...) == null
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
    //#JPAUserManagerImpl.java:332: ?org/apache/roller/weblogger/WebloggerException check
    //#    getUserByUserName(...) == null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addUser(User)
    //#    basic block: bb_3
    //#    assertion: getUserByUserName(...) == null
    //#    VN: getUserByUserName(...) == null
    //#    Expected: {1}
    //#    Bad: {0}
    //#    Attribs:  Int  Exp in +/-1000  Exp singleton  Bad singleton  Bad overlaps +/-1000  Bad < Exp
                getUserByUserName(newUser.getUserName().toLowerCase()) != null) {
            throw new WebloggerException("error.add.user.userNameInUse");
        }
        
        newUser.grantRole("editor");
    //#JPAUserManagerImpl.java:337: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.User:grantRole(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addUser(User)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.User:grantRole(String)
        if(adminUser) {
            newUser.grantRole("admin");
    //#JPAUserManagerImpl.java:339: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.User:grantRole(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addUser(User)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.User:grantRole(String)
        }
        
        this.strategy.store(newUser);
    }
    //#JPAUserManagerImpl.java:343: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.addUser(User)
    
    public void addWebsite(Weblog newWeblog) throws WebloggerException {
        
        this.strategy.store(newWeblog);
    //#JPAUserManagerImpl.java:347: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.addWebsite(Weblog)
    //#JPAUserManagerImpl.java:347: 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.JPAUserManagerImpl
    //#    method: void addWebsite(Weblog)
    //#    suspicious precondition index: [7]
    //#JPAUserManagerImpl.java:347: Warning: suspicious precondition
    //#    the precondition for this.roller.autoPingManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWebsite(Weblog)
    //#    suspicious precondition index: [9]
    //#    Attribs:  Soft
    //#JPAUserManagerImpl.java:347: Warning: suspicious precondition
    //#    the precondition for this.roller.pingTargetManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWebsite(Weblog)
    //#    suspicious precondition index: [15]
    //#input(void addWebsite(Weblog)): "="._tainted
    //#input(void addWebsite(Weblog)): "Fetching property ["._tainted
    //#input(void addWebsite(Weblog)): "]"._tainted
    //#input(void addWebsite(Weblog)): "newuser.blogroll"._tainted
    //#input(void addWebsite(Weblog)): "newuser.categories"._tainted
    //#input(void addWebsite(Weblog)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void addWebsite(Weblog)): __Descendant_Table[others]
    //#input(void addWebsite(Weblog)): __Dispatch_Table.getPermissions(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogPermission;
    //#input(void addWebsite(Weblog)): __Dispatch_Table.savePermissions(Lorg/apache/roller/weblogger/pojos/WeblogPermission;)V
    //#input(void addWebsite(Weblog)): newWeblog
    //#input(void addWebsite(Weblog)): org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPingTargetManager()Lorg/apache/roller/weblogger/business/pings/PingTargetManager;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPingTargetManager()Lorg/apache/roller/weblogger/business/pings/PingTargetManager;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.__Dispatch_Table.saveAutoPing(Lorg/apache/roller/weblogger/pojos/AutoPing;)V
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.flush()V
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl.__Dispatch_Table.getCommonPingTargets()Ljava/util/List;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPingTargetManager()Lorg/apache/roller/weblogger/business/pings/PingTargetManager;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/AutoPingManager]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[others]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Dispatch_Table.saveAutoPing(Lorg/apache/roller/weblogger/pojos/AutoPing;)V
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/PingTargetManager]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[others]
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Dispatch_Table.getCommonPingTargets()Ljava/util/List;
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/config/WebloggerConfig.config
    //#input(void addWebsite(Weblog)): org/apache/roller/weblogger/config/WebloggerConfig.log
    //#input(void addWebsite(Weblog)): this
    //#input(void addWebsite(Weblog)): this.__Tag
    //#input(void addWebsite(Weblog)): this.roller
    //#input(void addWebsite(Weblog)): this.roller.__Tag
    //#input(void addWebsite(Weblog)): this.roller.autoPingManager
    //#input(void addWebsite(Weblog)): this.roller.autoPingManager.__Tag
    //#input(void addWebsite(Weblog)): this.roller.autoPingManager.strategy
    //#input(void addWebsite(Weblog)): this.roller.autoPingManager.strategy.__Tag
    //#input(void addWebsite(Weblog)): this.roller.autoPingManager.strategy.threadLocalEntityManager
    //#input(void addWebsite(Weblog)): this.roller.pingTargetManager
    //#input(void addWebsite(Weblog)): this.roller.pingTargetManager.__Tag
    //#input(void addWebsite(Weblog)): this.roller.pingTargetManager.strategy
    //#input(void addWebsite(Weblog)): this.roller.pingTargetManager.strategy.__Tag
    //#input(void addWebsite(Weblog)): this.roller.pingTargetManager.strategy.threadLocalEntityManager
    //#input(void addWebsite(Weblog)): this.strategy
    //#input(void addWebsite(Weblog)): this.strategy.__Tag
    //#input(void addWebsite(Weblog)): this.strategy.emf
    //#input(void addWebsite(Weblog)): this.strategy.threadLocalEntityManager
    //#pre[1] (void addWebsite(Weblog)): newWeblog != null
    //#pre[2] (void addWebsite(Weblog)): org/apache/roller/weblogger/config/WebloggerConfig.config != null
    //#pre[3] (void addWebsite(Weblog)): org/apache/roller/weblogger/config/WebloggerConfig.log != null
    //#pre[5] (void addWebsite(Weblog)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[6] (void addWebsite(Weblog)): this.roller != null
    //#pre[7] (void addWebsite(Weblog)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[14] (void addWebsite(Weblog)): this.roller.pingTargetManager != null
    //#pre[15] (void addWebsite(Weblog)): this.roller.pingTargetManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl, org/apache/roller/weblogger/business/pings/PingTargetManager}
    //#pre[16] (void addWebsite(Weblog)): this.roller.pingTargetManager.strategy != null
    //#pre[17] (void addWebsite(Weblog)): this.roller.pingTargetManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[19] (void addWebsite(Weblog)): this.roller.pingTargetManager.strategy.threadLocalEntityManager != null
    //#pre[20] (void addWebsite(Weblog)): this.strategy != null
    //#pre[21] (void addWebsite(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[23] (void addWebsite(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (void addWebsite(Weblog)): (soft) this.roller.autoPingManager != null
    //#pre[9] (void addWebsite(Weblog)): (soft) this.roller.autoPingManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl, org/apache/roller/weblogger/business/pings/AutoPingManager}
    //#pre[10] (void addWebsite(Weblog)): (soft) this.roller.autoPingManager.strategy != null
    //#pre[11] (void addWebsite(Weblog)): (soft) this.roller.autoPingManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (void addWebsite(Weblog)): (soft) this.roller.autoPingManager.strategy.threadLocalEntityManager != null
    //#pre[22] (void addWebsite(Weblog)): (soft) this.strategy.emf != null
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:setWebsite
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:setUser
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:setPermissionMask
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getPermissions
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:getUser
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.Integer
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:getAutopingManager
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:getPingTargetManager
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:commit
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.RollerException
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPermissions
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:getId
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:getPermissions
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getCreator
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:setPending
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setBloggerCategory
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setDefaultCategory
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmark
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:getCommonPingTargets
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.PingTarget:isAutoEnabled
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:org.apache.roller.util.UUIDGenerator:generateUUID
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:saveAutoPing
    //#unanalyzed(void addWebsite(Weblog)): Effects-of-calling:javax.persistence.Query:getResultList
        this.strategy.flush();
        this.addWeblogContents(newWeblog);
    }
    //#JPAUserManagerImpl.java:350: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.addWebsite(Weblog)
    
    private void addWeblogContents(Weblog newWeblog)
    throws WebloggerException {
        
        // grant weblog creator ADMIN permissions
        WeblogPermission perms = new WeblogPermission();
    //#JPAUserManagerImpl.java:356: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.addWeblogContents(Weblog)
    //#JPAUserManagerImpl.java:356: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogPermission()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogPermission()
    //#JPAUserManagerImpl.java:356: 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.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    suspicious precondition index: [7]
    //#JPAUserManagerImpl.java:356: Warning: suspicious precondition
    //#    the precondition for this.roller.autoPingManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    suspicious precondition index: [9]
    //#    Attribs:  Soft
    //#JPAUserManagerImpl.java:356: Warning: suspicious precondition
    //#    the precondition for this.roller.pingTargetManager.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    suspicious precondition index: [14]
    //#input(void addWeblogContents(Weblog)): "="._tainted
    //#input(void addWeblogContents(Weblog)): "Fetching property ["._tainted
    //#input(void addWeblogContents(Weblog)): "]"._tainted
    //#input(void addWeblogContents(Weblog)): "newuser.blogroll"._tainted
    //#input(void addWeblogContents(Weblog)): "newuser.categories"._tainted
    //#input(void addWeblogContents(Weblog)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void addWeblogContents(Weblog)): __Descendant_Table[others]
    //#input(void addWeblogContents(Weblog)): __Dispatch_Table.getPermissions(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogPermission;
    //#input(void addWeblogContents(Weblog)): __Dispatch_Table.savePermissions(Lorg/apache/roller/weblogger/pojos/WeblogPermission;)V
    //#input(void addWeblogContents(Weblog)): newWeblog
    //#input(void addWeblogContents(Weblog)): org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPingTargetManager()Lorg/apache/roller/weblogger/business/pings/PingTargetManager;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPingTargetManager()Lorg/apache/roller/weblogger/business/pings/PingTargetManager;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.__Dispatch_Table.saveAutoPing(Lorg/apache/roller/weblogger/pojos/AutoPing;)V
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl.__Dispatch_Table.getCommonPingTargets()Ljava/util/List;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getAutopingManager()Lorg/apache/roller/weblogger/business/pings/AutoPingManager;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPingTargetManager()Lorg/apache/roller/weblogger/business/pings/PingTargetManager;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/AutoPingManager]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Descendant_Table[others]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/pings/AutoPingManager.__Dispatch_Table.saveAutoPing(Lorg/apache/roller/weblogger/pojos/AutoPing;)V
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[org/apache/roller/weblogger/business/pings/PingTargetManager]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Descendant_Table[others]
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/business/pings/PingTargetManager.__Dispatch_Table.getCommonPingTargets()Ljava/util/List;
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/config/WebloggerConfig.config
    //#input(void addWeblogContents(Weblog)): org/apache/roller/weblogger/config/WebloggerConfig.log
    //#input(void addWeblogContents(Weblog)): this
    //#input(void addWeblogContents(Weblog)): this.__Tag
    //#input(void addWeblogContents(Weblog)): this.roller
    //#input(void addWeblogContents(Weblog)): this.roller.__Tag
    //#input(void addWeblogContents(Weblog)): this.roller.autoPingManager
    //#input(void addWeblogContents(Weblog)): this.roller.autoPingManager.__Tag
    //#input(void addWeblogContents(Weblog)): this.roller.autoPingManager.strategy
    //#input(void addWeblogContents(Weblog)): this.roller.autoPingManager.strategy.__Tag
    //#input(void addWeblogContents(Weblog)): this.roller.autoPingManager.strategy.emf
    //#input(void addWeblogContents(Weblog)): this.roller.autoPingManager.strategy.threadLocalEntityManager
    //#input(void addWeblogContents(Weblog)): this.roller.pingTargetManager
    //#input(void addWeblogContents(Weblog)): this.roller.pingTargetManager.__Tag
    //#input(void addWeblogContents(Weblog)): this.roller.pingTargetManager.strategy
    //#input(void addWeblogContents(Weblog)): this.roller.pingTargetManager.strategy.__Tag
    //#input(void addWeblogContents(Weblog)): this.roller.pingTargetManager.strategy.emf
    //#input(void addWeblogContents(Weblog)): this.roller.pingTargetManager.strategy.threadLocalEntityManager
    //#input(void addWeblogContents(Weblog)): this.strategy
    //#input(void addWeblogContents(Weblog)): this.strategy.__Tag
    //#input(void addWeblogContents(Weblog)): this.strategy.emf
    //#input(void addWeblogContents(Weblog)): this.strategy.threadLocalEntityManager
    //#pre[1] (void addWeblogContents(Weblog)): newWeblog != null
    //#pre[2] (void addWeblogContents(Weblog)): org/apache/roller/weblogger/config/WebloggerConfig.config != null
    //#pre[3] (void addWeblogContents(Weblog)): org/apache/roller/weblogger/config/WebloggerConfig.log != null
    //#pre[5] (void addWeblogContents(Weblog)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[6] (void addWeblogContents(Weblog)): this.roller != null
    //#pre[7] (void addWeblogContents(Weblog)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[13] (void addWeblogContents(Weblog)): this.roller.pingTargetManager != null
    //#pre[14] (void addWeblogContents(Weblog)): this.roller.pingTargetManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl, org/apache/roller/weblogger/business/pings/PingTargetManager}
    //#pre[15] (void addWeblogContents(Weblog)): this.roller.pingTargetManager.strategy != null
    //#pre[16] (void addWeblogContents(Weblog)): this.roller.pingTargetManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[17] (void addWeblogContents(Weblog)): this.roller.pingTargetManager.strategy.threadLocalEntityManager != null
    //#pre[18] (void addWeblogContents(Weblog)): this.strategy != null
    //#pre[19] (void addWeblogContents(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[21] (void addWeblogContents(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (void addWeblogContents(Weblog)): (soft) this.roller.autoPingManager != null
    //#pre[9] (void addWeblogContents(Weblog)): (soft) this.roller.autoPingManager.__Tag in {org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl, org/apache/roller/weblogger/business/pings/AutoPingManager}
    //#pre[10] (void addWeblogContents(Weblog)): (soft) this.roller.autoPingManager.strategy != null
    //#pre[11] (void addWeblogContents(Weblog)): (soft) this.roller.autoPingManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[12] (void addWeblogContents(Weblog)): (soft) this.roller.autoPingManager.strategy.threadLocalEntityManager != null
    //#pre[20] (void addWeblogContents(Weblog)): (soft) this.strategy.emf != null
    //#presumption(void addWeblogContents(Weblog)): autoPingMgr.strategy.emf@428 != null
    //#presumption(void addWeblogContents(Weblog)): java.util.Iterator:next(...)@431 != null
    //#presumption(void addWeblogContents(Weblog)): javax.persistence.Query:getResultList(...)@177 != null
    //#presumption(void addWeblogContents(Weblog)): init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN)
    //#presumption(void addWeblogContents(Weblog)): pingTargetMgr.strategy.emf@399 != null
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getPermissions
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:getUser
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPermissions
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:getId
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:getPermissions
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:java.util.List:add
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:org.apache.roller.util.UUIDGenerator:generateUUID
    //#unanalyzed(void addWeblogContents(Weblog)): Effects-of-calling:javax.persistence.Query:getResultList
    //#test_vector(void addWeblogContents(Weblog)): java.lang.String:length(...)@374: {0}, {1..4_294_967_295}
    //#test_vector(void addWeblogContents(Weblog)): java.util.Iterator:hasNext(...)@430: {0}, {1}
    //#test_vector(void addWeblogContents(Weblog)): org.apache.roller.weblogger.pojos.PingTarget:isAutoEnabled(...)@433: {0}, {1}
        perms.setUser(newWeblog.getCreator());
    //#JPAUserManagerImpl.java:357: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.Weblog:getCreator()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.Weblog:getCreator()
    //#JPAUserManagerImpl.java:357: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogPermission:setUser(User)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogPermission:setUser(User)
        perms.setWebsite(newWeblog);
    //#JPAUserManagerImpl.java:358: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogPermission:setWebsite(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogPermission:setWebsite(Weblog)
        perms.setPending(false);
    //#JPAUserManagerImpl.java:359: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogPermission:setPending(bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogPermission:setPending(bool)
        perms.setPermissionMask(WeblogPermission.ADMIN);
    //#JPAUserManagerImpl.java:360: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogPermission:setPermissionMask(short)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogPermission:setPermissionMask(short)
        savePermissions(perms);
        
        // add default category
        WeblogCategory rootCat = new WeblogCategory(
    //#JPAUserManagerImpl.java:364: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogCategory(Weblog, WeblogCategory, String, String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogCategory(Weblog, WeblogCategory, String, String, String)
                newWeblog, // newWeblog
                null,      // parent
                "root",    // name
                "root",    // description
                null );    // image
        this.strategy.store(rootCat);
        
        String cats = WebloggerConfig.getProperty("newuser.categories");
        WeblogCategory firstCat = rootCat;
        if (cats != null && cats.trim().length() > 0) {
            String[] splitcats = cats.split(",");
            for (int i=0; i<splitcats.length; i++) {
    //#JPAUserManagerImpl.java:376: ?use of default init
    //#    init'ed(splitcats.length)
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    basic block: bb_4
    //#    assertion: init'ed(splitcats.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#JPAUserManagerImpl.java:376: Warning: test always goes same way
    //#    test predetermined because i == splitcats.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    from bb: bb_4
    //#    live edge: bb_4-->bb_8
    //#    tested vn: i - undefined
    //#    tested vn values: {0}
                WeblogCategory c = new WeblogCategory(
    //#JPAUserManagerImpl.java:377: Warning: dead code
    //#    dead code here because i == splitcats.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    dead bb: bb_5
                        newWeblog,       // newWeblog
                        rootCat,         // parent
                        splitcats[i],    // name
                        splitcats[i],    // description
                        null );          // image
                if (i == 0) firstCat = c;
    //#JPAUserManagerImpl.java:383: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    dead bb: bb_6
                this.strategy.store(c);
    //#JPAUserManagerImpl.java:384: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    dead bb: bb_7
            }
        }
        
        // Use first category as default for Blogger API
        newWeblog.setBloggerCategory(firstCat);
    //#JPAUserManagerImpl.java:389: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.Weblog:setBloggerCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.Weblog:setBloggerCategory(WeblogCategory)
        
        // But default category for weblog itself should be  root
        newWeblog.setDefaultCategory(rootCat);
    //#JPAUserManagerImpl.java:392: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.Weblog:setDefaultCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.Weblog:setDefaultCategory(WeblogCategory)
        
        this.strategy.store(newWeblog);
        
        // add default bookmarks
        WeblogBookmarkFolder root = new WeblogBookmarkFolder(
    //#JPAUserManagerImpl.java:397: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder(WeblogBookmarkFolder, String, String, Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder(WeblogBookmarkFolder, String, String, Weblog)
                null, "root", "root", newWeblog);
        this.strategy.store(root);
        
        Integer zero = new Integer(0);
        String blogroll = WebloggerConfig.getProperty("newuser.blogroll");
        if (blogroll != null) {
            String[] splitroll = blogroll.split(",");
            for (int i=0; i<splitroll.length; i++) {
    //#JPAUserManagerImpl.java:405: ?use of default init
    //#    init'ed(splitroll.length)
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    basic block: bb_10
    //#    assertion: init'ed(splitroll.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#JPAUserManagerImpl.java:405: Warning: test always goes same way
    //#    test predetermined because i == splitroll.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    from bb: bb_10
    //#    live edge: bb_10-->bb_15
    //#    tested vn: i - undefined
    //#    tested vn values: {0}
    //#JPAUserManagerImpl.java:405: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    dead bb: bb_14
                String[] rollitems = splitroll[i].split("\\|");
    //#JPAUserManagerImpl.java:406: Warning: dead code
    //#    dead code here because i == splitroll.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    dead bb: bb_11
                if (rollitems != null && rollitems.length > 1) {
    //#JPAUserManagerImpl.java:407: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    dead bb: bb_12
                    WeblogBookmark b = new WeblogBookmark(
    //#JPAUserManagerImpl.java:408: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    dead bb: bb_13
                            root,                // parent
                            rollitems[0],        // name
                            "",                  // description
                            rollitems[1].trim(), // url
                            null,                // feedurl
                            zero,                // weight
                            zero,                // priority
                            null);               // image
                    this.strategy.store(b);
                }
            }
        }
        
        // add any auto enabled ping targets
        PingTargetManager pingTargetMgr = roller
        .getPingTargetManager();
        AutoPingManager autoPingMgr = roller
        .getAutopingManager();
        
        Iterator pingTargets = pingTargetMgr.getCommonPingTargets().iterator();
        PingTarget pingTarget = null;
    //#JPAUserManagerImpl.java:429: Warning: unused assignment
    //#    unused assignment into pingTarget
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    Attribs:  Uncertain
        while(pingTargets.hasNext()) {
            pingTarget = (PingTarget) pingTargets.next();
            
            if(pingTarget.isAutoEnabled()) {
    //#JPAUserManagerImpl.java:433: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.PingTarget:isAutoEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void addWeblogContents(Weblog)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.PingTarget:isAutoEnabled()
                AutoPing autoPing = new AutoPing(
                        null, pingTarget, newWeblog);
                autoPingMgr.saveAutoPing(autoPing);
            }
        }
    }
    //#JPAUserManagerImpl.java:439: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.addWeblogContents(Weblog)
    
    /**
     * Creates and stores a pending WeblogPermission for user and website specified.
     * TODO BACKEND: do we really need this?  can't we just use storePermissions()?
     */
    public WeblogPermission inviteUser(Weblog website,
            User user, short mask) throws WebloggerException {
        
        if (website == null) throw new WebloggerException("Website cannot be null");
    //#JPAUserManagerImpl.java:448: method: WeblogPermission org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.inviteUser(Weblog, User, short)
    //#input(WeblogPermission inviteUser(Weblog, User, short)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(WeblogPermission inviteUser(Weblog, User, short)): __Descendant_Table[others]
    //#input(WeblogPermission inviteUser(Weblog, User, short)): __Dispatch_Table.getPermissions(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogPermission;
    //#input(WeblogPermission inviteUser(Weblog, User, short)): __Dispatch_Table.savePermissions(Lorg/apache/roller/weblogger/pojos/WeblogPermission;)V
    //#input(WeblogPermission inviteUser(Weblog, User, short)): mask
    //#input(WeblogPermission inviteUser(Weblog, User, short)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogPermission inviteUser(Weblog, User, short)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogPermission inviteUser(Weblog, User, short)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(WeblogPermission inviteUser(Weblog, User, short)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(WeblogPermission inviteUser(Weblog, User, short)): this
    //#input(WeblogPermission inviteUser(Weblog, User, short)): this.__Tag
    //#input(WeblogPermission inviteUser(Weblog, User, short)): this.strategy
    //#input(WeblogPermission inviteUser(Weblog, User, short)): this.strategy.__Tag
    //#input(WeblogPermission inviteUser(Weblog, User, short)): this.strategy.emf
    //#input(WeblogPermission inviteUser(Weblog, User, short)): this.strategy.threadLocalEntityManager
    //#input(WeblogPermission inviteUser(Weblog, User, short)): user
    //#input(WeblogPermission inviteUser(Weblog, User, short)): website
    //#output(WeblogPermission inviteUser(Weblog, User, short)): new WeblogPermission(inviteUser#1) num objects
    //#output(WeblogPermission inviteUser(Weblog, User, short)): return_value
    //#new obj(WeblogPermission inviteUser(Weblog, User, short)): new WeblogPermission(inviteUser#1)
    //#pre[3] (WeblogPermission inviteUser(Weblog, User, short)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[4] (WeblogPermission inviteUser(Weblog, User, short)): this.strategy != null
    //#pre[5] (WeblogPermission inviteUser(Weblog, User, short)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (WeblogPermission inviteUser(Weblog, User, short)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (WeblogPermission inviteUser(Weblog, User, short)): user != null
    //#pre[9] (WeblogPermission inviteUser(Weblog, User, short)): website != null
    //#pre[6] (WeblogPermission inviteUser(Weblog, User, short)): (soft) this.strategy.emf != null
    //#post(WeblogPermission inviteUser(Weblog, User, short)): return_value == &new WeblogPermission(inviteUser#1)
    //#post(WeblogPermission inviteUser(Weblog, User, short)): new WeblogPermission(inviteUser#1) num objects == 1
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getPermissions
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:getUser
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPermissions
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:getId
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:getPermissions
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite
    //#unanalyzed(WeblogPermission inviteUser(Weblog, User, short)): Effects-of-calling:java.util.List:add
        if (user == null) throw new WebloggerException("User cannot be null");
        
        WeblogPermission perms = new WeblogPermission();
    //#JPAUserManagerImpl.java:451: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogPermission()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: WeblogPermission inviteUser(Weblog, User, short)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogPermission()
        perms.setWebsite(website);
    //#JPAUserManagerImpl.java:452: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogPermission:setWebsite(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: WeblogPermission inviteUser(Weblog, User, short)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogPermission:setWebsite(Weblog)
        perms.setUser(user);
    //#JPAUserManagerImpl.java:453: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogPermission:setUser(User)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: WeblogPermission inviteUser(Weblog, User, short)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogPermission:setUser(User)
        perms.setPermissionMask(mask);
    //#JPAUserManagerImpl.java:454: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogPermission:setPermissionMask(short)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: WeblogPermission inviteUser(Weblog, User, short)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogPermission:setPermissionMask(short)
        savePermissions(perms);
        
        return perms;
    //#JPAUserManagerImpl.java:457: end of method: WeblogPermission org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.inviteUser(Weblog, User, short)
    }
    
    /**
     * Remove user permissions from a website.
     *
     * TODO: replace this with a domain model method like weblog.retireUser(user)
     */
    public void retireUser(Weblog website, User user) throws WebloggerException {
        
        if (website == null) throw new WebloggerException("Website cannot be null");
    //#JPAUserManagerImpl.java:467: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.retireUser(Weblog, User)
    //#input(void retireUser(Weblog, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void retireUser(Weblog, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void retireUser(Weblog, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void retireUser(Weblog, User)): this
    //#input(void retireUser(Weblog, User)): this.strategy
    //#input(void retireUser(Weblog, User)): this.strategy.__Tag
    //#input(void retireUser(Weblog, User)): this.strategy.emf
    //#input(void retireUser(Weblog, User)): this.strategy.threadLocalEntityManager
    //#input(void retireUser(Weblog, User)): user
    //#input(void retireUser(Weblog, User)): website
    //#pre[6] (void retireUser(Weblog, User)): user != null
    //#pre[7] (void retireUser(Weblog, User)): website != null
    //#pre[2] (void retireUser(Weblog, User)): (soft) this.strategy != null
    //#pre[3] (void retireUser(Weblog, User)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[4] (void retireUser(Weblog, User)): (soft) this.strategy.emf != null
    //#pre[5] (void retireUser(Weblog, User)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void retireUser(Weblog, User)): java.util.Iterator:next(...)@473 != null
    //#presumption(void retireUser(Weblog, User)): org.apache.roller.weblogger.pojos.User:getId(...)@474 != null
    //#presumption(void retireUser(Weblog, User)): org.apache.roller.weblogger.pojos.Weblog:getPermissions(...)@470 != null
    //#presumption(void retireUser(Weblog, User)): org.apache.roller.weblogger.pojos.WeblogPermission:getUser(...)@474 != null
    //#unanalyzed(void retireUser(Weblog, User)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void retireUser(Weblog, User)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void retireUser(Weblog, User)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void retireUser(Weblog, User)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void retireUser(Weblog, User)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void retireUser(Weblog, User)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void retireUser(Weblog, User)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#test_vector(void retireUser(Weblog, User)): java.lang.String:equals(...)@474: {0}, {1}
    //#test_vector(void retireUser(Weblog, User)): java.util.Iterator:hasNext(...)@472: {0}, {1}
        if (user == null) throw new WebloggerException("User cannot be null");
        
        Iterator perms = website.getPermissions().iterator();
    //#JPAUserManagerImpl.java:470: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void retireUser(Weblog, User)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.Weblog:getPermissions()
        WeblogPermission target = null;
        while (perms.hasNext()) {
            WeblogPermission pd = (WeblogPermission)perms.next();
            if (pd.getUser().getId().equals(user.getId())) {
    //#JPAUserManagerImpl.java:474: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogPermission:getUser()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void retireUser(Weblog, User)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogPermission:getUser()
    //#JPAUserManagerImpl.java:474: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void retireUser(Weblog, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getId()
                target = pd;
                break;
            }
        }
        if (target == null) throw new WebloggerException("User not member of website");
    //#JPAUserManagerImpl.java:479: ?org/apache/roller/weblogger/WebloggerException check
    //#    target != null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void retireUser(Weblog, User)
    //#    basic block: bb_6
    //#    assertion: target != null
    //#    VN: target == null
    //#    Expected: {0}
    //#    Bad: {1}
    //#    Attribs:  Int  Exp in +/-1000  Exp singleton  Bad singleton  Bad overlaps +/-1000  Bad > Exp
        
        website.removePermission(target);
    //#JPAUserManagerImpl.java:481: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.Weblog:removePermission(WeblogPermission)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void retireUser(Weblog, User)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.Weblog:removePermission(WeblogPermission)
        this.strategy.remove(target);
    }
    //#JPAUserManagerImpl.java:483: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.retireUser(Weblog, User)
    
    public void revokeRole(String roleName, User user) throws WebloggerException {
        Collection roles = user.getRoles();
    //#JPAUserManagerImpl.java:486: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.revokeRole(String, User)
    //#JPAUserManagerImpl.java:486: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.User:getRoles()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void revokeRole(String, User)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.User:getRoles()
    //#input(void revokeRole(String, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void revokeRole(String, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void revokeRole(String, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void revokeRole(String, User)): roleName
    //#input(void revokeRole(String, User)): this
    //#input(void revokeRole(String, User)): this.strategy
    //#input(void revokeRole(String, User)): this.strategy.__Tag
    //#input(void revokeRole(String, User)): this.strategy.emf
    //#input(void revokeRole(String, User)): this.strategy.threadLocalEntityManager
    //#input(void revokeRole(String, User)): user
    //#pre[7] (void revokeRole(String, User)): user != null
    //#pre[3] (void revokeRole(String, User)): (soft) this.strategy != null
    //#pre[4] (void revokeRole(String, User)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (void revokeRole(String, User)): (soft) this.strategy.emf != null
    //#pre[6] (void revokeRole(String, User)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void revokeRole(String, User)): java.util.Iterator:next(...)@489 != null
    //#presumption(void revokeRole(String, User)): org.apache.roller.weblogger.pojos.User:getRoles(...)@486 != null
    //#presumption(void revokeRole(String, User)): org.apache.roller.weblogger.pojos.UserRole:getRole(...)@490 != null
    //#unanalyzed(void revokeRole(String, User)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void revokeRole(String, User)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void revokeRole(String, User)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void revokeRole(String, User)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void revokeRole(String, User)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void revokeRole(String, User)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void revokeRole(String, User)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#test_vector(void revokeRole(String, User)): java.lang.String:equals(...)@490: {0}, {1}
    //#test_vector(void revokeRole(String, User)): java.util.Iterator:hasNext(...)@488: {0}, {1}
        Iterator iter = roles.iterator();
        while (iter.hasNext()) {
            UserRole role = (UserRole) iter.next();
            if (role.getRole().equals(roleName)) {
    //#JPAUserManagerImpl.java:490: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.UserRole:getRole()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: void revokeRole(String, User)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.UserRole:getRole()
                this.strategy.remove(role);
                iter.remove();
            }
        }
    }
    //#JPAUserManagerImpl.java:495: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.revokeRole(String, User)
    
    public Weblog getWebsite(String id) throws WebloggerException {
        return (Weblog) this.strategy.load(Weblog.class, id);
    //#JPAUserManagerImpl.java:498: method: Weblog org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWebsite(String)
    //#input(Weblog getWebsite(String)): id
    //#input(Weblog getWebsite(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Weblog getWebsite(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Weblog getWebsite(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(Weblog getWebsite(String)): this
    //#input(Weblog getWebsite(String)): this.strategy
    //#input(Weblog getWebsite(String)): this.strategy.__Tag
    //#input(Weblog getWebsite(String)): this.strategy.emf
    //#input(Weblog getWebsite(String)): this.strategy.threadLocalEntityManager
    //#output(Weblog getWebsite(String)): return_value
    //#pre[3] (Weblog getWebsite(String)): this.strategy != null
    //#pre[4] (Weblog getWebsite(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (Weblog getWebsite(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (Weblog getWebsite(String)): (soft) this.strategy.emf != null
    //#post(Weblog getWebsite(String)): init'ed(return_value)
    //#unanalyzed(Weblog getWebsite(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Weblog getWebsite(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Weblog getWebsite(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Weblog getWebsite(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Weblog getWebsite(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Weblog getWebsite(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Weblog getWebsite(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#JPAUserManagerImpl.java:498: end of method: Weblog org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWebsite(String)
    }
    
    public Weblog getWebsiteByHandle(String handle) throws WebloggerException {
        return getWebsiteByHandle(handle, Boolean.TRUE);
    //#JPAUserManagerImpl.java:502: method: Weblog org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWebsiteByHandle(String)
    //#input(Weblog getWebsiteByHandle(String)): "weblogHandleToId CACHE HIT - "._tainted
    //#input(Weblog getWebsiteByHandle(String)): "weblogHandleToId CACHE MISS - "._tainted
    //#input(Weblog getWebsiteByHandle(String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(Weblog getWebsiteByHandle(String)): __Descendant_Table[others]
    //#input(Weblog getWebsiteByHandle(String)): __Dispatch_Table.getWebsite(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(Weblog getWebsiteByHandle(String)): __Dispatch_Table.getWebsiteByHandle(Ljava/lang/String;Ljava/lang/Boolean;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(Weblog getWebsiteByHandle(String)): handle
    //#input(Weblog getWebsiteByHandle(String)): handle._tainted
    //#input(Weblog getWebsiteByHandle(String)): java.lang.Boolean.TRUE
    //#input(Weblog getWebsiteByHandle(String)): log
    //#input(Weblog getWebsiteByHandle(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Weblog getWebsiteByHandle(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Weblog getWebsiteByHandle(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Weblog getWebsiteByHandle(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(Weblog getWebsiteByHandle(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(Weblog getWebsiteByHandle(String)): this
    //#input(Weblog getWebsiteByHandle(String)): this.__Tag
    //#input(Weblog getWebsiteByHandle(String)): this.strategy
    //#input(Weblog getWebsiteByHandle(String)): this.strategy.__Tag
    //#input(Weblog getWebsiteByHandle(String)): this.strategy.emf
    //#input(Weblog getWebsiteByHandle(String)): this.strategy.threadLocalEntityManager
    //#input(Weblog getWebsiteByHandle(String)): this.weblogHandleToIdMap
    //#output(Weblog getWebsiteByHandle(String)): return_value
    //#pre[1] (Weblog getWebsiteByHandle(String)): handle != null
    //#pre[6] (Weblog getWebsiteByHandle(String)): this.strategy != null
    //#pre[7] (Weblog getWebsiteByHandle(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (Weblog getWebsiteByHandle(String)): this.strategy.threadLocalEntityManager != null
    //#pre[10] (Weblog getWebsiteByHandle(String)): this.weblogHandleToIdMap != null
    //#pre[3] (Weblog getWebsiteByHandle(String)): (soft) log != null
    //#pre[5] (Weblog getWebsiteByHandle(String)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[8] (Weblog getWebsiteByHandle(String)): (soft) this.strategy.emf != null
    //#presumption(Weblog getWebsiteByHandle(String)): init'ed(java.lang.Boolean.TRUE)
    //#post(Weblog getWebsiteByHandle(String)): init'ed(return_value)
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.util.Map:remove
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:java.lang.Boolean:equals
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(Weblog getWebsiteByHandle(String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getId
    //#JPAUserManagerImpl.java:502: end of method: Weblog org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWebsiteByHandle(String)
    }
    
    /**
     * Return website specified by handle.
     */
    public Weblog getWebsiteByHandle(String handle, Boolean enabled)
    throws WebloggerException {
        
        if (handle==null )
    //#JPAUserManagerImpl.java:511: method: Weblog org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWebsiteByHandle(String, Boolean)
    //#input(Weblog getWebsiteByHandle(String, Boolean)): "weblogHandleToId CACHE HIT - "._tainted
    //#input(Weblog getWebsiteByHandle(String, Boolean)): "weblogHandleToId CACHE MISS - "._tainted
    //#input(Weblog getWebsiteByHandle(String, Boolean)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(Weblog getWebsiteByHandle(String, Boolean)): __Descendant_Table[others]
    //#input(Weblog getWebsiteByHandle(String, Boolean)): __Dispatch_Table.getWebsite(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(Weblog getWebsiteByHandle(String, Boolean)): enabled
    //#input(Weblog getWebsiteByHandle(String, Boolean)): handle
    //#input(Weblog getWebsiteByHandle(String, Boolean)): handle._tainted
    //#input(Weblog getWebsiteByHandle(String, Boolean)): log
    //#input(Weblog getWebsiteByHandle(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Weblog getWebsiteByHandle(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Weblog getWebsiteByHandle(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Weblog getWebsiteByHandle(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(Weblog getWebsiteByHandle(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(Weblog getWebsiteByHandle(String, Boolean)): this
    //#input(Weblog getWebsiteByHandle(String, Boolean)): this.__Tag
    //#input(Weblog getWebsiteByHandle(String, Boolean)): this.strategy
    //#input(Weblog getWebsiteByHandle(String, Boolean)): this.strategy.__Tag
    //#input(Weblog getWebsiteByHandle(String, Boolean)): this.strategy.emf
    //#input(Weblog getWebsiteByHandle(String, Boolean)): this.strategy.threadLocalEntityManager
    //#input(Weblog getWebsiteByHandle(String, Boolean)): this.weblogHandleToIdMap
    //#output(Weblog getWebsiteByHandle(String, Boolean)): return_value
    //#pre[2] (Weblog getWebsiteByHandle(String, Boolean)): handle != null
    //#pre[7] (Weblog getWebsiteByHandle(String, Boolean)): this.strategy != null
    //#pre[8] (Weblog getWebsiteByHandle(String, Boolean)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[10] (Weblog getWebsiteByHandle(String, Boolean)): this.strategy.threadLocalEntityManager != null
    //#pre[11] (Weblog getWebsiteByHandle(String, Boolean)): this.weblogHandleToIdMap != null
    //#pre[4] (Weblog getWebsiteByHandle(String, Boolean)): (soft) log != null
    //#pre[6] (Weblog getWebsiteByHandle(String, Boolean)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[9] (Weblog getWebsiteByHandle(String, Boolean)): (soft) this.strategy.emf != null
    //#post(Weblog getWebsiteByHandle(String, Boolean)): init'ed(return_value)
    //#unanalyzed(Weblog getWebsiteByHandle(String, Boolean)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Weblog getWebsiteByHandle(String, Boolean)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Weblog getWebsiteByHandle(String, Boolean)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Weblog getWebsiteByHandle(String, Boolean)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Weblog getWebsiteByHandle(String, Boolean)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Weblog getWebsiteByHandle(String, Boolean)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Weblog getWebsiteByHandle(String, Boolean)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(Weblog getWebsiteByHandle(String, Boolean)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(Weblog getWebsiteByHandle(String, Boolean)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(Weblog getWebsiteByHandle(String, Boolean)): enabled: Addr_Set{null}, Inverse{null}
    //#test_vector(Weblog getWebsiteByHandle(String, Boolean)): java.lang.Boolean:equals(...)@522: {0}, {1}
    //#test_vector(Weblog getWebsiteByHandle(String, Boolean)): java.lang.Boolean:equals(...)@547: {0}, {1}
    //#test_vector(Weblog getWebsiteByHandle(String, Boolean)): java.util.Map:containsKey(...)@516: {0}, {1}
    //#test_vector(Weblog getWebsiteByHandle(String, Boolean)): javax.persistence.EntityManager:find(...)@216: Addr_Set{null}, Inverse{null}
            throw new WebloggerException("Handle cannot be null");
        
        // check cache first
        // NOTE: if we ever allow changing handles then this needs updating
        if(this.weblogHandleToIdMap.containsKey(handle)) {
            
            Weblog weblog = this.getWebsite(
                    (String) this.weblogHandleToIdMap.get(handle));
            if(weblog != null) {
                // only return weblog if enabled status matches
                if(enabled == null || enabled.equals(weblog.getEnabled())) {
    //#JPAUserManagerImpl.java:522: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.Weblog:getEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: Weblog getWebsiteByHandle(String, Boolean)
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.Weblog:getEnabled()
                    log.debug("weblogHandleToId CACHE HIT - "+handle);
    //#JPAUserManagerImpl.java:523: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: Weblog getWebsiteByHandle(String, Boolean)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    return weblog;
                }
            } else {
                // mapping hit with lookup miss?  mapping must be old, remove it
                this.weblogHandleToIdMap.remove(handle);
            }
        }
        
        Query query = strategy.getNamedQuery("Weblog.getByHandle");
        query.setParameter(1, handle);
        Weblog website = null;
    //#JPAUserManagerImpl.java:534: Warning: unused assignment
    //#    unused assignment into website
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: Weblog getWebsiteByHandle(String, Boolean)
    //#    Attribs:  Uncertain
        try {
            website = (Weblog)query.getSingleResult();
        } catch (NoResultException e) {
            website = null;
        }
        
        // add mapping to cache
        if(website != null) {
            log.debug("weblogHandleToId CACHE MISS - "+handle);
    //#JPAUserManagerImpl.java:543: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: Weblog getWebsiteByHandle(String, Boolean)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            this.weblogHandleToIdMap.put(website.getHandle(), website.getId());
    //#JPAUserManagerImpl.java:544: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: Weblog getWebsiteByHandle(String, Boolean)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#JPAUserManagerImpl.java:544: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: Weblog getWebsiteByHandle(String, Boolean)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getId()
        }
        
        if(website != null &&
    //#JPAUserManagerImpl.java:547: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.Weblog:getEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: Weblog getWebsiteByHandle(String, Boolean)
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.Weblog:getEnabled()
                (enabled == null || enabled.equals(website.getEnabled()))) {
            return website;
        } else {
            return null;
    //#JPAUserManagerImpl.java:551: end of method: Weblog org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWebsiteByHandle(String, Boolean)
        }
    }
    
    /**
     * Get websites of a user
     */
    public List getWebsites(
            User user, Boolean enabled, Boolean active,
            Date startDate, Date endDate, int offset, int length) throws WebloggerException {
        
        //if (endDate == null) endDate = new Date();
                      
        List params = new ArrayList();
    //#JPAUserManagerImpl.java:564: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWebsites(User, Boolean, Boolean, Date, Date, int, int)
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): " AND "._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): " AND p.pending = ?"._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): " ORDER BY w.dateCreated DESC"._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): " p.user = ?"._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): " w.active = ?"._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): " w.dateCreated < ?"._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): " w.dateCreated > ?"._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): " w.enabled = ?"._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): "SELECT w FROM Weblog w JOIN w.permissions p WHERE "._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): "SELECT w FROM Weblog w WHERE "._tainted
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): active
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): enabled
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): endDate
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): java.lang.Boolean.FALSE
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): length
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): offset
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): startDate
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): this
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): this.strategy
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): this.strategy.__Tag
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): this.strategy.emf
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): this.strategy.threadLocalEntityManager
    //#input(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): user
    //#output(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): return_value
    //#pre[8] (List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): this.strategy != null
    //#pre[9] (List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[11] (List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[10] (List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): (soft) this.strategy.emf != null
    //#presumption(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): init'ed(java.lang.Boolean.FALSE)
    //#post(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): init'ed(return_value)
    //#unanalyzed(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): active: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): enabled: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): endDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): startDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): user: Inverse{null}, Addr_Set{null}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): java.lang.StringBuffer:length(...)@581: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): java.lang.StringBuffer:length(...)@587: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): java.lang.StringBuffer:length(...)@592: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(List getWebsites(User, Boolean, Boolean, Date, Date, int, int)): java.lang.StringBuffer:length(...)@597: {-2_147_483_648..0}, {1..4_294_967_295}
        int size = 0;
        StringBuffer queryString = new StringBuffer();
        StringBuffer whereClause = new StringBuffer();
        
        //queryString.append("SELECT w FROM Weblog w WHERE ");
        if (user == null) { // OpenJPA likes JOINs
            queryString.append("SELECT w FROM Weblog w WHERE ");
        } else {
            queryString.append("SELECT w FROM Weblog w JOIN w.permissions p WHERE ");
            params.add(size++, user);
            whereClause.append(" p.user = ?" + size);
            params.add(size++, Boolean.FALSE);
            whereClause.append(" AND p.pending = ?" + size);
        }
        if (startDate != null) {
            Timestamp start = new Timestamp(startDate.getTime());
            if (whereClause.length() > 0) whereClause.append(" AND ");
            params.add(size++, start);
            whereClause.append(" w.dateCreated > ?" + size);
        }
        if (endDate != null) {
            Timestamp end = new Timestamp(endDate.getTime());
            if (whereClause.length() > 0) whereClause.append(" AND ");
            params.add(size++, end);
            whereClause.append(" w.dateCreated < ?" + size);
        }
        if (enabled != null) {
            if (whereClause.length() > 0) whereClause.append(" AND ");
            params.add(size++, enabled);
            whereClause.append(" w.enabled = ?" + size);
        }
        if (active != null) {
            if (whereClause.length() > 0) whereClause.append(" AND ");
            params.add(size++, active);
            whereClause.append(" w.active = ?" + size);
        }      
        /*if (user != null) { // Toplink likes sub-selects    
            if (whereClause.length() > 0) whereClause.append(" AND ");
            whereClause.append(" EXISTS (SELECT p from WeblogPermission p WHERE p.website = w ");
            params.add(size++, user);         
            whereClause.append("    AND p.user = ?" + size);
            params.add(size++, Boolean.FALSE);
            whereClause.append("    AND p.pending = ?" + size + ")");   
        }*/
                
        whereClause.append(" ORDER BY w.dateCreated DESC");
        
        Query query = strategy.getDynamicQuery(queryString.toString() + whereClause.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();
    //#JPAUserManagerImpl.java:623: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWebsites(User, Boolean, Boolean, Date, Date, int, int)
    }
    
    public User getUser(String id) throws WebloggerException {
        return (User)this.strategy.load(User.class, id);
    //#JPAUserManagerImpl.java:627: method: User org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUser(String)
    //#input(User getUser(String)): id
    //#input(User getUser(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(User getUser(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(User getUser(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(User getUser(String)): this
    //#input(User getUser(String)): this.strategy
    //#input(User getUser(String)): this.strategy.__Tag
    //#input(User getUser(String)): this.strategy.emf
    //#input(User getUser(String)): this.strategy.threadLocalEntityManager
    //#output(User getUser(String)): return_value
    //#pre[3] (User getUser(String)): this.strategy != null
    //#pre[4] (User getUser(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (User getUser(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (User getUser(String)): (soft) this.strategy.emf != null
    //#post(User getUser(String)): init'ed(return_value)
    //#unanalyzed(User getUser(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(User getUser(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(User getUser(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(User getUser(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(User getUser(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(User getUser(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(User getUser(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#JPAUserManagerImpl.java:627: end of method: User org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUser(String)
    }
    
    public User getUserByUserName(String userName) throws WebloggerException {
        return getUserByUserName(userName, Boolean.TRUE);
    //#JPAUserManagerImpl.java:631: method: User org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserByUserName(String)
    //#input(User getUserByUserName(String)): "userNameToIdMap CACHE HIT - "._tainted
    //#input(User getUserByUserName(String)): "userNameToIdMap CACHE MISS - "._tainted
    //#input(User getUserByUserName(String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(User getUserByUserName(String)): __Descendant_Table[others]
    //#input(User getUserByUserName(String)): __Dispatch_Table.getUser(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User;
    //#input(User getUserByUserName(String)): __Dispatch_Table.getUserByUserName(Ljava/lang/String;Ljava/lang/Boolean;)Lorg/apache/roller/weblogger/pojos/User;
    //#input(User getUserByUserName(String)): java.lang.Boolean.TRUE
    //#input(User getUserByUserName(String)): log
    //#input(User getUserByUserName(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(User getUserByUserName(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(User getUserByUserName(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(User getUserByUserName(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(User getUserByUserName(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(User getUserByUserName(String)): this
    //#input(User getUserByUserName(String)): this.__Tag
    //#input(User getUserByUserName(String)): this.strategy
    //#input(User getUserByUserName(String)): this.strategy.__Tag
    //#input(User getUserByUserName(String)): this.strategy.emf
    //#input(User getUserByUserName(String)): this.strategy.threadLocalEntityManager
    //#input(User getUserByUserName(String)): this.userNameToIdMap
    //#input(User getUserByUserName(String)): userName
    //#input(User getUserByUserName(String)): userName._tainted
    //#output(User getUserByUserName(String)): return_value
    //#pre[4] (User getUserByUserName(String)): this.strategy != null
    //#pre[5] (User getUserByUserName(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (User getUserByUserName(String)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (User getUserByUserName(String)): this.userNameToIdMap != null
    //#pre[9] (User getUserByUserName(String)): userName != null
    //#pre[1] (User getUserByUserName(String)): (soft) log != null
    //#pre[3] (User getUserByUserName(String)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[6] (User getUserByUserName(String)): (soft) this.strategy.emf != null
    //#presumption(User getUserByUserName(String)): init'ed(java.lang.Boolean.TRUE)
    //#post(User getUserByUserName(String)): init'ed(return_value)
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getUserName
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getId
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.util.Map:remove
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.util.Map:containsKey
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.util.Map:get
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(User getUserByUserName(String)): Effects-of-calling:java.lang.Boolean:equals
    //#JPAUserManagerImpl.java:631: end of method: User org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserByUserName(String)
    }
    
    public User getUserByUserName(String userName, Boolean enabled)
    throws WebloggerException {
        
        if (userName==null )
    //#JPAUserManagerImpl.java:637: method: User org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserByUserName(String, Boolean)
    //#input(User getUserByUserName(String, Boolean)): "userNameToIdMap CACHE HIT - "._tainted
    //#input(User getUserByUserName(String, Boolean)): "userNameToIdMap CACHE MISS - "._tainted
    //#input(User getUserByUserName(String, Boolean)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(User getUserByUserName(String, Boolean)): __Descendant_Table[others]
    //#input(User getUserByUserName(String, Boolean)): __Dispatch_Table.getUser(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/User;
    //#input(User getUserByUserName(String, Boolean)): enabled
    //#input(User getUserByUserName(String, Boolean)): log
    //#input(User getUserByUserName(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(User getUserByUserName(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(User getUserByUserName(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(User getUserByUserName(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(User getUserByUserName(String, Boolean)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(User getUserByUserName(String, Boolean)): this
    //#input(User getUserByUserName(String, Boolean)): this.__Tag
    //#input(User getUserByUserName(String, Boolean)): this.strategy
    //#input(User getUserByUserName(String, Boolean)): this.strategy.__Tag
    //#input(User getUserByUserName(String, Boolean)): this.strategy.emf
    //#input(User getUserByUserName(String, Boolean)): this.strategy.threadLocalEntityManager
    //#input(User getUserByUserName(String, Boolean)): this.userNameToIdMap
    //#input(User getUserByUserName(String, Boolean)): userName
    //#input(User getUserByUserName(String, Boolean)): userName._tainted
    //#output(User getUserByUserName(String, Boolean)): return_value
    //#pre[5] (User getUserByUserName(String, Boolean)): this.strategy != null
    //#pre[6] (User getUserByUserName(String, Boolean)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (User getUserByUserName(String, Boolean)): this.strategy.threadLocalEntityManager != null
    //#pre[9] (User getUserByUserName(String, Boolean)): this.userNameToIdMap != null
    //#pre[10] (User getUserByUserName(String, Boolean)): userName != null
    //#pre[2] (User getUserByUserName(String, Boolean)): (soft) log != null
    //#pre[4] (User getUserByUserName(String, Boolean)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[7] (User getUserByUserName(String, Boolean)): (soft) this.strategy.emf != null
    //#post(User getUserByUserName(String, Boolean)): init'ed(return_value)
    //#unanalyzed(User getUserByUserName(String, Boolean)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(User getUserByUserName(String, Boolean)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(User getUserByUserName(String, Boolean)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(User getUserByUserName(String, Boolean)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(User getUserByUserName(String, Boolean)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(User getUserByUserName(String, Boolean)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(User getUserByUserName(String, Boolean)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(User getUserByUserName(String, Boolean)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(User getUserByUserName(String, Boolean)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(User getUserByUserName(String, Boolean)): enabled: Addr_Set{null}, Inverse{null}
    //#test_vector(User getUserByUserName(String, Boolean)): java.lang.Boolean:equals(...)@648: {0}, {1}
    //#test_vector(User getUserByUserName(String, Boolean)): java.util.Map:containsKey(...)@642: {0}, {1}
    //#test_vector(User getUserByUserName(String, Boolean)): javax.persistence.EntityManager:find(...)@216: Addr_Set{null}, Inverse{null}
            throw new WebloggerException("userName cannot be null");
        
        // check cache first
        // NOTE: if we ever allow changing usernames then this needs updating
        if(this.userNameToIdMap.containsKey(userName)) {
            
            User user = this.getUser(
                    (String) this.userNameToIdMap.get(userName));
            if(user != null) {
                // only return the user if the enabled status matches
                if(enabled == null || enabled.equals(user.getEnabled())) {
    //#JPAUserManagerImpl.java:648: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.User:getEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: User getUserByUserName(String, Boolean)
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.User:getEnabled()
                    log.debug("userNameToIdMap CACHE HIT - "+userName);
    //#JPAUserManagerImpl.java:649: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: User getUserByUserName(String, Boolean)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    return user;
                }
            } else {
                // mapping hit with lookup miss?  mapping must be old, remove it
                this.userNameToIdMap.remove(userName);
            }
        }
        
        // cache failed, do lookup
        Query query;
        Object[] params;
        if (enabled != null) {
            query = strategy.getNamedQuery(
                    "User.getByUserName&Enabled");
            params = new Object[] {userName, enabled};
        } else {
            query = strategy.getNamedQuery(
                    "User.getByUserName");
            params = new Object[] {userName};
        }
        for (int i=0; i<params.length; i++) {
            query.setParameter(i+1, params[i]);
    //#JPAUserManagerImpl.java:671: ?use of default init
    //#    init'ed(params[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: User getUserByUserName(String, Boolean)
    //#    basic block: bb_12
    //#    assertion: init'ed(params[i])
    //#    VN: params[i]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
        }
        User user = null;
    //#JPAUserManagerImpl.java:673: Warning: unused assignment
    //#    unused assignment into user
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: User getUserByUserName(String, Boolean)
    //#    Attribs:  Uncertain
        try {
            user = (User)query.getSingleResult();
        } catch (NoResultException e) {
            user = null;
        }
        
        // add mapping to cache
        if(user != null) {
            log.debug("userNameToIdMap CACHE MISS - "+userName);
    //#JPAUserManagerImpl.java:682: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: User getUserByUserName(String, Boolean)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            this.userNameToIdMap.put(user.getUserName(), user.getId());
    //#JPAUserManagerImpl.java:683: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: User getUserByUserName(String, Boolean)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
    //#JPAUserManagerImpl.java:683: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: User getUserByUserName(String, Boolean)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getId()
        }
        
        return user;
    //#JPAUserManagerImpl.java:686: end of method: User org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserByUserName(String, Boolean)
    }
    
    public List getUsers(Weblog weblog, Boolean enabled, Date startDate,
            Date endDate, int offset, int length)
            throws WebloggerException {
        Query query = null;
    //#JPAUserManagerImpl.java:692: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsers(Weblog, Boolean, Date, Date, int, int)
    //#JPAUserManagerImpl.java:692: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Weblog, Boolean, Date, Date, int, int)
    //#    Attribs:  Uncertain
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): " AND "._tainted
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): " AND u.dateCreated < ?"._tainted
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): " ORDER BY u.dateCreated DESC"._tainted
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): " WHERE "._tainted
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): " WHERE p.website = ?"._tainted
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): "SELECT u FROM User u "._tainted
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): "SELECT u FROM User u JOIN u.permissions p "._tainted
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): "u.dateCreated > ?"._tainted
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): "u.enabled = ?"._tainted
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): enabled
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): endDate
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): length
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): offset
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getDynamicQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): startDate
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): this
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): this.strategy
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): this.strategy.__Tag
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): this.strategy.emf
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): this.strategy.threadLocalEntityManager
    //#input(List getUsers(Weblog, Boolean, Date, Date, int, int)): weblog
    //#output(List getUsers(Weblog, Boolean, Date, Date, int, int)): return_value
    //#pre[15] (List getUsers(Weblog, Boolean, Date, Date, int, int)): this.strategy != null
    //#pre[16] (List getUsers(Weblog, Boolean, Date, Date, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[18] (List getUsers(Weblog, Boolean, Date, Date, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[17] (List getUsers(Weblog, Boolean, Date, Date, int, int)): (soft) this.strategy.emf != null
    //#post(List getUsers(Weblog, Boolean, Date, Date, int, int)): init'ed(return_value)
    //#unanalyzed(List getUsers(Weblog, Boolean, Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getUsers(Weblog, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getUsers(Weblog, Boolean, Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getUsers(Weblog, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getUsers(Weblog, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getUsers(Weblog, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getUsers(Weblog, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getUsers(Weblog, Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:createQuery
    //#test_vector(List getUsers(Weblog, Boolean, Date, Date, int, int)): enabled: Addr_Set{null}, Inverse{null}
    //#test_vector(List getUsers(Weblog, Boolean, Date, Date, int, int)): endDate: Inverse{null}, Addr_Set{null}
    //#test_vector(List getUsers(Weblog, Boolean, Date, Date, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getUsers(Weblog, Boolean, Date, Date, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(List getUsers(Weblog, Boolean, Date, Date, int, int)): startDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getUsers(Weblog, Boolean, Date, Date, int, int)): weblog: Addr_Set{null}, Inverse{null}
    //#test_vector(List getUsers(Weblog, Boolean, Date, Date, int, int)): java.lang.StringBuffer:length(...)@714: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(List getUsers(Weblog, Boolean, Date, Date, int, int)): java.lang.StringBuffer:length(...)@724: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
        List results = null;
    //#JPAUserManagerImpl.java:693: Warning: unused assignment
    //#    unused assignment into results
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Weblog, Boolean, Date, Date, int, int)
    //#    Attribs:  Uncertain
        
        // if we are doing date range then we must have an end date
        if (startDate != null && endDate == null) {
            endDate = new Date();
        }

        List params = new ArrayList();
        int size = 0;
        StringBuffer queryString = new StringBuffer();
        StringBuffer whereClause = new StringBuffer();
                            
        if (weblog != null) {
            queryString.append("SELECT u FROM User u JOIN u.permissions p ");
            params.add(size++, weblog);
            whereClause.append(" WHERE p.website = ?" + size);   
        } else {
            queryString.append("SELECT u FROM User u ");
        }         

        if (enabled != null) {
            if (whereClause.length() == 0) {
                whereClause.append(" WHERE ");
            } else {
                whereClause.append(" AND ");
            }
            params.add(size++, enabled);
            whereClause.append("u.enabled = ?" + size);  
        }

        if (startDate != null) {
            if (whereClause.length() == 0) {
                whereClause.append(" WHERE ");
            } else {
                whereClause.append(" AND ");
            }

            // if we are doing date range then we must have an end date
            if(endDate == null) {
    //#JPAUserManagerImpl.java:731: Warning: test always goes same way
    //#    test predetermined because endDate != null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Weblog, Boolean, Date, Date, int, int)
    //#    from bb: bb_16
    //#    live edge: bb_16-->bb_18
    //#    tested vn: endDate == null
    //#    tested vn values: {0}
                endDate = new Date();
    //#JPAUserManagerImpl.java:732: Warning: dead code
    //#    dead code here because endDate != null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Weblog, Boolean, Date, Date, int, int)
    //#    dead bb: bb_17
            }
            Timestamp start = new Timestamp(startDate.getTime());
            Timestamp end = new Timestamp(endDate.getTime());
            params.add(size++, start);
            whereClause.append("u.dateCreated > ?" + size);
            params.add(size++, end);
            whereClause.append(" AND u.dateCreated < ?" + size);
        }
        whereClause.append(" ORDER BY u.dateCreated DESC");
        query = strategy.getDynamicQuery(queryString.toString() + whereClause.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();
    //#JPAUserManagerImpl.java:753: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsers(Weblog, Boolean, Date, Date, int, int)
    }
    
    public List getUsers(int offset, int length) throws WebloggerException {
        return getUsers(Boolean.TRUE, null, null, offset, length);
    //#JPAUserManagerImpl.java:757: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsers(int, int)
    //#input(List getUsers(int, int)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(List getUsers(int, int)): __Descendant_Table[others]
    //#input(List getUsers(int, int)): __Dispatch_Table.getUsers(Ljava/lang/Boolean;Ljava/util/Date;Ljava/util/Date;II)Ljava/util/List;
    //#input(List getUsers(int, int)): java.lang.Boolean.TRUE
    //#input(List getUsers(int, int)): length
    //#input(List getUsers(int, int)): offset
    //#input(List getUsers(int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getUsers(int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getUsers(int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getUsers(int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getUsers(int, int)): this
    //#input(List getUsers(int, int)): this.__Tag
    //#input(List getUsers(int, int)): this.strategy
    //#input(List getUsers(int, int)): this.strategy.__Tag
    //#input(List getUsers(int, int)): this.strategy.emf
    //#input(List getUsers(int, int)): this.strategy.threadLocalEntityManager
    //#output(List getUsers(int, int)): return_value
    //#pre[4] (List getUsers(int, int)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl
    //#pre[5] (List getUsers(int, int)): this.strategy != null
    //#pre[6] (List getUsers(int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (List getUsers(int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (List getUsers(int, int)): (soft) this.strategy.emf != null
    //#presumption(List getUsers(int, int)): init'ed(java.lang.Boolean.TRUE)
    //#post(List getUsers(int, int)): init'ed(return_value)
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.Query:getResultList
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.Query:setFirstResult
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:javax.persistence.Query:setMaxResults
    //#unanalyzed(List getUsers(int, int)): Effects-of-calling:java.util.Date
    //#JPAUserManagerImpl.java:757: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsers(int, int)
    }
    
    public List getUsers(Boolean enabled, Date startDate, Date endDate,
            int offset, int length)
            throws WebloggerException {
        Query query = null;
    //#JPAUserManagerImpl.java:763: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsers(Boolean, Date, Date, int, int)
    //#JPAUserManagerImpl.java:763: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Boolean, Date, Date, int, int)
    //#    Attribs:  Uncertain
    //#input(List getUsers(Boolean, Date, Date, int, int)): enabled
    //#input(List getUsers(Boolean, Date, Date, int, int)): endDate
    //#input(List getUsers(Boolean, Date, Date, int, int)): length
    //#input(List getUsers(Boolean, Date, Date, int, int)): offset
    //#input(List getUsers(Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getUsers(Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getUsers(Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getUsers(Boolean, Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getUsers(Boolean, Date, Date, int, int)): startDate
    //#input(List getUsers(Boolean, Date, Date, int, int)): this
    //#input(List getUsers(Boolean, Date, Date, int, int)): this.strategy
    //#input(List getUsers(Boolean, Date, Date, int, int)): this.strategy.__Tag
    //#input(List getUsers(Boolean, Date, Date, int, int)): this.strategy.emf
    //#input(List getUsers(Boolean, Date, Date, int, int)): this.strategy.threadLocalEntityManager
    //#output(List getUsers(Boolean, Date, Date, int, int)): return_value
    //#pre[19] (List getUsers(Boolean, Date, Date, int, int)): this.strategy != null
    //#pre[20] (List getUsers(Boolean, Date, Date, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[22] (List getUsers(Boolean, Date, Date, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[21] (List getUsers(Boolean, Date, Date, int, int)): (soft) this.strategy.emf != null
    //#post(List getUsers(Boolean, Date, Date, int, int)): init'ed(return_value)
    //#unanalyzed(List getUsers(Boolean, Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getUsers(Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getUsers(Boolean, Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getUsers(Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getUsers(Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getUsers(Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getUsers(Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getUsers(Boolean, Date, Date, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getUsers(Boolean, Date, Date, int, int)): enabled: Addr_Set{null}, Inverse{null}
    //#test_vector(List getUsers(Boolean, Date, Date, int, int)): endDate: Inverse{null}, Addr_Set{null}
    //#test_vector(List getUsers(Boolean, Date, Date, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getUsers(Boolean, Date, Date, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(List getUsers(Boolean, Date, Date, int, int)): startDate: Addr_Set{null}, Inverse{null}
        List results = null;
    //#JPAUserManagerImpl.java:764: Warning: unused assignment
    //#    unused assignment into results
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Boolean, Date, Date, int, int)
    //#    Attribs:  Uncertain
        boolean setRange = offset != 0 || length != -1;
    //#JPAUserManagerImpl.java:765: Warning: unused assignment
    //#    unused assignment into setRange
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Boolean, Date, Date, int, int)
        
        if (endDate == null) endDate = new Date();
        
        if (enabled != null) {
            if (startDate != null) {
                Timestamp start = new Timestamp(startDate.getTime());
                Timestamp end = new Timestamp(endDate.getTime());
                query = strategy.getNamedQuery(
                        "User.getByEnabled&EndDate&StartDateOrderByStartDateDesc");
                query.setParameter(1, enabled);
                query.setParameter(2, end);
                query.setParameter(3, start);
            } else {
                Timestamp end = new Timestamp(endDate.getTime());
                query = strategy.getNamedQuery(
                        "User.getByEnabled&EndDateOrderByStartDateDesc");
                query.setParameter(1, enabled);
                query.setParameter(2, end);
            }
        } else {
            if (startDate != null) {
                Timestamp start = new Timestamp(startDate.getTime());
                Timestamp end = new Timestamp(endDate.getTime());
                query = strategy.getNamedQuery(
                        "User.getByEndDate&StartDateOrderByStartDateDesc");
                query.setParameter(1, end);
                query.setParameter(2, start);
            } else {
                Timestamp end = new Timestamp(endDate.getTime());
                query = strategy.getNamedQuery(
                        "User.getByEndDateOrderByStartDateDesc");
                query.setParameter(1, end);
            }
        }
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }
        return query.getResultList();
    //#JPAUserManagerImpl.java:806: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsers(Boolean, Date, Date, int, int)
    }
    
    /**
     * Get users of a website
     */
    public List getUsers(Weblog website, Boolean enabled, int offset, int length) throws WebloggerException {
        Query query = null;
    //#JPAUserManagerImpl.java:813: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsers(Weblog, Boolean, int, int)
    //#JPAUserManagerImpl.java:813: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Weblog, Boolean, int, int)
    //#    Attribs:  Uncertain
    //#input(List getUsers(Weblog, Boolean, int, int)): enabled
    //#input(List getUsers(Weblog, Boolean, int, int)): length
    //#input(List getUsers(Weblog, Boolean, int, int)): offset
    //#input(List getUsers(Weblog, Boolean, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getUsers(Weblog, Boolean, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getUsers(Weblog, Boolean, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getUsers(Weblog, Boolean, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getUsers(Weblog, Boolean, int, int)): this
    //#input(List getUsers(Weblog, Boolean, int, int)): this.strategy
    //#input(List getUsers(Weblog, Boolean, int, int)): this.strategy.__Tag
    //#input(List getUsers(Weblog, Boolean, int, int)): this.strategy.emf
    //#input(List getUsers(Weblog, Boolean, int, int)): this.strategy.threadLocalEntityManager
    //#input(List getUsers(Weblog, Boolean, int, int)): website
    //#output(List getUsers(Weblog, Boolean, int, int)): return_value
    //#pre[17] (List getUsers(Weblog, Boolean, int, int)): this.strategy != null
    //#pre[18] (List getUsers(Weblog, Boolean, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[20] (List getUsers(Weblog, Boolean, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[19] (List getUsers(Weblog, Boolean, int, int)): (soft) this.strategy.emf != null
    //#post(List getUsers(Weblog, Boolean, int, int)): init'ed(return_value)
    //#unanalyzed(List getUsers(Weblog, Boolean, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getUsers(Weblog, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getUsers(Weblog, Boolean, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getUsers(Weblog, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getUsers(Weblog, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getUsers(Weblog, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getUsers(Weblog, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getUsers(Weblog, Boolean, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getUsers(Weblog, Boolean, int, int)): enabled: Addr_Set{null}, Inverse{null}
    //#test_vector(List getUsers(Weblog, Boolean, int, int)): length: {-2_147_483_648..-2, 0..4_294_967_295}, {-1}
    //#test_vector(List getUsers(Weblog, Boolean, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(List getUsers(Weblog, Boolean, int, int)): website: Addr_Set{null}, Inverse{null}
        List results = null;
    //#JPAUserManagerImpl.java:814: Warning: unused assignment
    //#    unused assignment into results
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Weblog, Boolean, int, int)
    //#    Attribs:  Uncertain
        boolean setRange = offset != 0 || length != -1;
    //#JPAUserManagerImpl.java:815: Warning: unused assignment
    //#    unused assignment into setRange
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsers(Weblog, Boolean, int, int)
        
        if (length == -1) {
            length = Integer.MAX_VALUE - offset;
        }
        
        if (enabled != null) {
            if (website != null) {
                query = strategy.getNamedQuery("User.getByEnabled&Permissions.website");
                query.setParameter(1, enabled);
                query.setParameter(2, website);
            } else {
                query = strategy.getNamedQuery("User.getByEnabled");
                query.setParameter(1, enabled);
            }
        } else {
            if (website != null) {
                query = strategy.getNamedQuery("User.getByPermissions.website");
                query.setParameter(1, website);
            } else {
                query = strategy.getNamedQuery("User.getAll");
            }
        }
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }
        return query.getResultList();
    //#JPAUserManagerImpl.java:844: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsers(Weblog, Boolean, int, int)
    }
    
    public List getUsersStartingWith(String startsWith, Boolean enabled,
            int offset, int length) throws WebloggerException {
        Query query = null;
    //#JPAUserManagerImpl.java:849: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsersStartingWith(String, Boolean, int, int)
    //#JPAUserManagerImpl.java:849: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getUsersStartingWith(String, Boolean, int, int)
    //#    Attribs:  Uncertain
    //#input(List getUsersStartingWith(String, Boolean, int, int)): enabled
    //#input(List getUsersStartingWith(String, Boolean, int, int)): length
    //#input(List getUsersStartingWith(String, Boolean, int, int)): offset
    //#input(List getUsersStartingWith(String, Boolean, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getUsersStartingWith(String, Boolean, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getUsersStartingWith(String, Boolean, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getUsersStartingWith(String, Boolean, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getUsersStartingWith(String, Boolean, int, int)): startsWith
    //#input(List getUsersStartingWith(String, Boolean, int, int)): startsWith._tainted
    //#input(List getUsersStartingWith(String, Boolean, int, int)): this
    //#input(List getUsersStartingWith(String, Boolean, int, int)): this.strategy
    //#input(List getUsersStartingWith(String, Boolean, int, int)): this.strategy.__Tag
    //#input(List getUsersStartingWith(String, Boolean, int, int)): this.strategy.emf
    //#input(List getUsersStartingWith(String, Boolean, int, int)): this.strategy.threadLocalEntityManager
    //#output(List getUsersStartingWith(String, Boolean, int, int)): return_value
    //#pre[17] (List getUsersStartingWith(String, Boolean, int, int)): this.strategy != null
    //#pre[18] (List getUsersStartingWith(String, Boolean, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[20] (List getUsersStartingWith(String, Boolean, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[19] (List getUsersStartingWith(String, Boolean, int, int)): (soft) this.strategy.emf != null
    //#post(List getUsersStartingWith(String, Boolean, int, int)): init'ed(return_value)
    //#unanalyzed(List getUsersStartingWith(String, Boolean, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getUsersStartingWith(String, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getUsersStartingWith(String, Boolean, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getUsersStartingWith(String, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getUsersStartingWith(String, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getUsersStartingWith(String, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getUsersStartingWith(String, Boolean, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getUsersStartingWith(String, Boolean, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getUsersStartingWith(String, Boolean, int, int)): enabled: Addr_Set{null}, Inverse{null}
    //#test_vector(List getUsersStartingWith(String, Boolean, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getUsersStartingWith(String, Boolean, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(List getUsersStartingWith(String, Boolean, int, int)): startsWith: Addr_Set{null}, Inverse{null}
        
        if (enabled != null) {
            if (startsWith != null) {
                query = strategy.getNamedQuery(
                        "User.getByEnabled&UserNameOrEmailAddressStartsWith");
                query.setParameter(1, enabled);
                query.setParameter(2, startsWith + '%');
                query.setParameter(3, startsWith + '%');
            } else {
                query = strategy.getNamedQuery(
                        "User.getByEnabled");
                query.setParameter(1, enabled);
            }
        } else {
            if (startsWith != null) {
                query = strategy.getNamedQuery(
                        "User.getByUserNameOrEmailAddressStartsWith");
                query.setParameter(1, startsWith +  '%');
            } else {
                query = strategy.getNamedQuery("User.getAll");
            }
        }
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }
        return query.getResultList();
    //#JPAUserManagerImpl.java:878: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsersStartingWith(String, Boolean, int, int)
    }
    
    public WeblogTemplate getPage(String id) throws WebloggerException {
        // Don't hit database for templates stored on disk
        if (id != null && id.endsWith(".vm")) return null;
    //#JPAUserManagerImpl.java:883: method: WeblogTemplate org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPage(String)
    //#input(WeblogTemplate getPage(String)): id
    //#input(WeblogTemplate getPage(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogTemplate getPage(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogTemplate getPage(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(WeblogTemplate getPage(String)): this
    //#input(WeblogTemplate getPage(String)): this.strategy
    //#input(WeblogTemplate getPage(String)): this.strategy.__Tag
    //#input(WeblogTemplate getPage(String)): this.strategy.emf
    //#input(WeblogTemplate getPage(String)): this.strategy.threadLocalEntityManager
    //#output(WeblogTemplate getPage(String)): return_value
    //#pre[3] (WeblogTemplate getPage(String)): (soft) this.strategy != null
    //#pre[4] (WeblogTemplate getPage(String)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (WeblogTemplate getPage(String)): (soft) this.strategy.emf != null
    //#pre[6] (WeblogTemplate getPage(String)): (soft) this.strategy.threadLocalEntityManager != null
    //#post(WeblogTemplate getPage(String)): init'ed(return_value)
    //#unanalyzed(WeblogTemplate getPage(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogTemplate getPage(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogTemplate getPage(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogTemplate getPage(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogTemplate getPage(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogTemplate getPage(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogTemplate getPage(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#test_vector(WeblogTemplate getPage(String)): id: Addr_Set{null}, Inverse{null}
    //#test_vector(WeblogTemplate getPage(String)): java.lang.String:endsWith(...)@883: {0}, {1}
        
        return (WeblogTemplate)this.strategy.load(WeblogTemplate.class,id);
    //#JPAUserManagerImpl.java:885: end of method: WeblogTemplate org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPage(String)
    }
    
    /**
     * Use JPA directly because Weblogger's Query API does too much allocation.
     */
    public WeblogTemplate getPageByLink(Weblog website, String pagelink)
    throws WebloggerException {
        
        if (website == null)
    //#JPAUserManagerImpl.java:894: method: WeblogTemplate org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPageByLink(Weblog, String)
    //#input(WeblogTemplate getPageByLink(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogTemplate getPageByLink(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogTemplate getPageByLink(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogTemplate getPageByLink(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogTemplate getPageByLink(Weblog, String)): pagelink
    //#input(WeblogTemplate getPageByLink(Weblog, String)): this
    //#input(WeblogTemplate getPageByLink(Weblog, String)): this.strategy
    //#input(WeblogTemplate getPageByLink(Weblog, String)): this.strategy.__Tag
    //#input(WeblogTemplate getPageByLink(Weblog, String)): this.strategy.emf
    //#input(WeblogTemplate getPageByLink(Weblog, String)): this.strategy.threadLocalEntityManager
    //#input(WeblogTemplate getPageByLink(Weblog, String)): website
    //#output(WeblogTemplate getPageByLink(Weblog, String)): return_value
    //#pre[1] (WeblogTemplate getPageByLink(Weblog, String)): pagelink != null
    //#pre[3] (WeblogTemplate getPageByLink(Weblog, String)): this.strategy != null
    //#pre[4] (WeblogTemplate getPageByLink(Weblog, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (WeblogTemplate getPageByLink(Weblog, String)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (WeblogTemplate getPageByLink(Weblog, String)): website != null
    //#pre[5] (WeblogTemplate getPageByLink(Weblog, String)): (soft) this.strategy.emf != null
    //#post(WeblogTemplate getPageByLink(Weblog, String)): init'ed(return_value)
    //#unanalyzed(WeblogTemplate getPageByLink(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogTemplate getPageByLink(Weblog, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogTemplate getPageByLink(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogTemplate getPageByLink(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogTemplate getPageByLink(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogTemplate getPageByLink(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogTemplate getPageByLink(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogTemplate getPageByLink(Weblog, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
            throw new WebloggerException("userName is null");
        
        if (pagelink == null)
            throw new WebloggerException("Pagelink is null");
        
        Query query = strategy.getNamedQuery("WeblogTemplate.getByWebsite&Link");
        query.setParameter(1, website);
        query.setParameter(2, pagelink);
        try {
            return (WeblogTemplate)query.getSingleResult();
        } catch (NoResultException e) {
            return null;
    //#JPAUserManagerImpl.java:906: end of method: WeblogTemplate org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPageByLink(Weblog, String)
        }
    }
    
    /**
     * @see org.apache.roller.weblogger.model.UserManager#getPageByAction(Weblog, java.lang.String)
     */
    public WeblogTemplate getPageByAction(Weblog website, String action)
            throws WebloggerException {
        
        if (website == null)
    //#JPAUserManagerImpl.java:916: method: WeblogTemplate org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPageByAction(Weblog, String)
    //#input(WeblogTemplate getPageByAction(Weblog, String)): action
    //#input(WeblogTemplate getPageByAction(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogTemplate getPageByAction(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogTemplate getPageByAction(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogTemplate getPageByAction(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogTemplate getPageByAction(Weblog, String)): this
    //#input(WeblogTemplate getPageByAction(Weblog, String)): this.strategy
    //#input(WeblogTemplate getPageByAction(Weblog, String)): this.strategy.__Tag
    //#input(WeblogTemplate getPageByAction(Weblog, String)): this.strategy.emf
    //#input(WeblogTemplate getPageByAction(Weblog, String)): this.strategy.threadLocalEntityManager
    //#input(WeblogTemplate getPageByAction(Weblog, String)): website
    //#output(WeblogTemplate getPageByAction(Weblog, String)): return_value
    //#pre[1] (WeblogTemplate getPageByAction(Weblog, String)): action != null
    //#pre[3] (WeblogTemplate getPageByAction(Weblog, String)): this.strategy != null
    //#pre[4] (WeblogTemplate getPageByAction(Weblog, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (WeblogTemplate getPageByAction(Weblog, String)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (WeblogTemplate getPageByAction(Weblog, String)): website != null
    //#pre[5] (WeblogTemplate getPageByAction(Weblog, String)): (soft) this.strategy.emf != null
    //#post(WeblogTemplate getPageByAction(Weblog, String)): init'ed(return_value)
    //#unanalyzed(WeblogTemplate getPageByAction(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogTemplate getPageByAction(Weblog, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogTemplate getPageByAction(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogTemplate getPageByAction(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogTemplate getPageByAction(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogTemplate getPageByAction(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogTemplate getPageByAction(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogTemplate getPageByAction(Weblog, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
            throw new WebloggerException("website is null");
        
        if (action == null)
            throw new WebloggerException("Action name is null");
        
        
        Query query = strategy.getNamedQuery("WeblogTemplate.getByAction"); 
        query.setParameter(1, website);
        query.setParameter(2, action);
        try {
            return (WeblogTemplate)query.getSingleResult();
        } catch (NoResultException e) {
            return null;
    //#JPAUserManagerImpl.java:929: end of method: WeblogTemplate org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPageByAction(Weblog, String)
        }        
    }
    
    /**
     * @see org.apache.roller.weblogger.model.UserManager#getPageByName(Weblog, java.lang.String)
     */
    public WeblogTemplate getPageByName(Weblog website, String pagename)
    throws WebloggerException {
        
        if (website == null)
    //#JPAUserManagerImpl.java:939: method: WeblogTemplate org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPageByName(Weblog, String)
    //#input(WeblogTemplate getPageByName(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogTemplate getPageByName(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogTemplate getPageByName(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogTemplate getPageByName(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogTemplate getPageByName(Weblog, String)): pagename
    //#input(WeblogTemplate getPageByName(Weblog, String)): this
    //#input(WeblogTemplate getPageByName(Weblog, String)): this.strategy
    //#input(WeblogTemplate getPageByName(Weblog, String)): this.strategy.__Tag
    //#input(WeblogTemplate getPageByName(Weblog, String)): this.strategy.emf
    //#input(WeblogTemplate getPageByName(Weblog, String)): this.strategy.threadLocalEntityManager
    //#input(WeblogTemplate getPageByName(Weblog, String)): website
    //#output(WeblogTemplate getPageByName(Weblog, String)): return_value
    //#pre[1] (WeblogTemplate getPageByName(Weblog, String)): pagename != null
    //#pre[3] (WeblogTemplate getPageByName(Weblog, String)): this.strategy != null
    //#pre[4] (WeblogTemplate getPageByName(Weblog, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (WeblogTemplate getPageByName(Weblog, String)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (WeblogTemplate getPageByName(Weblog, String)): website != null
    //#pre[5] (WeblogTemplate getPageByName(Weblog, String)): (soft) this.strategy.emf != null
    //#post(WeblogTemplate getPageByName(Weblog, String)): init'ed(return_value)
    //#unanalyzed(WeblogTemplate getPageByName(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogTemplate getPageByName(Weblog, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogTemplate getPageByName(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogTemplate getPageByName(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogTemplate getPageByName(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogTemplate getPageByName(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogTemplate getPageByName(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogTemplate getPageByName(Weblog, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
            throw new WebloggerException("website is null");
        
        if (pagename == null)
            throw new WebloggerException("Page name is null");
        
        Query query = strategy.getNamedQuery("WeblogTemplate.getByWebsite&Name");
        query.setParameter(1, website);
        query.setParameter(2, pagename);
        try {
            return (WeblogTemplate)query.getSingleResult();
        } catch (NoResultException e) {
            return null;
    //#JPAUserManagerImpl.java:951: end of method: WeblogTemplate org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPageByName(Weblog, String)
        }
    }
    
    /**
     * @see org.apache.roller.weblogger.model.UserManager#getPages(Weblog)
     */
    public List getPages(Weblog website) throws WebloggerException {
        if (website == null)
    //#JPAUserManagerImpl.java:959: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPages(Weblog)
    //#input(List getPages(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getPages(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getPages(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getPages(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getPages(Weblog)): this
    //#input(List getPages(Weblog)): this.strategy
    //#input(List getPages(Weblog)): this.strategy.__Tag
    //#input(List getPages(Weblog)): this.strategy.emf
    //#input(List getPages(Weblog)): this.strategy.threadLocalEntityManager
    //#input(List getPages(Weblog)): website
    //#output(List getPages(Weblog)): return_value
    //#pre[2] (List getPages(Weblog)): this.strategy != null
    //#pre[3] (List getPages(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getPages(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (List getPages(Weblog)): website != null
    //#pre[4] (List getPages(Weblog)): (soft) this.strategy.emf != null
    //#post(List getPages(Weblog)): init'ed(return_value)
    //#unanalyzed(List getPages(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getPages(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getPages(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getPages(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getPages(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getPages(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getPages(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getPages(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
            throw new WebloggerException("website is null");
        Query q = strategy.getNamedQuery(
                "WeblogTemplate.getByWebsiteOrderByName");
        q.setParameter(1, website);
        return q.getResultList();
    //#JPAUserManagerImpl.java:964: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPages(Weblog)
    }
    
    public WeblogPermission getPermissions(String inviteId)
    throws WebloggerException {
        return (WeblogPermission)this.strategy.load(
    //#JPAUserManagerImpl.java:969: method: WeblogPermission org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPermissions(String)
    //#input(WeblogPermission getPermissions(String)): inviteId
    //#input(WeblogPermission getPermissions(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogPermission getPermissions(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogPermission getPermissions(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(WeblogPermission getPermissions(String)): this
    //#input(WeblogPermission getPermissions(String)): this.strategy
    //#input(WeblogPermission getPermissions(String)): this.strategy.__Tag
    //#input(WeblogPermission getPermissions(String)): this.strategy.emf
    //#input(WeblogPermission getPermissions(String)): this.strategy.threadLocalEntityManager
    //#output(WeblogPermission getPermissions(String)): return_value
    //#pre[3] (WeblogPermission getPermissions(String)): this.strategy != null
    //#pre[4] (WeblogPermission getPermissions(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (WeblogPermission getPermissions(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (WeblogPermission getPermissions(String)): (soft) this.strategy.emf != null
    //#post(WeblogPermission getPermissions(String)): init'ed(return_value)
    //#unanalyzed(WeblogPermission getPermissions(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogPermission getPermissions(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogPermission getPermissions(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogPermission getPermissions(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogPermission getPermissions(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogPermission getPermissions(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogPermission getPermissions(String)): Effects-of-calling:javax.persistence.EntityManager:find
    //#JPAUserManagerImpl.java:969: end of method: WeblogPermission org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPermissions(String)
                WeblogPermission.class, inviteId);
    }
    
    /**
     * Return permissions for specified user in website
     */
    public WeblogPermission getPermissions(
            Weblog website, User user) throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPAUserManagerImpl.java:978: method: WeblogPermission org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPermissions(Weblog, User)
    //#input(WeblogPermission getPermissions(Weblog, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogPermission getPermissions(Weblog, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogPermission getPermissions(Weblog, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogPermission getPermissions(Weblog, User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogPermission getPermissions(Weblog, User)): this
    //#input(WeblogPermission getPermissions(Weblog, User)): this.strategy
    //#input(WeblogPermission getPermissions(Weblog, User)): this.strategy.__Tag
    //#input(WeblogPermission getPermissions(Weblog, User)): this.strategy.emf
    //#input(WeblogPermission getPermissions(Weblog, User)): this.strategy.threadLocalEntityManager
    //#input(WeblogPermission getPermissions(Weblog, User)): user
    //#input(WeblogPermission getPermissions(Weblog, User)): website
    //#output(WeblogPermission getPermissions(Weblog, User)): return_value
    //#pre[2] (WeblogPermission getPermissions(Weblog, User)): this.strategy != null
    //#pre[3] (WeblogPermission getPermissions(Weblog, User)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (WeblogPermission getPermissions(Weblog, User)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (WeblogPermission getPermissions(Weblog, User)): (soft) this.strategy.emf != null
    //#post(WeblogPermission getPermissions(Weblog, User)): init'ed(return_value)
    //#unanalyzed(WeblogPermission getPermissions(Weblog, User)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogPermission getPermissions(Weblog, User)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogPermission getPermissions(Weblog, User)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogPermission getPermissions(Weblog, User)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogPermission getPermissions(Weblog, User)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogPermission getPermissions(Weblog, User)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogPermission getPermissions(Weblog, User)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogPermission getPermissions(Weblog, User)): Effects-of-calling:javax.persistence.Query:setFlushMode
                "WeblogPermission.getByWebsiteAndUser");
        q.setParameter(1, website);
        q.setParameter(2, user);
        try {
            return (WeblogPermission)q.getSingleResult();
        } catch (NoResultException e) {
            return null;
    //#JPAUserManagerImpl.java:985: end of method: WeblogPermission org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPermissions(Weblog, User)
        }
    }
    
    /**
     * Get pending permissions for user
     */
    public List getPendingPermissions(User user) throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPAUserManagerImpl.java:993: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPendingPermissions(User)
    //#input(List getPendingPermissions(User)): java.lang.Boolean.TRUE
    //#input(List getPendingPermissions(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getPendingPermissions(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getPendingPermissions(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getPendingPermissions(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getPendingPermissions(User)): this
    //#input(List getPendingPermissions(User)): this.strategy
    //#input(List getPendingPermissions(User)): this.strategy.__Tag
    //#input(List getPendingPermissions(User)): this.strategy.emf
    //#input(List getPendingPermissions(User)): this.strategy.threadLocalEntityManager
    //#input(List getPendingPermissions(User)): user
    //#output(List getPendingPermissions(User)): return_value
    //#pre[2] (List getPendingPermissions(User)): this.strategy != null
    //#pre[3] (List getPendingPermissions(User)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getPendingPermissions(User)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (List getPendingPermissions(User)): (soft) this.strategy.emf != null
    //#presumption(List getPendingPermissions(User)): init'ed(java.lang.Boolean.TRUE)
    //#post(List getPendingPermissions(User)): init'ed(return_value)
    //#unanalyzed(List getPendingPermissions(User)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getPendingPermissions(User)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getPendingPermissions(User)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getPendingPermissions(User)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getPendingPermissions(User)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getPendingPermissions(User)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getPendingPermissions(User)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getPendingPermissions(User)): Effects-of-calling:javax.persistence.Query:setFlushMode
                "WeblogPermission.getByUserAndPending");
        q.setParameter(1, user);
        q.setParameter(2, Boolean.TRUE);
        return q.getResultList();
    //#JPAUserManagerImpl.java:997: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPendingPermissions(User)
    }
    
    /**
     * Get pending permissions for website
     */
    public List getPendingPermissions(Weblog website) throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPAUserManagerImpl.java:1004: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPendingPermissions(Weblog)
    //#input(List getPendingPermissions(Weblog)): java.lang.Boolean.TRUE
    //#input(List getPendingPermissions(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getPendingPermissions(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getPendingPermissions(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getPendingPermissions(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getPendingPermissions(Weblog)): this
    //#input(List getPendingPermissions(Weblog)): this.strategy
    //#input(List getPendingPermissions(Weblog)): this.strategy.__Tag
    //#input(List getPendingPermissions(Weblog)): this.strategy.emf
    //#input(List getPendingPermissions(Weblog)): this.strategy.threadLocalEntityManager
    //#input(List getPendingPermissions(Weblog)): website
    //#output(List getPendingPermissions(Weblog)): return_value
    //#pre[2] (List getPendingPermissions(Weblog)): this.strategy != null
    //#pre[3] (List getPendingPermissions(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getPendingPermissions(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (List getPendingPermissions(Weblog)): (soft) this.strategy.emf != null
    //#presumption(List getPendingPermissions(Weblog)): init'ed(java.lang.Boolean.TRUE)
    //#post(List getPendingPermissions(Weblog)): init'ed(return_value)
    //#unanalyzed(List getPendingPermissions(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getPendingPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getPendingPermissions(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getPendingPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getPendingPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getPendingPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getPendingPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getPendingPermissions(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
                "WeblogPermission.getByWebsiteAndPending");
        q.setParameter(1, website);
        q.setParameter(2, Boolean.TRUE);
        return q.getResultList();
    //#JPAUserManagerImpl.java:1008: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getPendingPermissions(Weblog)
    }
    
    /**
     * Get all permissions of a website (pendings not including)
     */
    public List getAllPermissions(Weblog website) throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPAUserManagerImpl.java:1015: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getAllPermissions(Weblog)
    //#input(List getAllPermissions(Weblog)): java.lang.Boolean.FALSE
    //#input(List getAllPermissions(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getAllPermissions(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getAllPermissions(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getAllPermissions(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getAllPermissions(Weblog)): this
    //#input(List getAllPermissions(Weblog)): this.strategy
    //#input(List getAllPermissions(Weblog)): this.strategy.__Tag
    //#input(List getAllPermissions(Weblog)): this.strategy.emf
    //#input(List getAllPermissions(Weblog)): this.strategy.threadLocalEntityManager
    //#input(List getAllPermissions(Weblog)): website
    //#output(List getAllPermissions(Weblog)): return_value
    //#pre[2] (List getAllPermissions(Weblog)): this.strategy != null
    //#pre[3] (List getAllPermissions(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getAllPermissions(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (List getAllPermissions(Weblog)): (soft) this.strategy.emf != null
    //#presumption(List getAllPermissions(Weblog)): init'ed(java.lang.Boolean.FALSE)
    //#post(List getAllPermissions(Weblog)): init'ed(return_value)
    //#unanalyzed(List getAllPermissions(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getAllPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getAllPermissions(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getAllPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getAllPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getAllPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getAllPermissions(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getAllPermissions(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
                "WeblogPermission.getByWebsiteAndPending");
        q.setParameter(1, website);
        q.setParameter(2, Boolean.FALSE);
        return q.getResultList();
    //#JPAUserManagerImpl.java:1019: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getAllPermissions(Weblog)
    }
    
    /**
     * Get all permissions of a user.
     */
    public List getAllPermissions(User user) throws WebloggerException {
        Query q = strategy.getNamedQuery(
    //#JPAUserManagerImpl.java:1026: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getAllPermissions(User)
    //#input(List getAllPermissions(User)): java.lang.Boolean.FALSE
    //#input(List getAllPermissions(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getAllPermissions(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getAllPermissions(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getAllPermissions(User)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getAllPermissions(User)): this
    //#input(List getAllPermissions(User)): this.strategy
    //#input(List getAllPermissions(User)): this.strategy.__Tag
    //#input(List getAllPermissions(User)): this.strategy.emf
    //#input(List getAllPermissions(User)): this.strategy.threadLocalEntityManager
    //#input(List getAllPermissions(User)): user
    //#output(List getAllPermissions(User)): return_value
    //#pre[2] (List getAllPermissions(User)): this.strategy != null
    //#pre[3] (List getAllPermissions(User)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getAllPermissions(User)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (List getAllPermissions(User)): (soft) this.strategy.emf != null
    //#presumption(List getAllPermissions(User)): init'ed(java.lang.Boolean.FALSE)
    //#post(List getAllPermissions(User)): init'ed(return_value)
    //#unanalyzed(List getAllPermissions(User)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getAllPermissions(User)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getAllPermissions(User)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getAllPermissions(User)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getAllPermissions(User)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getAllPermissions(User)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getAllPermissions(User)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getAllPermissions(User)): Effects-of-calling:javax.persistence.Query:setFlushMode
                "WeblogPermission.getByUserAndPending");
        q.setParameter(1, user);
        q.setParameter(2, Boolean.FALSE);
        return q.getResultList();        
    //#JPAUserManagerImpl.java:1030: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getAllPermissions(User)
    }
    
    public void release() {}
    //#JPAUserManagerImpl.java:1033: method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.release()
    //#JPAUserManagerImpl.java:1033: end of method: void org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.release()
    
    public Map getUserNameLetterMap() throws WebloggerException {
        String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    //#JPAUserManagerImpl.java:1036: method: Map org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserNameLetterMap()
    //#input(Map getUserNameLetterMap()): "%"._tainted
    //#input(Map getUserNameLetterMap()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Map getUserNameLetterMap()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Map getUserNameLetterMap()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Map getUserNameLetterMap()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(Map getUserNameLetterMap()): this
    //#input(Map getUserNameLetterMap()): this.strategy
    //#input(Map getUserNameLetterMap()): this.strategy.__Tag
    //#input(Map getUserNameLetterMap()): this.strategy.emf
    //#input(Map getUserNameLetterMap()): this.strategy.threadLocalEntityManager
    //#output(Map getUserNameLetterMap()): new TreeMap(getUserNameLetterMap#1) num objects
    //#output(Map getUserNameLetterMap()): return_value
    //#new obj(Map getUserNameLetterMap()): new TreeMap(getUserNameLetterMap#1)
    //#pre[2] (Map getUserNameLetterMap()): this.strategy != null
    //#pre[3] (Map getUserNameLetterMap()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (Map getUserNameLetterMap()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (Map getUserNameLetterMap()): (soft) this.strategy.emf != null
    //#presumption(Map getUserNameLetterMap()): javax.persistence.Query:getResultList(...)@1043 != null
    //#post(Map getUserNameLetterMap()): return_value == &new TreeMap(getUserNameLetterMap#1)
    //#post(Map getUserNameLetterMap()): new TreeMap(getUserNameLetterMap#1) num objects == 1
    //#unanalyzed(Map getUserNameLetterMap()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Map getUserNameLetterMap()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Map getUserNameLetterMap()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Map getUserNameLetterMap()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Map getUserNameLetterMap()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Map getUserNameLetterMap()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Map getUserNameLetterMap()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(Map getUserNameLetterMap()): Effects-of-calling:javax.persistence.Query:setFlushMode
        Map results = new TreeMap();
        Query query = strategy.getNamedQuery(
                "User.getCountByUserNameLike");
        for (int i=0; i<26; i++) {
            char currentChar = lc.charAt(i);
            query.setParameter(1, currentChar + "%");
            List row = query.getResultList();
            Long count = (Long) row.get(0);
            results.put(String.valueOf(currentChar), count);
        }
        return results;
    //#JPAUserManagerImpl.java:1047: end of method: Map org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserNameLetterMap()
    }
    
    public List getUsersByLetter(char letter, int offset, int length)
    throws WebloggerException {
        Query query = strategy.getNamedQuery(
    //#JPAUserManagerImpl.java:1052: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsersByLetter(char, int, int)
    //#input(List getUsersByLetter(char, int, int)): "%"._tainted
    //#input(List getUsersByLetter(char, int, int)): length
    //#input(List getUsersByLetter(char, int, int)): letter
    //#input(List getUsersByLetter(char, int, int)): offset
    //#input(List getUsersByLetter(char, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getUsersByLetter(char, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getUsersByLetter(char, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getUsersByLetter(char, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getUsersByLetter(char, int, int)): this
    //#input(List getUsersByLetter(char, int, int)): this.strategy
    //#input(List getUsersByLetter(char, int, int)): this.strategy.__Tag
    //#input(List getUsersByLetter(char, int, int)): this.strategy.emf
    //#input(List getUsersByLetter(char, int, int)): this.strategy.threadLocalEntityManager
    //#output(List getUsersByLetter(char, int, int)): return_value
    //#pre[5] (List getUsersByLetter(char, int, int)): this.strategy != null
    //#pre[6] (List getUsersByLetter(char, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (List getUsersByLetter(char, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (List getUsersByLetter(char, int, int)): (soft) this.strategy.emf != null
    //#post(List getUsersByLetter(char, int, int)): init'ed(return_value)
    //#unanalyzed(List getUsersByLetter(char, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getUsersByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getUsersByLetter(char, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getUsersByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getUsersByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getUsersByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getUsersByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getUsersByLetter(char, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getUsersByLetter(char, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getUsersByLetter(char, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
                "User.getByUserNameOrderByUserName");
        query.setParameter(1, letter + "%");
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }
        return query.getResultList();
    //#JPAUserManagerImpl.java:1061: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUsersByLetter(char, int, int)
    }
    
    public Map getWeblogHandleLetterMap() throws WebloggerException {
        String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    //#JPAUserManagerImpl.java:1065: method: Map org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWeblogHandleLetterMap()
    //#input(Map getWeblogHandleLetterMap()): "%"._tainted
    //#input(Map getWeblogHandleLetterMap()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Map getWeblogHandleLetterMap()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Map getWeblogHandleLetterMap()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Map getWeblogHandleLetterMap()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(Map getWeblogHandleLetterMap()): this
    //#input(Map getWeblogHandleLetterMap()): this.strategy
    //#input(Map getWeblogHandleLetterMap()): this.strategy.__Tag
    //#input(Map getWeblogHandleLetterMap()): this.strategy.emf
    //#input(Map getWeblogHandleLetterMap()): this.strategy.threadLocalEntityManager
    //#output(Map getWeblogHandleLetterMap()): new TreeMap(getWeblogHandleLetterMap#1) num objects
    //#output(Map getWeblogHandleLetterMap()): return_value
    //#new obj(Map getWeblogHandleLetterMap()): new TreeMap(getWeblogHandleLetterMap#1)
    //#pre[2] (Map getWeblogHandleLetterMap()): this.strategy != null
    //#pre[3] (Map getWeblogHandleLetterMap()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (Map getWeblogHandleLetterMap()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (Map getWeblogHandleLetterMap()): (soft) this.strategy.emf != null
    //#presumption(Map getWeblogHandleLetterMap()): javax.persistence.Query:getResultList(...)@1072 != null
    //#post(Map getWeblogHandleLetterMap()): return_value == &new TreeMap(getWeblogHandleLetterMap#1)
    //#post(Map getWeblogHandleLetterMap()): new TreeMap(getWeblogHandleLetterMap#1) num objects == 1
    //#unanalyzed(Map getWeblogHandleLetterMap()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Map getWeblogHandleLetterMap()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Map getWeblogHandleLetterMap()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Map getWeblogHandleLetterMap()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Map getWeblogHandleLetterMap()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Map getWeblogHandleLetterMap()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Map getWeblogHandleLetterMap()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(Map getWeblogHandleLetterMap()): Effects-of-calling:javax.persistence.Query:setFlushMode
        Map results = new TreeMap();
        Query query = strategy.getNamedQuery(
                "Weblog.getCountByHandleLike");
        for (int i=0; i<26; i++) {
            char currentChar = lc.charAt(i);
            query.setParameter(1, currentChar + "%");
            List row = query.getResultList();
            Long count = (Long) row.get(0);
            results.put(String.valueOf(currentChar), count);
        }
        return results;
    //#JPAUserManagerImpl.java:1076: end of method: Map org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWeblogHandleLetterMap()
    }
    
    public List getWeblogsByLetter(char letter, int offset, int length)
    throws WebloggerException {
        Query query = strategy.getNamedQuery(
    //#JPAUserManagerImpl.java:1081: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWeblogsByLetter(char, int, int)
    //#input(List getWeblogsByLetter(char, int, int)): "%"._tainted
    //#input(List getWeblogsByLetter(char, int, int)): length
    //#input(List getWeblogsByLetter(char, int, int)): letter
    //#input(List getWeblogsByLetter(char, int, int)): offset
    //#input(List getWeblogsByLetter(char, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getWeblogsByLetter(char, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getWeblogsByLetter(char, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getWeblogsByLetter(char, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getWeblogsByLetter(char, int, int)): this
    //#input(List getWeblogsByLetter(char, int, int)): this.strategy
    //#input(List getWeblogsByLetter(char, int, int)): this.strategy.__Tag
    //#input(List getWeblogsByLetter(char, int, int)): this.strategy.emf
    //#input(List getWeblogsByLetter(char, int, int)): this.strategy.threadLocalEntityManager
    //#output(List getWeblogsByLetter(char, int, int)): return_value
    //#pre[5] (List getWeblogsByLetter(char, int, int)): this.strategy != null
    //#pre[6] (List getWeblogsByLetter(char, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (List getWeblogsByLetter(char, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[7] (List getWeblogsByLetter(char, int, int)): (soft) this.strategy.emf != null
    //#post(List getWeblogsByLetter(char, int, int)): init'ed(return_value)
    //#unanalyzed(List getWeblogsByLetter(char, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getWeblogsByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getWeblogsByLetter(char, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getWeblogsByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getWeblogsByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getWeblogsByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getWeblogsByLetter(char, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getWeblogsByLetter(char, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getWeblogsByLetter(char, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getWeblogsByLetter(char, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
                "Weblog.getByLetterOrderByHandle");
        query.setParameter(1, letter + "%");
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }
        return query.getResultList();
    //#JPAUserManagerImpl.java:1090: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWeblogsByLetter(char, int, int)
    }
    
    public List getMostCommentedWebsites(Date startDate, Date endDate,
            int offset, int length)
            throws WebloggerException {
        
        Query query = null;
    //#JPAUserManagerImpl.java:1097: method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getMostCommentedWebsites(Date, Date, int, int)
    //#JPAUserManagerImpl.java:1097: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getMostCommentedWebsites(Date, Date, int, int)
    //#    Attribs:  Uncertain
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): endDate
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): length
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): offset
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): startDate
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): statCountCountReverseComparator
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): this
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): this.strategy
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): this.strategy.__Tag
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): this.strategy.emf
    //#input(List getMostCommentedWebsites(Date, Date, int, int)): this.strategy.threadLocalEntityManager
    //#output(List getMostCommentedWebsites(Date, Date, int, int)): new ArrayList(getMostCommentedWebsites#5) num objects
    //#output(List getMostCommentedWebsites(Date, Date, int, int)): return_value
    //#new obj(List getMostCommentedWebsites(Date, Date, int, int)): new ArrayList(getMostCommentedWebsites#5)
    //#pre[6] (List getMostCommentedWebsites(Date, Date, int, int)): this.strategy != null
    //#pre[7] (List getMostCommentedWebsites(Date, Date, int, int)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (List getMostCommentedWebsites(Date, Date, int, int)): this.strategy.threadLocalEntityManager != null
    //#pre[8] (List getMostCommentedWebsites(Date, Date, int, int)): (soft) this.strategy.emf != null
    //#presumption(List getMostCommentedWebsites(Date, Date, int, int)): java.util.Iterator:next(...)@1123 != null
    //#presumption(List getMostCommentedWebsites(Date, Date, int, int)): javax.persistence.Query:getResultList(...)@1120 != null
    //#presumption(List getMostCommentedWebsites(Date, Date, int, int)): row.length@1123 >= 4
    //#post(List getMostCommentedWebsites(Date, Date, int, int)): return_value == &new ArrayList(getMostCommentedWebsites#5)
    //#post(List getMostCommentedWebsites(Date, Date, int, int)): new ArrayList(getMostCommentedWebsites#5) num objects == 1
    //#unanalyzed(List getMostCommentedWebsites(Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getMostCommentedWebsites(Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getMostCommentedWebsites(Date, Date, int, int)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getMostCommentedWebsites(Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getMostCommentedWebsites(Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getMostCommentedWebsites(Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getMostCommentedWebsites(Date, Date, int, int)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getMostCommentedWebsites(Date, Date, int, int)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getMostCommentedWebsites(Date, Date, int, int)): endDate: Inverse{null}, Addr_Set{null}
    //#test_vector(List getMostCommentedWebsites(Date, Date, int, int)): length: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(List getMostCommentedWebsites(Date, Date, int, int)): offset: {0}, {-2_147_483_648..-1, 1..4_294_967_295}
    //#test_vector(List getMostCommentedWebsites(Date, Date, int, int)): startDate: Addr_Set{null}, Inverse{null}
    //#test_vector(List getMostCommentedWebsites(Date, Date, int, int)): java.util.Iterator:hasNext(...)@1122: {0}, {1}
        
        if (endDate == null) endDate = new Date();
        
        if (startDate != null) {
            Timestamp start = new Timestamp(startDate.getTime());
            Timestamp end = new Timestamp(endDate.getTime());
            query = strategy.getNamedQuery(
                    "WeblogEntryComment.getMostCommentedWebsiteByEndDate&StartDate");
            query.setParameter(1, end);
            query.setParameter(2, start);
        } else {
            Timestamp end = new Timestamp(endDate.getTime());
            query = strategy.getNamedQuery(
                    "WeblogEntryComment.getMostCommentedWebsiteByEndDate");
            query.setParameter(1, end);
        }
        if (offset != 0) {
            query.setFirstResult(offset);
        }
        if (length != -1) {
            query.setMaxResults(length);
        }
        List queryResults = query.getResultList();
        List results = new ArrayList();
        for (Iterator iter = queryResults.iterator(); iter.hasNext();) {
            Object[] row = (Object[]) iter.next();
            results.add(new StatCount(
    //#JPAUserManagerImpl.java:1124: ?use of default init
    //#    init'ed(row[1])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getMostCommentedWebsites(Date, Date, int, int)
    //#    basic block: bb_12
    //#    assertion: init'ed(row[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAUserManagerImpl.java:1124: ?use of default init
    //#    init'ed(row[2])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getMostCommentedWebsites(Date, Date, int, int)
    //#    basic block: bb_12
    //#    assertion: init'ed(row[2])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAUserManagerImpl.java:1124: ?use of default init
    //#    init'ed(row[3])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getMostCommentedWebsites(Date, Date, int, int)
    //#    basic block: bb_12
    //#    assertion: init'ed(row[3])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAUserManagerImpl.java:1124: ?use of default init
    //#    init'ed(row[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getMostCommentedWebsites(Date, Date, int, int)
    //#    basic block: bb_12
    //#    assertion: init'ed(row[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#JPAUserManagerImpl.java:1124: ?null dereference
    //#    not_init'ed(row[0])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: List getMostCommentedWebsites(Date, Date, int, int)
    //#    basic block: bb_12
    //#    assertion: not_init'ed(row[0])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#JPAUserManagerImpl.java:1124: 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.JPAUserManagerImpl
    //#    method: List getMostCommentedWebsites(Date, Date, int, int)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.StatCount(String, String, String, String, long)
                    (String)row[1],                     // website id
                    (String)row[2],                     // website handle
                    (String)row[3],                     // website name
                    "statCount.weblogCommentCountType", // stat type
                    ((Long)row[0]).longValue())); // # comments
        }
        // Original query ordered by desc # comments.
        // JPA QL doesn't allow queries to be ordered by agregates; do it in memory
        Collections.sort(results, statCountCountReverseComparator);
        
        return results;
    //#JPAUserManagerImpl.java:1135: end of method: List org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getMostCommentedWebsites(Date, Date, int, int)
    }
    
    /**
     * Get count of weblogs, active and inactive
     */
    public long getWeblogCount() throws WebloggerException {
        long ret = 0;
    //#JPAUserManagerImpl.java:1142: method: long org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWeblogCount()
    //#JPAUserManagerImpl.java:1142: Warning: unused assignment
    //#    unused assignment into ret
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: long getWeblogCount()
    //#    Attribs:  Uncertain
    //#input(long getWeblogCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(long getWeblogCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(long getWeblogCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(long getWeblogCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(long getWeblogCount()): this
    //#input(long getWeblogCount()): this.strategy
    //#input(long getWeblogCount()): this.strategy.__Tag
    //#input(long getWeblogCount()): this.strategy.emf
    //#input(long getWeblogCount()): this.strategy.threadLocalEntityManager
    //#output(long getWeblogCount()): return_value
    //#pre[2] (long getWeblogCount()): this.strategy != null
    //#pre[3] (long getWeblogCount()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (long getWeblogCount()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (long getWeblogCount()): (soft) this.strategy.emf != null
    //#presumption(long getWeblogCount()): java.util.List:get(...)@1146 != null
    //#presumption(long getWeblogCount()): javax.persistence.Query:getResultList(...)@1143 != null
    //#post(long getWeblogCount()): init'ed(return_value)
    //#unanalyzed(long getWeblogCount()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(long getWeblogCount()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(long getWeblogCount()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(long getWeblogCount()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(long getWeblogCount()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(long getWeblogCount()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(long getWeblogCount()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(long getWeblogCount()): Effects-of-calling:javax.persistence.Query:setFlushMode
        List results = strategy.getNamedQuery(
                "Weblog.getCountAllDistinct").getResultList();
        
        ret = ((Long)results.get(0)).longValue();
        
        return ret;
    //#JPAUserManagerImpl.java:1148: end of method: long org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getWeblogCount()
    }
    
    
    /**
     * Get count of users, enabled only
     */
    public long getUserCount() throws WebloggerException {
        long ret = 0;
    //#JPAUserManagerImpl.java:1156: method: long org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserCount()
    //#JPAUserManagerImpl.java:1156: Warning: unused assignment
    //#    unused assignment into ret
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl
    //#    method: long getUserCount()
    //#    Attribs:  Uncertain
    //#input(long getUserCount()): java.lang.Boolean.TRUE
    //#input(long getUserCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(long getUserCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(long getUserCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(long getUserCount()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(long getUserCount()): this
    //#input(long getUserCount()): this.strategy
    //#input(long getUserCount()): this.strategy.__Tag
    //#input(long getUserCount()): this.strategy.emf
    //#input(long getUserCount()): this.strategy.threadLocalEntityManager
    //#output(long getUserCount()): return_value
    //#pre[2] (long getUserCount()): this.strategy != null
    //#pre[3] (long getUserCount()): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (long getUserCount()): this.strategy.threadLocalEntityManager != null
    //#pre[4] (long getUserCount()): (soft) this.strategy.emf != null
    //#presumption(long getUserCount()): init'ed(java.lang.Boolean.TRUE)
    //#presumption(long getUserCount()): java.util.List:get(...)@1160 != null
    //#presumption(long getUserCount()): javax.persistence.Query:getResultList(...)@1159 != null
    //#post(long getUserCount()): init'ed(return_value)
    //#unanalyzed(long getUserCount()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(long getUserCount()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(long getUserCount()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(long getUserCount()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(long getUserCount()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(long getUserCount()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(long getUserCount()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(long getUserCount()): Effects-of-calling:javax.persistence.Query:setFlushMode
        Query q = strategy.getNamedQuery("User.getCountEnabledDistinct");
        q.setParameter(1, Boolean.TRUE);
        List results = q.getResultList();
        ret =((Long)results.get(0)).longValue(); 
        
        return ret;
    //#JPAUserManagerImpl.java:1162: end of method: long org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserCount()
    }
    
	public User getUserByActivationCode(String activationCode) throws WebloggerException {
		if (activationCode == null)
    //#JPAUserManagerImpl.java:1166: method: User org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserByActivationCode(String)
    //#input(User getUserByActivationCode(String)): activationCode
    //#input(User getUserByActivationCode(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(User getUserByActivationCode(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(User getUserByActivationCode(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(User getUserByActivationCode(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(User getUserByActivationCode(String)): this
    //#input(User getUserByActivationCode(String)): this.strategy
    //#input(User getUserByActivationCode(String)): this.strategy.__Tag
    //#input(User getUserByActivationCode(String)): this.strategy.emf
    //#input(User getUserByActivationCode(String)): this.strategy.threadLocalEntityManager
    //#output(User getUserByActivationCode(String)): return_value
    //#pre[1] (User getUserByActivationCode(String)): activationCode != null
    //#pre[3] (User getUserByActivationCode(String)): this.strategy != null
    //#pre[4] (User getUserByActivationCode(String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (User getUserByActivationCode(String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (User getUserByActivationCode(String)): (soft) this.strategy.emf != null
    //#post(User getUserByActivationCode(String)): init'ed(return_value)
    //#unanalyzed(User getUserByActivationCode(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(User getUserByActivationCode(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(User getUserByActivationCode(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(User getUserByActivationCode(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(User getUserByActivationCode(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(User getUserByActivationCode(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(User getUserByActivationCode(String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(User getUserByActivationCode(String)): Effects-of-calling:javax.persistence.Query:setFlushMode
			throw new WebloggerException("activationcode is null");
        Query q = strategy.getNamedQuery("User.getUserByActivationCode");
        q.setParameter(1, activationCode);
        try {
            return (User)q.getSingleResult();
        } catch (NoResultException e) {
            return null;
    //#JPAUserManagerImpl.java:1173: end of method: User org.apache.roller.weblogger.business.jpa.JPAUserManagerImpl.getUserByActivationCode(String)
        }		
	}    
}

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