//# 1 errors, 945 messages
//#

    //#JPABookmarkManagerImpl.java:1:1: class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
/*
 * 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.io.StringReader;
import java.util.Iterator;
import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.jpa.JPAPersistenceStrategy;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.BookmarkManager;
import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.pojos.WeblogBookmark;
import org.apache.roller.weblogger.pojos.WeblogBookmarkFolder;
import org.apache.roller.weblogger.pojos.Weblog;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

/*
 * JPABookmarkManagerImpl.java
 *
 * Created on May 31, 2006, 3:49 PM
 *
 */
@com.google.inject.Singleton
public class JPABookmarkManagerImpl implements BookmarkManager {
    
    private final Weblogger roller;
    private final JPAPersistenceStrategy strategy;
    
    
    /**
     * The logger instance for this class.
     */
    private static Log log = LogFactory
    //#JPABookmarkManagerImpl.java:56: method: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init
    //#JPABookmarkManagerImpl.java:56: Warning: method not available
    //#    -- call on LogFactory org.apache.commons.logging.LogFactory:getFactory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init
    //#    unanalyzed callee: LogFactory org.apache.commons.logging.LogFactory:getFactory()
    //#JPABookmarkManagerImpl.java:56: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getInstance(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getInstance(Class)
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getAllFolders(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getBookmark(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmark;
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getBookmarks(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;Z)Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getFolder(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getFolder(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.importBookmarks(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.importOpmlElement(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/jdom/Element;Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.isDuplicateFolderName(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)Z
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.moveFolder(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.release()V
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.removeBookmark(Lorg/apache/roller/weblogger/pojos/WeblogBookmark;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.removeFolder(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.saveBookmark(Lorg/apache/roller/weblogger/pojos/WeblogBookmark;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.saveFolder(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.updatePathTree(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): log
    //#output(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): org/apache/roller/weblogger/business/BookmarkManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#presumption(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): org.apache.commons.logging.LogFactory:getFactory(...)@56 != null
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): org/apache/roller/weblogger/business/BookmarkManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getAllFolders(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List; == &getAllFolders
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getBookmark(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmark; == &getBookmark
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getBookmarks(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;Z)Ljava/util/List; == &getBookmarks
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getFolder(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder; == &getFolder
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getFolder(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder; == &getFolder
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder; == &getRootFolder
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.importBookmarks(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)V == &importBookmarks
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.importOpmlElement(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/jdom/Element;Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V == &importOpmlElement
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.isDuplicateFolderName(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)Z == &isDuplicateFolderName
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.moveFolder(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V == &moveFolder
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.release()V == &release
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.removeBookmark(Lorg/apache/roller/weblogger/pojos/WeblogBookmark;)V == &removeBookmark
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.removeFolder(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V == &removeFolder
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.saveBookmark(Lorg/apache/roller/weblogger/pojos/WeblogBookmark;)V == &saveBookmark
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.saveFolder(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V == &saveFolder
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): __Dispatch_Table.updatePathTree(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V == &updatePathTree
    //#post(org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init): init'ed(log)
    //#JPABookmarkManagerImpl.java:56: end of method: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl__static_init
            .getFactory().getInstance(JPABookmarkManagerImpl.class);

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

   
    public void saveBookmark(WeblogBookmark bookmark) throws WebloggerException {
        boolean exists = getBookmark(bookmark.getId()) != null;        
    //#JPABookmarkManagerImpl.java:71: method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.saveBookmark(WeblogBookmark)
    //#JPABookmarkManagerImpl.java:71: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmark:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void saveBookmark(WeblogBookmark)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmark:getId()
    //#JPABookmarkManagerImpl.java:71: 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.JPABookmarkManagerImpl
    //#    method: void saveBookmark(WeblogBookmark)
    //#    suspicious precondition index: [5]
    //#JPABookmarkManagerImpl.java:71: 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.JPABookmarkManagerImpl
    //#    method: void saveBookmark(WeblogBookmark)
    //#    suspicious precondition index: [7]
    //#input(void saveBookmark(WeblogBookmark)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#input(void saveBookmark(WeblogBookmark)): __Descendant_Table[others]
    //#input(void saveBookmark(WeblogBookmark)): __Dispatch_Table.getBookmark(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmark;
    //#input(void saveBookmark(WeblogBookmark)): bookmark
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveBookmark(WeblogBookmark)): this
    //#input(void saveBookmark(WeblogBookmark)): this.__Tag
    //#input(void saveBookmark(WeblogBookmark)): this.roller
    //#input(void saveBookmark(WeblogBookmark)): this.roller.__Tag
    //#input(void saveBookmark(WeblogBookmark)): this.roller.userManager
    //#input(void saveBookmark(WeblogBookmark)): this.roller.userManager.__Tag
    //#input(void saveBookmark(WeblogBookmark)): this.roller.userManager.strategy
    //#input(void saveBookmark(WeblogBookmark)): this.roller.userManager.strategy.__Tag
    //#input(void saveBookmark(WeblogBookmark)): this.roller.userManager.strategy.emf
    //#input(void saveBookmark(WeblogBookmark)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void saveBookmark(WeblogBookmark)): this.strategy
    //#input(void saveBookmark(WeblogBookmark)): this.strategy.__Tag
    //#input(void saveBookmark(WeblogBookmark)): this.strategy.emf
    //#input(void saveBookmark(WeblogBookmark)): this.strategy.threadLocalEntityManager
    //#pre[1] (void saveBookmark(WeblogBookmark)): bookmark != null
    //#pre[3] (void saveBookmark(WeblogBookmark)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl
    //#pre[4] (void saveBookmark(WeblogBookmark)): this.roller != null
    //#pre[5] (void saveBookmark(WeblogBookmark)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[6] (void saveBookmark(WeblogBookmark)): this.roller.userManager != null
    //#pre[7] (void saveBookmark(WeblogBookmark)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[8] (void saveBookmark(WeblogBookmark)): this.roller.userManager.strategy != null
    //#pre[9] (void saveBookmark(WeblogBookmark)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[10] (void saveBookmark(WeblogBookmark)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[11] (void saveBookmark(WeblogBookmark)): this.strategy != null
    //#pre[12] (void saveBookmark(WeblogBookmark)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[14] (void saveBookmark(WeblogBookmark)): this.strategy.threadLocalEntityManager != null
    //#pre[13] (void saveBookmark(WeblogBookmark)): (soft) this.strategy.emf != null
    //#presumption(void saveBookmark(WeblogBookmark)): getUserManager(...).strategy.emf@77 != null
    //#presumption(void saveBookmark(WeblogBookmark)): org.apache.roller.weblogger.pojos.WeblogBookmark:getFolder(...)@74 != null
    //#presumption(void saveBookmark(WeblogBookmark)): org.apache.roller.weblogger.pojos.WeblogBookmark:getWebsite(...)@80 != null
    //#presumption(void saveBookmark(WeblogBookmark)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getBookmarks(...)@74 != null
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:java.util.Date
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#unanalyzed(void saveBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManager:find
    //#test_vector(void saveBookmark(WeblogBookmark)): javax.persistence.EntityManager:find(...)@216: Inverse{null}, Addr_Set{null}
        if (!exists) {
            // New object make sure that relationship is set on managed copy of other side
            bookmark.getFolder().getBookmarks().add(bookmark);
    //#JPABookmarkManagerImpl.java:74: Warning: method not available
    //#    -- call on WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmark:getFolder()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void saveBookmark(WeblogBookmark)
    //#    unanalyzed callee: WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmark:getFolder()
    //#JPABookmarkManagerImpl.java:74: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getBookmarks()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void saveBookmark(WeblogBookmark)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getBookmarks()
        }

        this.strategy.store(bookmark);

        // update weblog last modified date (date is updated by saveWebsite())
        roller.getUserManager().
    //#JPABookmarkManagerImpl.java:80: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogBookmark:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void saveBookmark(WeblogBookmark)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogBookmark:getWebsite()
            saveWebsite(bookmark.getWebsite());
    }
    //#JPABookmarkManagerImpl.java:82: end of method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.saveBookmark(WeblogBookmark)

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

    public void removeBookmark(WeblogBookmark bookmark) throws WebloggerException {
        //Now remove it from database
        this.strategy.remove(bookmark);
    //#JPABookmarkManagerImpl.java:90: method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.removeBookmark(WeblogBookmark)
    //#JPABookmarkManagerImpl.java:90: 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.JPABookmarkManagerImpl
    //#    method: void removeBookmark(WeblogBookmark)
    //#    suspicious precondition index: [4]
    //#JPABookmarkManagerImpl.java:90: 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.JPABookmarkManagerImpl
    //#    method: void removeBookmark(WeblogBookmark)
    //#    suspicious precondition index: [6]
    //#input(void removeBookmark(WeblogBookmark)): bookmark
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeBookmark(WeblogBookmark)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeBookmark(WeblogBookmark)): this
    //#input(void removeBookmark(WeblogBookmark)): this.roller
    //#input(void removeBookmark(WeblogBookmark)): this.roller.__Tag
    //#input(void removeBookmark(WeblogBookmark)): this.roller.userManager
    //#input(void removeBookmark(WeblogBookmark)): this.roller.userManager.__Tag
    //#input(void removeBookmark(WeblogBookmark)): this.roller.userManager.strategy
    //#input(void removeBookmark(WeblogBookmark)): this.roller.userManager.strategy.__Tag
    //#input(void removeBookmark(WeblogBookmark)): this.roller.userManager.strategy.emf
    //#input(void removeBookmark(WeblogBookmark)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void removeBookmark(WeblogBookmark)): this.strategy
    //#input(void removeBookmark(WeblogBookmark)): this.strategy.__Tag
    //#input(void removeBookmark(WeblogBookmark)): this.strategy.emf
    //#input(void removeBookmark(WeblogBookmark)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removeBookmark(WeblogBookmark)): bookmark != null
    //#pre[3] (void removeBookmark(WeblogBookmark)): this.roller != null
    //#pre[4] (void removeBookmark(WeblogBookmark)): 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 removeBookmark(WeblogBookmark)): this.roller.userManager != null
    //#pre[6] (void removeBookmark(WeblogBookmark)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[7] (void removeBookmark(WeblogBookmark)): this.roller.userManager.strategy != null
    //#pre[8] (void removeBookmark(WeblogBookmark)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (void removeBookmark(WeblogBookmark)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[10] (void removeBookmark(WeblogBookmark)): this.strategy != null
    //#pre[11] (void removeBookmark(WeblogBookmark)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (void removeBookmark(WeblogBookmark)): this.strategy.threadLocalEntityManager != null
    //#pre[12] (void removeBookmark(WeblogBookmark)): (soft) this.strategy.emf != null
    //#presumption(void removeBookmark(WeblogBookmark)): getUserManager(...).strategy.emf@90 != null
    //#presumption(void removeBookmark(WeblogBookmark)): org.apache.roller.weblogger.pojos.WeblogBookmark:getFolder(...)@92 != null
    //#presumption(void removeBookmark(WeblogBookmark)): org.apache.roller.weblogger.pojos.WeblogBookmark:getWebsite(...)@94 != null
    //#presumption(void removeBookmark(WeblogBookmark)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getBookmarks(...)@92 != null
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:java.util.Date
    //#unanalyzed(void removeBookmark(WeblogBookmark)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
        //Remove the bookmark from its parent folder
        bookmark.getFolder().getBookmarks().remove(bookmark);
    //#JPABookmarkManagerImpl.java:92: Warning: method not available
    //#    -- call on WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmark:getFolder()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void removeBookmark(WeblogBookmark)
    //#    unanalyzed callee: WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmark:getFolder()
    //#JPABookmarkManagerImpl.java:92: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getBookmarks()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void removeBookmark(WeblogBookmark)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getBookmarks()
        // update weblog last modified date.  date updated by saveWebsite()
        roller.getUserManager()
    //#JPABookmarkManagerImpl.java:94: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogBookmark:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void removeBookmark(WeblogBookmark)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogBookmark:getWebsite()
                .saveWebsite(bookmark.getWebsite());
    }
    //#JPABookmarkManagerImpl.java:96: end of method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.removeBookmark(WeblogBookmark)

    public void saveFolder(WeblogBookmarkFolder folder) throws WebloggerException {
        
        if(folder.getId() == null || this.getFolder(folder.getId()) == null) {
    //#JPABookmarkManagerImpl.java:100: method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.saveFolder(WeblogBookmarkFolder)
    //#JPABookmarkManagerImpl.java:100: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void saveFolder(WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getId()
    //#JPABookmarkManagerImpl.java:100: 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.JPABookmarkManagerImpl
    //#    method: void saveFolder(WeblogBookmarkFolder)
    //#    suspicious precondition index: [5]
    //#JPABookmarkManagerImpl.java:100: 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.JPABookmarkManagerImpl
    //#    method: void saveFolder(WeblogBookmarkFolder)
    //#    suspicious precondition index: [7]
    //#input(void saveFolder(WeblogBookmarkFolder)): "."._tainted
    //#input(void saveFolder(WeblogBookmarkFolder)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#input(void saveFolder(WeblogBookmarkFolder)): __Descendant_Table[others]
    //#input(void saveFolder(WeblogBookmarkFolder)): __Dispatch_Table.getFolder(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void saveFolder(WeblogBookmarkFolder)): __Dispatch_Table.getFolder(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void saveFolder(WeblogBookmarkFolder)): __Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void saveFolder(WeblogBookmarkFolder)): folder
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void saveFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void saveFolder(WeblogBookmarkFolder)): this
    //#input(void saveFolder(WeblogBookmarkFolder)): this.__Tag
    //#input(void saveFolder(WeblogBookmarkFolder)): this.roller
    //#input(void saveFolder(WeblogBookmarkFolder)): this.roller.__Tag
    //#input(void saveFolder(WeblogBookmarkFolder)): this.roller.userManager
    //#input(void saveFolder(WeblogBookmarkFolder)): this.roller.userManager.__Tag
    //#input(void saveFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy
    //#input(void saveFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.__Tag
    //#input(void saveFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.emf
    //#input(void saveFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void saveFolder(WeblogBookmarkFolder)): this.strategy
    //#input(void saveFolder(WeblogBookmarkFolder)): this.strategy.__Tag
    //#input(void saveFolder(WeblogBookmarkFolder)): this.strategy.emf
    //#input(void saveFolder(WeblogBookmarkFolder)): this.strategy.threadLocalEntityManager
    //#pre[1] (void saveFolder(WeblogBookmarkFolder)): folder != null
    //#pre[4] (void saveFolder(WeblogBookmarkFolder)): this.roller != null
    //#pre[5] (void saveFolder(WeblogBookmarkFolder)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[6] (void saveFolder(WeblogBookmarkFolder)): this.roller.userManager != null
    //#pre[7] (void saveFolder(WeblogBookmarkFolder)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[8] (void saveFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy != null
    //#pre[9] (void saveFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[10] (void saveFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[11] (void saveFolder(WeblogBookmarkFolder)): this.strategy != null
    //#pre[12] (void saveFolder(WeblogBookmarkFolder)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[14] (void saveFolder(WeblogBookmarkFolder)): this.strategy.threadLocalEntityManager != null
    //#pre[3] (void saveFolder(WeblogBookmarkFolder)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl
    //#pre[13] (void saveFolder(WeblogBookmarkFolder)): (soft) this.strategy.emf != null
    //#presumption(void saveFolder(WeblogBookmarkFolder)): getUserManager(...).strategy.emf@113 != null
    //#presumption(void saveFolder(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders(...)@109 != null
    //#presumption(void saveFolder(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite(...)@116 != null
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.util.Date
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void saveFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:find
    //#test_vector(void saveFolder(WeblogBookmarkFolder)): javax.persistence.EntityManager:find(...)@216: Inverse{null}, Addr_Set{null}
    //#test_vector(void saveFolder(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getId(...)@100: Addr_Set{null}, Inverse{null}
    //#test_vector(void saveFolder(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent(...)@107: Addr_Set{null}, Inverse{null}
            // New folder, so make sure name is unique
            if (isDuplicateFolderName(folder)) {
    //#JPABookmarkManagerImpl.java:102: ?org/apache/roller/weblogger/WebloggerException check
    //#    isDuplicateFolderName(...) == 0
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void saveFolder(WeblogBookmarkFolder)
    //#    basic block: bb_3
    //#    assertion: isDuplicateFolderName(...) == 0
    //#    VN: isDuplicateFolderName(...)
    //#    Expected: {0}
    //#    Bad: {1}
    //#    Attribs:  Int  Exp in +/-1000  Exp singleton  Bad singleton  Bad overlaps +/-1000  Bad > Exp
                throw new WebloggerException("Duplicate folder name");
            }

            // And If it has a parent, maintain relationship from both sides
            WeblogBookmarkFolder parent = folder.getParent();
    //#JPABookmarkManagerImpl.java:107: Warning: method not available
    //#    -- call on WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void saveFolder(WeblogBookmarkFolder)
    //#    unanalyzed callee: WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent()
            if(parent != null) {
                parent.getFolders().add(folder);
    //#JPABookmarkManagerImpl.java:109: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void saveFolder(WeblogBookmarkFolder)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
            }
        }

        this.strategy.store(folder);

        // update weblog last modified date.  date updated by saveWebsite()
        roller.getUserManager().saveWebsite(folder.getWebsite());
    //#JPABookmarkManagerImpl.java:116: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void saveFolder(WeblogBookmarkFolder)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
    }
    //#JPABookmarkManagerImpl.java:117: end of method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.saveFolder(WeblogBookmarkFolder)

    public void removeFolder(WeblogBookmarkFolder folder) throws WebloggerException {
        this.strategy.remove(folder);
    //#JPABookmarkManagerImpl.java:120: method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.removeFolder(WeblogBookmarkFolder)
    //#JPABookmarkManagerImpl.java:120: 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.JPABookmarkManagerImpl
    //#    method: void removeFolder(WeblogBookmarkFolder)
    //#    suspicious precondition index: [4]
    //#JPABookmarkManagerImpl.java:120: 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.JPABookmarkManagerImpl
    //#    method: void removeFolder(WeblogBookmarkFolder)
    //#    suspicious precondition index: [6]
    //#input(void removeFolder(WeblogBookmarkFolder)): folder
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.remove(Ljava/lang/Object;)V
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void removeFolder(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void removeFolder(WeblogBookmarkFolder)): this
    //#input(void removeFolder(WeblogBookmarkFolder)): this.roller
    //#input(void removeFolder(WeblogBookmarkFolder)): this.roller.__Tag
    //#input(void removeFolder(WeblogBookmarkFolder)): this.roller.userManager
    //#input(void removeFolder(WeblogBookmarkFolder)): this.roller.userManager.__Tag
    //#input(void removeFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy
    //#input(void removeFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.__Tag
    //#input(void removeFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.emf
    //#input(void removeFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void removeFolder(WeblogBookmarkFolder)): this.strategy
    //#input(void removeFolder(WeblogBookmarkFolder)): this.strategy.__Tag
    //#input(void removeFolder(WeblogBookmarkFolder)): this.strategy.emf
    //#input(void removeFolder(WeblogBookmarkFolder)): this.strategy.threadLocalEntityManager
    //#pre[1] (void removeFolder(WeblogBookmarkFolder)): folder != null
    //#pre[3] (void removeFolder(WeblogBookmarkFolder)): this.roller != null
    //#pre[4] (void removeFolder(WeblogBookmarkFolder)): 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 removeFolder(WeblogBookmarkFolder)): this.roller.userManager != null
    //#pre[6] (void removeFolder(WeblogBookmarkFolder)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[7] (void removeFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy != null
    //#pre[8] (void removeFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (void removeFolder(WeblogBookmarkFolder)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[10] (void removeFolder(WeblogBookmarkFolder)): this.strategy != null
    //#pre[11] (void removeFolder(WeblogBookmarkFolder)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (void removeFolder(WeblogBookmarkFolder)): this.strategy.threadLocalEntityManager != null
    //#pre[12] (void removeFolder(WeblogBookmarkFolder)): (soft) this.strategy.emf != null
    //#presumption(void removeFolder(WeblogBookmarkFolder)): getUserManager(...).strategy.emf@120 != null
    //#presumption(void removeFolder(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders(...)@123 != null
    //#presumption(void removeFolder(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite(...)@127 != null
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:remove
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:java.util.Date
    //#unanalyzed(void removeFolder(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#test_vector(void removeFolder(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent(...)@121: Addr_Set{null}, Inverse{null}
        WeblogBookmarkFolder parent = folder.getParent();
    //#JPABookmarkManagerImpl.java:121: Warning: method not available
    //#    -- call on WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void removeFolder(WeblogBookmarkFolder)
    //#    unanalyzed callee: WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent()
        if (parent != null) {
            parent.getFolders().remove(folder);
    //#JPABookmarkManagerImpl.java:123: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void removeFolder(WeblogBookmarkFolder)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
        }

        // update weblog last modified date.  date updated by saveWebsite()
        roller.getUserManager().
    //#JPABookmarkManagerImpl.java:127: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void removeFolder(WeblogBookmarkFolder)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
            saveWebsite(folder.getWebsite());
    }
    //#JPABookmarkManagerImpl.java:129: end of method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.removeFolder(WeblogBookmarkFolder)
    
    public void moveFolder(WeblogBookmarkFolder srcFolder, WeblogBookmarkFolder destFolder)
            throws WebloggerException {
        
        // TODO: this check should be made before calling this method?
        if (destFolder.descendentOf(srcFolder)) {
    //#JPABookmarkManagerImpl.java:135: method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#JPABookmarkManagerImpl.java:135: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:descendentOf(WeblogBookmarkFolder)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:descendentOf(WeblogBookmarkFolder)
    //#JPABookmarkManagerImpl.java:135: 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.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    suspicious precondition index: [7]
    //#JPABookmarkManagerImpl.java:135: 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.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    suspicious precondition index: [9]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): " under "._tainted
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): "."._tainted
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): "Moving folder "._tainted
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): "NEW child folder path is "._tainted
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): "OLD child folder path was "._tainted
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): "Updating path tree for folder "._tainted
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): __Descendant_Table[others]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): __Dispatch_Table.getFolder(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): __Dispatch_Table.getFolder(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): __Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): __Dispatch_Table.saveFolder(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): destFolder
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): log
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): srcFolder
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.__Tag
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.__Tag
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager.__Tag
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager.strategy
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager.strategy.__Tag
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.strategy
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.strategy.__Tag
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.strategy.emf
    //#input(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.strategy.threadLocalEntityManager
    //#pre[1] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): destFolder != null
    //#pre[2] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): log != null
    //#pre[3] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): srcFolder != null
    //#pre[5] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.__Tag == org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl
    //#pre[6] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller != null
    //#pre[7] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[8] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager != null
    //#pre[9] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[10] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager.strategy != null
    //#pre[11] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[13] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[14] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.strategy != null
    //#pre[15] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[17] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): this.strategy.threadLocalEntityManager != null
    //#pre[16] (void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): (soft) this.strategy.emf != null
    //#presumption(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:descendentOf(...)@135 == 0
    //#presumption(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders(...)@146 != null
    //#presumption(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders(...)@149 != null
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.util.Set:add
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:saveFolder
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:updatePathTree
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:getUserManager
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:saveWebsite
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.util.Date
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getId
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:getFolder
    //#unanalyzed(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:find
    //#test_vector(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): java.lang.String:equals(...)@151: {0}, {1}
    //#test_vector(void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent(...)@144: Addr_Set{null}, Inverse{null}
            throw new WebloggerException(
                    "ERROR cannot move parent folder into it's own child");
        }
        
        log.debug("Moving folder " + srcFolder.getPath() + " under " +
    //#JPABookmarkManagerImpl.java:140: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#JPABookmarkManagerImpl.java:140: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            destFolder.getPath());
        
        // Manage relationships
        WeblogBookmarkFolder oldParent = srcFolder.getParent();
    //#JPABookmarkManagerImpl.java:144: Warning: method not available
    //#    -- call on WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent()
        if(oldParent != null) {
            oldParent.getFolders().add(srcFolder);
    //#JPABookmarkManagerImpl.java:146: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
        }
        srcFolder.setParent(destFolder);
    //#JPABookmarkManagerImpl.java:148: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setParent(WeblogBookmarkFolder)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setParent(WeblogBookmarkFolder)
        destFolder.getFolders().add(srcFolder);
    //#JPABookmarkManagerImpl.java:149: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
        
        if("/".equals(destFolder.getPath())) {
    //#JPABookmarkManagerImpl.java:151: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
            srcFolder.setPath("/"+srcFolder.getName());
    //#JPABookmarkManagerImpl.java:152: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName()
    //#JPABookmarkManagerImpl.java:152: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath(String)
        } else {
            srcFolder.setPath(destFolder.getPath() + "/" + srcFolder.getName());
    //#JPABookmarkManagerImpl.java:154: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#JPABookmarkManagerImpl.java:154: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName()
    //#JPABookmarkManagerImpl.java:154: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath(String)
        }
        saveFolder(srcFolder);
        
        // the main work to be done for a category move is to update the 
        // path attribute of the category and all descendent categories
        updatePathTree(srcFolder);
    }    
    //#JPABookmarkManagerImpl.java:161: end of method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.moveFolder(WeblogBookmarkFolder, WeblogBookmarkFolder)

    // updates the paths of all descendents of the given folder
    private void updatePathTree(WeblogBookmarkFolder folder) throws WebloggerException {
        
        log.debug("Updating path tree for folder "+folder.getPath());
    //#JPABookmarkManagerImpl.java:166: method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.updatePathTree(WeblogBookmarkFolder)
    //#JPABookmarkManagerImpl.java:166: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#JPABookmarkManagerImpl.java:166: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#JPABookmarkManagerImpl.java:166: 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.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    suspicious precondition index: [6]
    //#    Attribs:  Soft
    //#JPABookmarkManagerImpl.java:166: 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.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    suspicious precondition index: [8]
    //#    Attribs:  Soft
    //#input(void updatePathTree(WeblogBookmarkFolder)): "."._tainted
    //#input(void updatePathTree(WeblogBookmarkFolder)): "NEW child folder path is "._tainted
    //#input(void updatePathTree(WeblogBookmarkFolder)): "OLD child folder path was "._tainted
    //#input(void updatePathTree(WeblogBookmarkFolder)): "Updating path tree for folder "._tainted
    //#input(void updatePathTree(WeblogBookmarkFolder)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#input(void updatePathTree(WeblogBookmarkFolder)): __Descendant_Table[others]
    //#input(void updatePathTree(WeblogBookmarkFolder)): __Dispatch_Table.getFolder(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void updatePathTree(WeblogBookmarkFolder)): __Dispatch_Table.getFolder(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void updatePathTree(WeblogBookmarkFolder)): __Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void updatePathTree(WeblogBookmarkFolder)): __Dispatch_Table.saveFolder(Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;)V
    //#input(void updatePathTree(WeblogBookmarkFolder)): folder
    //#input(void updatePathTree(WeblogBookmarkFolder)): log
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.saveWebsite(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(void updatePathTree(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(void updatePathTree(WeblogBookmarkFolder)): this
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.__Tag
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.roller
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.roller.__Tag
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.roller.userManager
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.roller.userManager.__Tag
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.roller.userManager.strategy
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.roller.userManager.strategy.__Tag
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.roller.userManager.strategy.threadLocalEntityManager
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.strategy
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.strategy.__Tag
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.strategy.emf
    //#input(void updatePathTree(WeblogBookmarkFolder)): this.strategy.threadLocalEntityManager
    //#pre[1] (void updatePathTree(WeblogBookmarkFolder)): folder != null
    //#pre[2] (void updatePathTree(WeblogBookmarkFolder)): log != null
    //#pre[4] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl
    //#pre[5] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.roller != null
    //#pre[6] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.roller.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#pre[7] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.roller.userManager != null
    //#pre[8] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.roller.userManager.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#pre[9] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.roller.userManager.strategy != null
    //#pre[10] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.roller.userManager.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[12] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.roller.userManager.strategy.threadLocalEntityManager != null
    //#pre[13] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.strategy != null
    //#pre[14] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[15] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.strategy.emf != null
    //#pre[16] (void updatePathTree(WeblogBookmarkFolder)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void updatePathTree(WeblogBookmarkFolder)): java.util.Iterator:next(...)@171 != null
    //#presumption(void updatePathTree(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders(...)@169 != null
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.util.Set:add
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:saveFolder
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:updatePathTree
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:getUserManager
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:saveWebsite
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.util.Date
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:setLastModified
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getId
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:getFolder
    //#unanalyzed(void updatePathTree(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:find
    //#test_vector(void updatePathTree(WeblogBookmarkFolder)): java.lang.String:equals(...)@176: {0}, {1}
    //#test_vector(void updatePathTree(WeblogBookmarkFolder)): java.util.Iterator:hasNext(...)@170: {0}, {1}
        
        WeblogBookmarkFolder childFolder = null;
    //#JPABookmarkManagerImpl.java:168: Warning: unused assignment
    //#    unused assignment into childFolder
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    Attribs:  Uncertain
        Iterator childFolders = folder.getFolders().iterator();
    //#JPABookmarkManagerImpl.java:169: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getFolders()
        while(childFolders.hasNext()) {
            childFolder = (WeblogBookmarkFolder) childFolders.next();
            
            log.debug("OLD child folder path was "+childFolder.getPath());
    //#JPABookmarkManagerImpl.java:173: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#JPABookmarkManagerImpl.java:173: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            
            // update path and save
            if("/".equals(folder.getPath())) {
    //#JPABookmarkManagerImpl.java:176: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
                childFolder.setPath("/" + childFolder.getName());
    //#JPABookmarkManagerImpl.java:177: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName()
    //#JPABookmarkManagerImpl.java:177: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath(String)
            } else {
                childFolder.setPath(folder.getPath() + "/" + 
    //#JPABookmarkManagerImpl.java:179: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#JPABookmarkManagerImpl.java:179: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getName()
    //#JPABookmarkManagerImpl.java:179: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:setPath(String)
                    childFolder.getName());
            }
            saveFolder(childFolder);
            
            log.debug("NEW child folder path is "+ childFolder.getPath());
    //#JPABookmarkManagerImpl.java:184: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#JPABookmarkManagerImpl.java:184: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void updatePathTree(WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            
            // then make recursive call to update this folders children
            updatePathTree(childFolder);
        }
    }
    //#JPABookmarkManagerImpl.java:189: end of method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.updatePathTree(WeblogBookmarkFolder)

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

    
    public void importBookmarks(
            Weblog website, String folderName, String opml)
            throws WebloggerException {
        String msg = "importBookmarks";
    //#JPABookmarkManagerImpl.java:203: method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.importBookmarks(Weblog, String, String)
    //#JPABookmarkManagerImpl.java:203: Warning: unused assignment
    //#    unused assignment into msg
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importBookmarks(Weblog, String, String)
    //#input(void importBookmarks(Weblog, String, String)): "."._tainted
    //#input(void importBookmarks(Weblog, String, String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#input(void importBookmarks(Weblog, String, String)): __Descendant_Table[others]
    //#input(void importBookmarks(Weblog, String, String)): __Dispatch_Table.getFolder(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void importBookmarks(Weblog, String, String)): __Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(void importBookmarks(Weblog, String, String)): folderName
    //#input(void importBookmarks(Weblog, String, String)): folderName._tainted
    //#input(void importBookmarks(Weblog, String, String)): opml
    //#input(void importBookmarks(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void importBookmarks(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void importBookmarks(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(void importBookmarks(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void importBookmarks(Weblog, String, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(void importBookmarks(Weblog, String, String)): this
    //#input(void importBookmarks(Weblog, String, String)): this.__Tag
    //#input(void importBookmarks(Weblog, String, String)): this.strategy
    //#input(void importBookmarks(Weblog, String, String)): this.strategy.__Tag
    //#input(void importBookmarks(Weblog, String, String)): this.strategy.emf
    //#input(void importBookmarks(Weblog, String, String)): this.strategy.threadLocalEntityManager
    //#input(void importBookmarks(Weblog, String, String)): website
    //#pre[6] (void importBookmarks(Weblog, String, String)): this.strategy != null
    //#pre[7] (void importBookmarks(Weblog, String, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[9] (void importBookmarks(Weblog, String, String)): this.strategy.threadLocalEntityManager != null
    //#pre[5] (void importBookmarks(Weblog, String, String)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl
    //#pre[8] (void importBookmarks(Weblog, String, String)): (soft) this.strategy.emf != null
    //#pre[10] (void importBookmarks(Weblog, String, String)): (soft) website != null
    //#presumption(void importBookmarks(Weblog, String, String)): java.util.Iterator:next(...)@222 != null
    //#presumption(void importBookmarks(Weblog, String, String)): org.jdom.Document:getRootElement(...)@219 != null
    //#presumption(void importBookmarks(Weblog, String, String)): org.jdom.Element:getChild(...)@219 != null
    //#presumption(void importBookmarks(Weblog, String, String)): org.jdom.Element:getChildren(...)@220 != null
    //#presumption(void importBookmarks(Weblog, String, String)): org.jdom.input.SAXBuilder:build(...)@208 != null
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:org.jdom.Element:getAttributeValue
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:org.jdom.Element:getChildren
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.lang.Integer
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmark
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:addBookmark
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:importOpmlElement
    //#unanalyzed(void importBookmarks(Weblog, String, String)): Effects-of-calling:org.apache.roller.RollerException
    //#test_vector(void importBookmarks(Weblog, String, String)): java.util.Iterator:hasNext(...)@221: {0}, {1}
        try {
            // Build JDOC document OPML string
            SAXBuilder builder = new SAXBuilder();
    //#JPABookmarkManagerImpl.java:206: Warning: method not available
    //#    -- call on void org.jdom.input.SAXBuilder()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importBookmarks(Weblog, String, String)
    //#    unanalyzed callee: void org.jdom.input.SAXBuilder()
            StringReader reader = new StringReader( opml );
            Document doc = builder.build( reader );
    //#JPABookmarkManagerImpl.java:208: Warning: method not available
    //#    -- call on Document org.jdom.input.SAXBuilder:build(Reader)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importBookmarks(Weblog, String, String)
    //#    unanalyzed callee: Document org.jdom.input.SAXBuilder:build(Reader)

            WeblogBookmarkFolder newFolder = getFolder(website, folderName);
            if (newFolder == null) {
                newFolder = new WeblogBookmarkFolder(
    //#JPABookmarkManagerImpl.java:212: 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.JPABookmarkManagerImpl
    //#    method: void importBookmarks(Weblog, String, String)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder(WeblogBookmarkFolder, String, String, Weblog)
                        getRootFolder(website), 
                        folderName, folderName, website);
                this.strategy.store(newFolder);
            }

            // Iterate through children of OPML body, importing each
            Element body = doc.getRootElement().getChild("body");
    //#JPABookmarkManagerImpl.java:219: Warning: method not available
    //#    -- call on Element org.jdom.Document:getRootElement()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importBookmarks(Weblog, String, String)
    //#    unanalyzed callee: Element org.jdom.Document:getRootElement()
    //#JPABookmarkManagerImpl.java:219: Warning: method not available
    //#    -- call on Element org.jdom.Element:getChild(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importBookmarks(Weblog, String, String)
    //#    unanalyzed callee: Element org.jdom.Element:getChild(String)
            Iterator iter = body.getChildren().iterator();
    //#JPABookmarkManagerImpl.java:220: Warning: method not available
    //#    -- call on List org.jdom.Element:getChildren()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importBookmarks(Weblog, String, String)
    //#    unanalyzed callee: List org.jdom.Element:getChildren()
            while (iter.hasNext()) {
                Element elem = (Element)iter.next();
                importOpmlElement( website, elem, newFolder );
            }

        } catch (Exception ex) {
            throw new WebloggerException(ex);
        }
    }
    //#JPABookmarkManagerImpl.java:229: end of method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.importBookmarks(Weblog, String, String)

    // convenience method used when importing bookmarks
    // NOTE: this method does not commit any changes; 
    // that is done by importBookmarks()
    private void importOpmlElement(
            Weblog website, Element elem, WeblogBookmarkFolder parent)
            throws WebloggerException {
        String text = elem.getAttributeValue("text");
    //#JPABookmarkManagerImpl.java:237: method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#JPABookmarkManagerImpl.java:237: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): elem
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.store(Ljava/lang/Object;)Ljava/lang/Object;
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): parent
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): this
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): this.strategy
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): this.strategy.__Tag
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): this.strategy.emf
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): this.strategy.threadLocalEntityManager
    //#input(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): website
    //#pre[1] (void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): elem != null
    //#pre[2] (void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): (soft) parent != null
    //#pre[4] (void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): (soft) this.strategy != null
    //#pre[5] (void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): (soft) this.strategy.emf != null
    //#pre[7] (void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): java.util.Iterator:next(...)@284 != null
    //#presumption(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): org.jdom.Element:getChildren(...)@250 != null
    //#presumption(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): org.jdom.Element:getChildren(...)@282 != null
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:contains
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:persist
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:org.jdom.Element:getAttributeValue
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:org.jdom.Element:getChildren
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:java.lang.Integer
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmark
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:addBookmark
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogBookmarkFolder
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): Effects-of-calling:importOpmlElement
    //#test_vector(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): java.util.Iterator:hasNext(...)@283: {0}, {1}
    //#test_vector(void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)): java.util.List:size(...)@250: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
        String title = elem.getAttributeValue("title");
    //#JPABookmarkManagerImpl.java:238: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
        String desc = elem.getAttributeValue("description");
    //#JPABookmarkManagerImpl.java:239: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
        String url = elem.getAttributeValue("url");
    //#JPABookmarkManagerImpl.java:240: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
        //String type = elem.getAttributeValue("type");
        String xmlUrl = elem.getAttributeValue("xmlUrl");
    //#JPABookmarkManagerImpl.java:242: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)
        String htmlUrl = elem.getAttributeValue("htmlUrl");
    //#JPABookmarkManagerImpl.java:243: Warning: method not available
    //#    -- call on String org.jdom.Element:getAttributeValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.jdom.Element:getAttributeValue(String)

        title =   null!=title ? title : text;
        desc =    null!=desc ? desc : title;
        xmlUrl =  null!=xmlUrl ? xmlUrl : url;
        url =     null!=htmlUrl ? htmlUrl : url;

        if (elem.getChildren().size()==0) {
    //#JPABookmarkManagerImpl.java:250: Warning: method not available
    //#    -- call on List org.jdom.Element:getChildren()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: List org.jdom.Element:getChildren()
            // Leaf element.  Store a bookmark
            // Currently bookmarks must have at least a name and 
            // HTML url to be stored. Previous logic was
            // trying to skip invalid ones, but was letting ones 
            // with an xml url and no html url through
            // which could result in a db exception.
            // TODO: Consider providing error feedback instead of 
            // silently skipping the invalid bookmarks here.
            if (null != title && null != url) {
                WeblogBookmark bd = new WeblogBookmark(parent,
    //#JPABookmarkManagerImpl.java:260: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogBookmark(WeblogBookmarkFolder, String, String, String, String, Integer, Integer, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmark(WeblogBookmarkFolder, String, String, String, String, Integer, Integer, String)
                        title,
                        desc,
                        url,
                        xmlUrl,
                        new Integer(0),
                        new Integer(100),
                        null);
                parent.addBookmark(bd);
    //#JPABookmarkManagerImpl.java:268: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:addBookmark(WeblogBookmark)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:addBookmark(WeblogBookmark)
                // TODO: maybe this should be saving the folder?
                this.strategy.store(bd);
            }
        } else {
            // Store a folder
            WeblogBookmarkFolder fd = new WeblogBookmarkFolder(
    //#JPABookmarkManagerImpl.java:274: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
    //#JPABookmarkManagerImpl.java:274: 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.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogBookmarkFolder(WeblogBookmarkFolder, String, String, Weblog)
                    parent,
                    title,
                    desc,
                    parent.getWebsite());
            this.strategy.store(fd);

            // Import folder's children
            Iterator iter = elem.getChildren("outline").iterator();
    //#JPABookmarkManagerImpl.java:282: Warning: method not available
    //#    -- call on List org.jdom.Element:getChildren(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: void importOpmlElement(Weblog, Element, WeblogBookmarkFolder)
    //#    unanalyzed callee: List org.jdom.Element:getChildren(String)
            while ( iter.hasNext() ) {
                Element subelem = (Element)iter.next();
                importOpmlElement( website, subelem, fd  );
            }
        }
    }
    //#JPABookmarkManagerImpl.java:288: end of method: void org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.importOpmlElement(Weblog, Element, WeblogBookmarkFolder)


    public WeblogBookmarkFolder getFolder(Weblog website, String path)
            throws WebloggerException {

        if (path == null || path.trim().equals("/")) {
    //#JPABookmarkManagerImpl.java:294: method: WeblogBookmarkFolder org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.getFolder(Weblog, String)
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): "."._tainted
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): __Descendant_Table[others]
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): __Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): path
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): path._tainted
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): this
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): this.__Tag
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): this.strategy
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): this.strategy.__Tag
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): this.strategy.emf
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): this.strategy.threadLocalEntityManager
    //#input(WeblogBookmarkFolder getFolder(Weblog, String)): website
    //#output(WeblogBookmarkFolder getFolder(Weblog, String)): return_value
    //#pre[5] (WeblogBookmarkFolder getFolder(Weblog, String)): this.strategy != null
    //#pre[6] (WeblogBookmarkFolder getFolder(Weblog, String)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[8] (WeblogBookmarkFolder getFolder(Weblog, String)): this.strategy.threadLocalEntityManager != null
    //#pre[4] (WeblogBookmarkFolder getFolder(Weblog, String)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl
    //#pre[7] (WeblogBookmarkFolder getFolder(Weblog, String)): (soft) this.strategy.emf != null
    //#pre[9] (WeblogBookmarkFolder getFolder(Weblog, String)): (soft) website != null
    //#post(WeblogBookmarkFolder getFolder(Weblog, String)): init'ed(return_value)
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(WeblogBookmarkFolder getFolder(Weblog, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(WeblogBookmarkFolder getFolder(Weblog, String)): path: Addr_Set{null}, Inverse{null}
    //#test_vector(WeblogBookmarkFolder getFolder(Weblog, String)): java.lang.String:equals(...)@294: {0}, {1}
    //#test_vector(WeblogBookmarkFolder getFolder(Weblog, String)): java.lang.String:startsWith(...)@300: {1}, {0}
            return getRootFolder(website);
        } else {
            String folderPath = path;

            // all folder paths must begin with a '/'
            if(!folderPath.startsWith("/")) {
                folderPath = "/"+folderPath;
            }

            // now just do simple lookup by path
            Query query = strategy.getNamedQuery("WeblogBookmarkFolder.getByWebsite&Path");
            query.setParameter(1, website);
            query.setParameter(2, folderPath);
            try {
                return (WeblogBookmarkFolder)query.getSingleResult();
            } catch (NoResultException e) {
                return null;
    //#JPABookmarkManagerImpl.java:311: end of method: WeblogBookmarkFolder org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.getFolder(Weblog, String)
            }
        }
    }

    /**
     * @see org.apache.roller.weblogger.model.BookmarkManager#retrieveBookmarks(
     *      org.apache.roller.weblogger.pojos.WeblogBookmarkFolder, boolean)
     */
    public List getBookmarks(WeblogBookmarkFolder folder, boolean subfolders) 
            throws WebloggerException {
        Query query = null;
    //#JPABookmarkManagerImpl.java:322: method: List org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.getBookmarks(WeblogBookmarkFolder, bool)
    //#JPABookmarkManagerImpl.java:322: Warning: unused assignment
    //#    unused assignment into query
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: List getBookmarks(WeblogBookmarkFolder, bool)
    //#    Attribs:  Uncertain
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): folder
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): subfolders
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): this
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): this.strategy
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): this.strategy.__Tag
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): this.strategy.emf
    //#input(List getBookmarks(WeblogBookmarkFolder, bool)): this.strategy.threadLocalEntityManager
    //#output(List getBookmarks(WeblogBookmarkFolder, bool)): return_value
    //#pre[4] (List getBookmarks(WeblogBookmarkFolder, bool)): this.strategy != null
    //#pre[5] (List getBookmarks(WeblogBookmarkFolder, bool)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[7] (List getBookmarks(WeblogBookmarkFolder, bool)): this.strategy.threadLocalEntityManager != null
    //#pre[1] (List getBookmarks(WeblogBookmarkFolder, bool)): (soft) folder != null
    //#pre[6] (List getBookmarks(WeblogBookmarkFolder, bool)): (soft) this.strategy.emf != null
    //#post(List getBookmarks(WeblogBookmarkFolder, bool)): init'ed(return_value)
    //#unanalyzed(List getBookmarks(WeblogBookmarkFolder, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getBookmarks(WeblogBookmarkFolder, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getBookmarks(WeblogBookmarkFolder, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getBookmarks(WeblogBookmarkFolder, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getBookmarks(WeblogBookmarkFolder, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getBookmarks(WeblogBookmarkFolder, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getBookmarks(WeblogBookmarkFolder, bool)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getBookmarks(WeblogBookmarkFolder, bool)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#test_vector(List getBookmarks(WeblogBookmarkFolder, bool)): subfolders: {1}, {0}
        List results = null;
    //#JPABookmarkManagerImpl.java:323: Warning: unused assignment
    //#    unused assignment into results
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: List getBookmarks(WeblogBookmarkFolder, bool)
    //#    Attribs:  Uncertain

        if(!subfolders) {
            // if no subfolders then this is an equals query
            query = strategy.getNamedQuery("BoomarkData.getByFolder");
            query.setParameter(1, folder);
            results = query.getResultList();
        } else {
            // if we are doing subfolders then do a case sensitive
            // query using folder path
            query = strategy.getNamedQuery( 
                "BoomarkData.getByFolder.pathLike&Folder.website");
            query.setParameter(1, folder.getPath() + '%');
    //#JPABookmarkManagerImpl.java:335: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: List getBookmarks(WeblogBookmarkFolder, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
            query.setParameter(2, folder.getWebsite());
    //#JPABookmarkManagerImpl.java:336: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: List getBookmarks(WeblogBookmarkFolder, bool)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
            results = query.getResultList();
        }
            
        return results;
    //#JPABookmarkManagerImpl.java:340: end of method: List org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.getBookmarks(WeblogBookmarkFolder, bool)
    }

    public WeblogBookmarkFolder getRootFolder(Weblog website)
            throws WebloggerException {
        if (website == null)
    //#JPABookmarkManagerImpl.java:345: method: WeblogBookmarkFolder org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.getRootFolder(Weblog)
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): this
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): this.strategy
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): this.strategy.__Tag
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): this.strategy.emf
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): this.strategy.threadLocalEntityManager
    //#input(WeblogBookmarkFolder getRootFolder(Weblog)): website
    //#output(WeblogBookmarkFolder getRootFolder(Weblog)): return_value
    //#pre[2] (WeblogBookmarkFolder getRootFolder(Weblog)): this.strategy != null
    //#pre[3] (WeblogBookmarkFolder getRootFolder(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (WeblogBookmarkFolder getRootFolder(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (WeblogBookmarkFolder getRootFolder(Weblog)): website != null
    //#pre[4] (WeblogBookmarkFolder getRootFolder(Weblog)): (soft) this.strategy.emf != null
    //#post(WeblogBookmarkFolder getRootFolder(Weblog)): init'ed(return_value)
    //#unanalyzed(WeblogBookmarkFolder getRootFolder(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(WeblogBookmarkFolder getRootFolder(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(WeblogBookmarkFolder getRootFolder(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(WeblogBookmarkFolder getRootFolder(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(WeblogBookmarkFolder getRootFolder(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(WeblogBookmarkFolder getRootFolder(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(WeblogBookmarkFolder getRootFolder(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(WeblogBookmarkFolder getRootFolder(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
            throw new WebloggerException("website is null");
        
        Query q = strategy.getNamedQuery("WeblogBookmarkFolder.getByWebsite&ParentNull");
        q.setParameter(1, website);
        try {
            return (WeblogBookmarkFolder)q.getSingleResult();
        } catch (NoResultException e) {
            return null;
    //#JPABookmarkManagerImpl.java:353: end of method: WeblogBookmarkFolder org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.getRootFolder(Weblog)
        }
    }

    public List getAllFolders(Weblog website)
            throws WebloggerException {
        if (website == null)
    //#JPABookmarkManagerImpl.java:359: method: List org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.getAllFolders(Weblog)
    //#input(List getAllFolders(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getAllFolders(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getAllFolders(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getAllFolders(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getAllFolders(Weblog)): this
    //#input(List getAllFolders(Weblog)): this.strategy
    //#input(List getAllFolders(Weblog)): this.strategy.__Tag
    //#input(List getAllFolders(Weblog)): this.strategy.emf
    //#input(List getAllFolders(Weblog)): this.strategy.threadLocalEntityManager
    //#input(List getAllFolders(Weblog)): website
    //#output(List getAllFolders(Weblog)): return_value
    //#pre[2] (List getAllFolders(Weblog)): this.strategy != null
    //#pre[3] (List getAllFolders(Weblog)): this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[5] (List getAllFolders(Weblog)): this.strategy.threadLocalEntityManager != null
    //#pre[6] (List getAllFolders(Weblog)): website != null
    //#pre[4] (List getAllFolders(Weblog)): (soft) this.strategy.emf != null
    //#post(List getAllFolders(Weblog)): init'ed(return_value)
    //#unanalyzed(List getAllFolders(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getAllFolders(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getAllFolders(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getAllFolders(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getAllFolders(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getAllFolders(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getAllFolders(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getAllFolders(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
            throw new WebloggerException("Website is null");
        
        Query q = strategy.getNamedQuery("WeblogBookmarkFolder.getByWebsite");
        q.setParameter(1, website);
        return q.getResultList();
    //#JPABookmarkManagerImpl.java:364: end of method: List org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.getAllFolders(Weblog)
    }

    
    /**
     * make sure the given folder doesn't already exist.
     */
    private boolean isDuplicateFolderName(WeblogBookmarkFolder folder) 
        throws WebloggerException {

        // ensure that no sibling categories share the same name
        WeblogBookmarkFolder parent = folder.getParent();
    //#JPABookmarkManagerImpl.java:375: method: bool org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.isDuplicateFolderName(WeblogBookmarkFolder)
    //#JPABookmarkManagerImpl.java:375: Warning: method not available
    //#    -- call on WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: bool isDuplicateFolderName(WeblogBookmarkFolder)
    //#    unanalyzed callee: WeblogBookmarkFolder org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent()
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): "."._tainted
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): __Descendant_Table[org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl]
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): __Descendant_Table[others]
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): __Dispatch_Table.getFolder(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): __Dispatch_Table.getRootFolder(Lorg/apache/roller/weblogger/pojos/Weblog;)Lorg/apache/roller/weblogger/pojos/WeblogBookmarkFolder;
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): folder
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): this
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): this.__Tag
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): this.strategy
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): this.strategy.__Tag
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): this.strategy.emf
    //#input(bool isDuplicateFolderName(WeblogBookmarkFolder)): this.strategy.threadLocalEntityManager
    //#output(bool isDuplicateFolderName(WeblogBookmarkFolder)): return_value
    //#pre[1] (bool isDuplicateFolderName(WeblogBookmarkFolder)): folder != null
    //#pre[3] (bool isDuplicateFolderName(WeblogBookmarkFolder)): (soft) this.__Tag == org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl
    //#pre[4] (bool isDuplicateFolderName(WeblogBookmarkFolder)): (soft) this.strategy != null
    //#pre[5] (bool isDuplicateFolderName(WeblogBookmarkFolder)): (soft) this.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#pre[6] (bool isDuplicateFolderName(WeblogBookmarkFolder)): (soft) this.strategy.emf != null
    //#pre[7] (bool isDuplicateFolderName(WeblogBookmarkFolder)): (soft) this.strategy.threadLocalEntityManager != null
    //#presumption(bool isDuplicateFolderName(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite(...)@377 != null
    //#post(bool isDuplicateFolderName(WeblogBookmarkFolder)): init'ed(return_value)
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(bool isDuplicateFolderName(WeblogBookmarkFolder)): Effects-of-calling:java.lang.String:startsWith
    //#test_vector(bool isDuplicateFolderName(WeblogBookmarkFolder)): org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getParent(...)@375: Addr_Set{null}, Inverse{null}
        if (null != parent) {
            return (getFolder(folder.getWebsite(), folder.getPath()) != null);
    //#JPABookmarkManagerImpl.java:377: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: bool isDuplicateFolderName(WeblogBookmarkFolder)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getWebsite()
    //#JPABookmarkManagerImpl.java:377: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl
    //#    method: bool isDuplicateFolderName(WeblogBookmarkFolder)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:getPath()
        }
        
        return false;
    //#JPABookmarkManagerImpl.java:380: end of method: bool org.apache.roller.weblogger.business.jpa.JPABookmarkManagerImpl.isDuplicateFolderName(WeblogBookmarkFolder)
    }


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