//# 14 errors, 422 messages
//#
/*
    //#PluginManagerImpl.java:1:1: class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
 * 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.plugins;

import java.util.ArrayList;
import org.apache.roller.weblogger.business.plugins.entry.WeblogEntryPlugin;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.commons.lang.StringUtils;
import org.apache.roller.weblogger.business.plugins.comment.WeblogEntryCommentPlugin;
import org.apache.roller.weblogger.pojos.WeblogEntryComment;


/**
 * Plugin management for business layer and more generally applied plugins.
 */
public class PluginManagerImpl implements PluginManager {
    
    private static Log log = LogFactory.getLog(PluginManagerImpl.class);
    //#PluginManagerImpl.java:42: method: org.apache.roller.weblogger.business.plugins.PluginManagerImpl.org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init
    //#PluginManagerImpl.java:42: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/plugins/PluginManagerImpl]
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.applyCommentPlugins(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.applyWeblogEntryPlugins(Ljava/util/Map;Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.getCommentPlugins()Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.getWeblogEntryPlugins(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/Map;
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.hasPagePlugins()Z
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.loadCommentPlugins()V
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.loadPagePluginClasses()V
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.release()V
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): log
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): mPagePlugins
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): new LinkedHashMap(PluginManagerImpl__static_init#1) num objects
    //#output(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): org/apache/roller/weblogger/business/plugins/PluginManager.__Descendant_Table[org/apache/roller/weblogger/business/plugins/PluginManagerImpl]
    //#new obj(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): new LinkedHashMap(PluginManagerImpl__static_init#1)
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Descendant_Table[org/apache/roller/weblogger/business/plugins/PluginManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): org/apache/roller/weblogger/business/plugins/PluginManager.__Descendant_Table[org/apache/roller/weblogger/business/plugins/PluginManagerImpl] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.applyCommentPlugins(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;Ljava/lang/String;)Ljava/lang/String; == &applyCommentPlugins
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.applyWeblogEntryPlugins(Ljava/util/Map;Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String; == &applyWeblogEntryPlugins
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.getCommentPlugins()Ljava/util/List; == &getCommentPlugins
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.getWeblogEntryPlugins(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/Map; == &getWeblogEntryPlugins
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.hasPagePlugins()Z == &hasPagePlugins
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.loadCommentPlugins()V == &loadCommentPlugins
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.loadPagePluginClasses()V == &loadPagePluginClasses
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): __Dispatch_Table.release()V == &release
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): init'ed(log)
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): mPagePlugins == &new LinkedHashMap(PluginManagerImpl__static_init#1)
    //#post(org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init): new LinkedHashMap(PluginManagerImpl__static_init#1) num objects == 1
    
    // Plugin classes keyed by plugin name
    static Map mPagePlugins = new LinkedHashMap();
    //#PluginManagerImpl.java:45: end of method: org.apache.roller.weblogger.business.plugins.PluginManagerImpl.org.apache.roller.weblogger.business.plugins.PluginManagerImpl__static_init
    
    // Comment plugins
    private List<WeblogEntryCommentPlugin> commentPlugins = new ArrayList();
    
    
    /**
     * Creates a new instance of PluginManagerImpl
     */
    public PluginManagerImpl() {
    //#PluginManagerImpl.java:54: method: void org.apache.roller.weblogger.business.plugins.PluginManagerImpl.org.apache.roller.weblogger.business.plugins.PluginManagerImpl()
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): " is not a PagePlugin"._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "="._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "ClassCastException for "._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "ClassNotFoundException for "._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "Configured comment plugin: "._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "Fetching property ["._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "IllegalAccessException for "._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "InstantiationException for "._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "]"._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "comment.formatter.classnames"._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "plugins.page"._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "try "._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): "trying "._tainted
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): log
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): mPagePlugins
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[others]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[others]
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/config/WebloggerConfig.config
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/config/WebloggerConfig.log
    //#input(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): this
    //#output(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): new ArrayList(PluginManagerImpl#1) num objects
    //#output(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): this.commentPlugins
    //#new obj(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): new ArrayList(PluginManagerImpl#1)
    //#pre[1] (void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): log != null
    //#pre[3] (void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/config/WebloggerConfig.config != null
    //#pre[4] (void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): org/apache/roller/weblogger/config/WebloggerConfig.log != null
    //#pre[2] (void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): (soft) mPagePlugins != null
    //#post(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): this.commentPlugins == &new ArrayList(PluginManagerImpl#1)
    //#post(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): new ArrayList(PluginManagerImpl#1) num objects == 1
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.lang.Class:getInterfaces
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:org.apache.commons.lang.StringUtils:split
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:org.apache.commons.lang.StringUtils:stripAll
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.lang.Class:forName
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.lang.Class:newInstance
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.util.List:add
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:getName
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:java.util.Map:put
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(void org.apache.roller.weblogger.business.plugins.PluginManagerImpl()): Effects-of-calling:org.apache.commons.logging.Log:warn
        // load weblog entry plugins
        loadPagePluginClasses();
        
        // load weblog entry comment plugins
        loadCommentPlugins();
    }
    //#PluginManagerImpl.java:60: end of method: void org.apache.roller.weblogger.business.plugins.PluginManagerImpl.org.apache.roller.weblogger.business.plugins.PluginManagerImpl()
    
    
    public boolean hasPagePlugins() {
        log.debug("mPluginClasses.size(): " + mPagePlugins.size());
    //#PluginManagerImpl.java:64: method: bool org.apache.roller.weblogger.business.plugins.PluginManagerImpl.hasPagePlugins()
    //#PluginManagerImpl.java:64: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: bool hasPagePlugins()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(bool hasPagePlugins()): "mPluginClasses.size(): "._tainted
    //#input(bool hasPagePlugins()): log
    //#input(bool hasPagePlugins()): mPagePlugins
    //#output(bool hasPagePlugins()): return_value
    //#pre[1] (bool hasPagePlugins()): log != null
    //#pre[2] (bool hasPagePlugins()): mPagePlugins != null
    //#post(bool hasPagePlugins()): init'ed(return_value)
        return (mPagePlugins != null && mPagePlugins.size() > 0);
    //#PluginManagerImpl.java:65: end of method: bool org.apache.roller.weblogger.business.plugins.PluginManagerImpl.hasPagePlugins()
    }
    
    
    /**
     * Create and init plugins for processing entries in a specified website.
     */
    public Map getWeblogEntryPlugins(Weblog website) {
        Map ret = new LinkedHashMap();
    //#PluginManagerImpl.java:73: method: Map org.apache.roller.weblogger.business.plugins.PluginManagerImpl.getWeblogEntryPlugins(Weblog)
    //#input(Map getWeblogEntryPlugins(Weblog)): log
    //#input(Map getWeblogEntryPlugins(Weblog)): mPagePlugins
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin.__Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin.__Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin.__Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin.__Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin.__Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin.__Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin.__Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[others]
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(Map getWeblogEntryPlugins(Weblog)): org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin.__Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(Map getWeblogEntryPlugins(Weblog)): website
    //#output(Map getWeblogEntryPlugins(Weblog)): new LinkedHashMap(getWeblogEntryPlugins#1) num objects
    //#output(Map getWeblogEntryPlugins(Weblog)): return_value
    //#new obj(Map getWeblogEntryPlugins(Weblog)): new LinkedHashMap(getWeblogEntryPlugins#1)
    //#pre[2] (Map getWeblogEntryPlugins(Weblog)): mPagePlugins != null
    //#pre[1] (Map getWeblogEntryPlugins(Weblog)): (soft) log != null
    //#presumption(Map getWeblogEntryPlugins(Weblog)): java.lang.Class:newInstance(...).__Tag@78 in {org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin, org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin, org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin, org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin, org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin, org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin, org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin, org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin, org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin}
    //#presumption(Map getWeblogEntryPlugins(Weblog)): java.util.Iterator:next(...)@77 != null
    //#presumption(Map getWeblogEntryPlugins(Weblog)): java.util.Map:values(...)@74 != null
    //#post(Map getWeblogEntryPlugins(Weblog)): return_value == &new LinkedHashMap(getWeblogEntryPlugins#1)
    //#post(Map getWeblogEntryPlugins(Weblog)): new LinkedHashMap(getWeblogEntryPlugins#1) num objects == 1
    //#test_vector(Map getWeblogEntryPlugins(Weblog)): java.util.Iterator:hasNext(...)@75: {0}, {1}
        Iterator it = this.mPagePlugins.values().iterator();
        while (it.hasNext()) {
            try {
                Class pluginClass = (Class)it.next();
                WeblogEntryPlugin plugin = (WeblogEntryPlugin)pluginClass.newInstance();
                plugin.init(website);
    //#PluginManagerImpl.java:79: Warning: call too complex - analysis skipped
    //#    -- call on void init(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: Map getWeblogEntryPlugins(Weblog)
    //#    unanalyzed callee: void init(Weblog)
                ret.put(plugin.getName(), plugin);
    //#PluginManagerImpl.java:80: Warning: call too complex - analysis skipped
    //#    -- call on String getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: Map getWeblogEntryPlugins(Weblog)
    //#    unanalyzed callee: String getName()
            } catch (Exception e) {
                log.error("Unable to init() PagePlugin: ", e);
    //#PluginManagerImpl.java:82: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: Map getWeblogEntryPlugins(Weblog)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
            }
        }
        return ret;
    //#PluginManagerImpl.java:85: end of method: Map org.apache.roller.weblogger.business.plugins.PluginManagerImpl.getWeblogEntryPlugins(Weblog)
    }
    
    
    public String applyWeblogEntryPlugins(Map pagePlugins,WeblogEntry entry, String str) {
        String ret = str;
    //#PluginManagerImpl.java:90: method: String org.apache.roller.weblogger.business.plugins.PluginManagerImpl.applyWeblogEntryPlugins(Map, WeblogEntry, String)
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): "ERROR: plugin not found: "._tainted
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): entry
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): log
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[others]
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): pagePlugins
    //#input(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): str
    //#output(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): return_value
    //#pre[2] (String applyWeblogEntryPlugins(Map, WeblogEntry, String)): (soft) log != null
    //#pre[3] (String applyWeblogEntryPlugins(Map, WeblogEntry, String)): (soft) pagePlugins != null
    //#presumption(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): java.util.Map:get(...).__Tag@97 in {org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin, org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin, org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin, org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin, org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin, org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin, org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin, org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin, org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin}
    //#post(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): init'ed(return_value)
    //#test_vector(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): java.util.Iterator:hasNext(...)@95: {0}, {1}
    //#test_vector(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): java.util.List:isEmpty(...)@93: {1}, {0}
    //#test_vector(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): java.util.Map:get(...)@97: Addr_Set{null}, Inverse{null}
    //#test_vector(String applyWeblogEntryPlugins(Map, WeblogEntry, String)): org.apache.roller.weblogger.pojos.WeblogEntry:getPluginsList(...)@92: Addr_Set{null}, Inverse{null}
        WeblogEntry copy = new WeblogEntry(entry);
    //#PluginManagerImpl.java:91: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry(WeblogEntry)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: String applyWeblogEntryPlugins(Map, WeblogEntry, String)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry(WeblogEntry)
        List entryPlugins = copy.getPluginsList();
    //#PluginManagerImpl.java:92: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.pojos.WeblogEntry:getPluginsList()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: String applyWeblogEntryPlugins(Map, WeblogEntry, String)
    //#    unanalyzed callee: List org.apache.roller.weblogger.pojos.WeblogEntry:getPluginsList()
        if (entryPlugins != null && !entryPlugins.isEmpty()) {
            Iterator iter = entryPlugins.iterator();
            while (iter.hasNext()) {
                String key = (String)iter.next();
                WeblogEntryPlugin pagePlugin = (WeblogEntryPlugin)pagePlugins.get(key);
                if (pagePlugin != null) {
                    ret = pagePlugin.render(entry, ret);
    //#PluginManagerImpl.java:99: Warning: call too complex - analysis skipped
    //#    -- call on String render(WeblogEntry, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: String applyWeblogEntryPlugins(Map, WeblogEntry, String)
    //#    unanalyzed callee: String render(WeblogEntry, String)
                } else {
                    log.error("ERROR: plugin not found: " + key);
    //#PluginManagerImpl.java:101: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: String applyWeblogEntryPlugins(Map, WeblogEntry, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
                }
            }
        }
        return ret;
    //#PluginManagerImpl.java:105: end of method: String org.apache.roller.weblogger.business.plugins.PluginManagerImpl.applyWeblogEntryPlugins(Map, WeblogEntry, String)
    }
    
    
    /**
     * @inheritDoc
     */
    public List<WeblogEntryCommentPlugin> getCommentPlugins() {
        return commentPlugins;
    //#PluginManagerImpl.java:113: method: List org.apache.roller.weblogger.business.plugins.PluginManagerImpl.getCommentPlugins()
    //#input(List getCommentPlugins()): this
    //#input(List getCommentPlugins()): this.commentPlugins
    //#output(List getCommentPlugins()): return_value
    //#pre[2] (List getCommentPlugins()): init'ed(this.commentPlugins)
    //#post(List getCommentPlugins()): return_value == this.commentPlugins
    //#post(List getCommentPlugins()): init'ed(return_value)
    //#PluginManagerImpl.java:113: end of method: List org.apache.roller.weblogger.business.plugins.PluginManagerImpl.getCommentPlugins()
    }
    
    
    /**
     * @inheritDoc
     */
    public String applyCommentPlugins(WeblogEntryComment comment, String text) {
        
        if(comment == null || text == null) {
    //#PluginManagerImpl.java:122: method: String org.apache.roller.weblogger.business.plugins.PluginManagerImpl.applyCommentPlugins(WeblogEntryComment, String)
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "">"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "&#10;<p>"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "<.a>"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "<.p>&#10;&#10;"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "<a href=""._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "<br.>&#10;"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "AutoFormat"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "HTMLSubset"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "Invoking comment plugin "._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "LinkMarkup"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "ending value:&#10;"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): "starting value:&#10;"._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): comment
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): log
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin.log
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin.log
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin.pattern
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin]
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin]
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin]
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin]
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[others]
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntryComment;Ljava/lang/String;)Ljava/lang/String;
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): text
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): text._tainted
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): this
    //#input(String applyCommentPlugins(WeblogEntryComment, String)): this.commentPlugins
    //#output(String applyCommentPlugins(WeblogEntryComment, String)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String applyCommentPlugins(WeblogEntryComment, String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String applyCommentPlugins(WeblogEntryComment, String)): return_value
    //#new obj(String applyCommentPlugins(WeblogEntryComment, String)): java.lang.StringBuffer:toString(...)
    //#new obj(String applyCommentPlugins(WeblogEntryComment, String)): java.lang.StringBuilder:toString(...)
    //#pre[1] (String applyCommentPlugins(WeblogEntryComment, String)): comment != null
    //#pre[3] (String applyCommentPlugins(WeblogEntryComment, String)): text != null
    //#pre[6] (String applyCommentPlugins(WeblogEntryComment, String)): this.commentPlugins != null
    //#pre[2] (String applyCommentPlugins(WeblogEntryComment, String)): (soft) log != null
    //#presumption(String applyCommentPlugins(WeblogEntryComment, String)): java.util.Iterator:next(...).__Tag@129 in {org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin, org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin, org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin, org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin}
    //#presumption(String applyCommentPlugins(WeblogEntryComment, String)): java.util.Iterator:next(...)@129 != null
    //#presumption(String applyCommentPlugins(WeblogEntryComment, String)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getPlugins(...)@130 != null
    //#post(String applyCommentPlugins(WeblogEntryComment, String)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String applyCommentPlugins(WeblogEntryComment, String)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String applyCommentPlugins(WeblogEntryComment, String)): init'ed(return_value)
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:escapeHTML
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:transformToHTMLSubset
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.io.StringReader
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.io.BufferedReader
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.io.BufferedReader:readLine
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.util.regex.Matcher:find
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.util.regex.Matcher:start
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:java.util.regex.Matcher:end
    //#unanalyzed(String applyCommentPlugins(WeblogEntryComment, String)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:unescapeHTML
    //#test_vector(String applyCommentPlugins(WeblogEntryComment, String)): java.lang.String:indexOf(...)@130: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(String applyCommentPlugins(WeblogEntryComment, String)): java.util.Iterator:hasNext(...)@129: {0}, {1}
    //#test_vector(String applyCommentPlugins(WeblogEntryComment, String)): java.util.List:size(...)@128: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(String applyCommentPlugins(WeblogEntryComment, String)): org.apache.roller.weblogger.pojos.WeblogEntryComment:getPlugins(...)@130: Addr_Set{null}, Inverse{null}
            throw new IllegalArgumentException("comment cannot be null");
        }
        
        String content = text;
        
        if (commentPlugins.size() > 0) {
            for( WeblogEntryCommentPlugin plugin : commentPlugins ) {
                if(comment.getPlugins() != null &&
    //#PluginManagerImpl.java:130: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryComment:getPlugins()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: String applyCommentPlugins(WeblogEntryComment, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryComment:getPlugins()
                        comment.getPlugins().indexOf(plugin.getId()) != -1) {
                    log.debug("Invoking comment plugin "+plugin.getId());
    //#PluginManagerImpl.java:132: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: String applyCommentPlugins(WeblogEntryComment, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    content = plugin.render(comment, content);
                }
            }
        }
        
        return content;
    //#PluginManagerImpl.java:138: end of method: String org.apache.roller.weblogger.business.plugins.PluginManagerImpl.applyCommentPlugins(WeblogEntryComment, String)
    }
    
    
    /**
     * Initialize PagePlugins declared in roller.properties.
     * By using the full class name we also allow for the implementation of
     * "external" Plugins (maybe even packaged seperately). These classes are
     * then later instantiated by PageHelper.
     */
    private void loadPagePluginClasses() {
        log.debug("Initializing page plugins");
    //#PluginManagerImpl.java:149: method: void org.apache.roller.weblogger.business.plugins.PluginManagerImpl.loadPagePluginClasses()
    //#PluginManagerImpl.java:149: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void loadPagePluginClasses()): " is not a PagePlugin"._tainted
    //#input(void loadPagePluginClasses()): "="._tainted
    //#input(void loadPagePluginClasses()): "ClassNotFoundException for "._tainted
    //#input(void loadPagePluginClasses()): "Fetching property ["._tainted
    //#input(void loadPagePluginClasses()): "IllegalAccessException for "._tainted
    //#input(void loadPagePluginClasses()): "InstantiationException for "._tainted
    //#input(void loadPagePluginClasses()): "]"._tainted
    //#input(void loadPagePluginClasses()): "plugins.page"._tainted
    //#input(void loadPagePluginClasses()): "try "._tainted
    //#input(void loadPagePluginClasses()): log
    //#input(void loadPagePluginClasses()): mPagePlugins
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[others]
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/config/WebloggerConfig.config
    //#input(void loadPagePluginClasses()): org/apache/roller/weblogger/config/WebloggerConfig.log
    //#pre[1] (void loadPagePluginClasses()): log != null
    //#pre[3] (void loadPagePluginClasses()): org/apache/roller/weblogger/config/WebloggerConfig.config != null
    //#pre[4] (void loadPagePluginClasses()): org/apache/roller/weblogger/config/WebloggerConfig.log != null
    //#pre[2] (void loadPagePluginClasses()): (soft) mPagePlugins != null
    //#presumption(void loadPagePluginClasses()): java.lang.Class:forName(...)@159 != null
    //#presumption(void loadPagePluginClasses()): java.lang.Class:newInstance(...).__Tag@161 in {org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin, org/apache/roller/weblogger/business/plugins/entry/BookmarkPlugin, org/apache/roller/weblogger/business/plugins/entry/ConvertLineBreaksPlugin, org/apache/roller/weblogger/business/plugins/entry/GoogleLinkPlugin, org/apache/roller/weblogger/business/plugins/entry/ObfuscateEmailPlugin, org/apache/roller/weblogger/business/plugins/entry/SmileysPlugin, org/apache/roller/weblogger/business/plugins/entry/TopicTagPlugin, org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin, org/apache/roller/weblogger/business/plugins/entry/WikipediaLinkPlugin}
    //#presumption(void loadPagePluginClasses()): org.apache.commons.lang.StringUtils:stripAll(...)@154 != null
    //#presumption(void loadPagePluginClasses()): plugins.length@154 <= 4_294_967_295
    //#unanalyzed(void loadPagePluginClasses()): Effects-of-calling:java.lang.Class:getInterfaces
    //#unanalyzed(void loadPagePluginClasses()): Effects-of-calling:java.lang.Object:equals
    //#unanalyzed(void loadPagePluginClasses()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void loadPagePluginClasses()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void loadPagePluginClasses()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void loadPagePluginClasses()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void loadPagePluginClasses()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void loadPagePluginClasses()): Effects-of-calling:java.util.Properties:getProperty
    //#test_vector(void loadPagePluginClasses()): org.apache.commons.logging.Log:isDebugEnabled(...)@152: {0}, {1}
    //#test_vector(void loadPagePluginClasses()): org.apache.commons.logging.Log:isDebugEnabled(...)@157: {0}, {1}
    //#test_vector(void loadPagePluginClasses()): plugins.length@154: {1..4_294_967_295}, {0}
        
        String pluginStr = WebloggerConfig.getProperty("plugins.page");
        if (log.isDebugEnabled()) log.debug(pluginStr);
    //#PluginManagerImpl.java:152: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#PluginManagerImpl.java:152: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        if (pluginStr != null) {
            String[] plugins = StringUtils.stripAll(
    //#PluginManagerImpl.java:154: Warning: method not available
    //#    -- call on String[] org.apache.commons.lang.StringUtils:split(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: String[] org.apache.commons.lang.StringUtils:split(String, String)
    //#PluginManagerImpl.java:154: Warning: method not available
    //#    -- call on String[] org.apache.commons.lang.StringUtils:stripAll(String[])
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: String[] org.apache.commons.lang.StringUtils:stripAll(String[])
                    StringUtils.split(pluginStr, ",") );
            for (int i=0; i<plugins.length; i++) {
                if (log.isDebugEnabled()) log.debug("try " + plugins[i]);
    //#PluginManagerImpl.java:157: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#PluginManagerImpl.java:157: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    basic block: bb_7
    //#    assertion: init'ed(plugins[i])
    //#    VN: plugins[i]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:157: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                try {
                    Class pluginClass = Class.forName(plugins[i]);
    //#PluginManagerImpl.java:159: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    basic block: bb_9
    //#    assertion: init'ed(plugins[i])
    //#    VN: plugins[i]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
                    if (isPagePlugin(pluginClass)) {
                        WeblogEntryPlugin plugin = (WeblogEntryPlugin)pluginClass.newInstance();
                        mPagePlugins.put(plugin.getName(), pluginClass);
    //#PluginManagerImpl.java:162: Warning: call too complex - analysis skipped
    //#    -- call on String getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: String getName()
                    } else {
                        log.warn(pluginClass + " is not a PagePlugin");
    //#PluginManagerImpl.java:164: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
                    }
                } catch (ClassNotFoundException e) {
                    log.error("ClassNotFoundException for " + plugins[i]);
    //#PluginManagerImpl.java:167: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    basic block: bb_13
    //#    assertion: init'ed(plugins[i])
    //#    VN: plugins[i]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:167: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
                } catch (InstantiationException e) {
                    log.error("InstantiationException for " + plugins[i]);
    //#PluginManagerImpl.java:169: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    basic block: bb_14
    //#    assertion: init'ed(plugins[i])
    //#    VN: plugins[i]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:169: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
                } catch (IllegalAccessException e) {
                    log.error("IllegalAccessException for " + plugins[i]);
    //#PluginManagerImpl.java:171: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    basic block: bb_15
    //#    assertion: init'ed(plugins[i])
    //#    VN: plugins[i]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:171: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadPagePluginClasses()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
                }
            }
        }
    }
    //#PluginManagerImpl.java:175: end of method: void org.apache.roller.weblogger.business.plugins.PluginManagerImpl.loadPagePluginClasses()
    
    
    /**
     * Initialize all comment plugins defined in weblogger config.
     */
    private void loadCommentPlugins() {
        
        log.debug("Initializing comment plugins");
    //#PluginManagerImpl.java:183: method: void org.apache.roller.weblogger.business.plugins.PluginManagerImpl.loadCommentPlugins()
    //#PluginManagerImpl.java:183: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void loadCommentPlugins()): "="._tainted
    //#input(void loadCommentPlugins()): "ClassCastException for "._tainted
    //#input(void loadCommentPlugins()): "ClassNotFoundException for "._tainted
    //#input(void loadCommentPlugins()): "Configured comment plugin: "._tainted
    //#input(void loadCommentPlugins()): "Fetching property ["._tainted
    //#input(void loadCommentPlugins()): "IllegalAccessException for "._tainted
    //#input(void loadCommentPlugins()): "InstantiationException for "._tainted
    //#input(void loadCommentPlugins()): "]"._tainted
    //#input(void loadCommentPlugins()): "comment.formatter.classnames"._tainted
    //#input(void loadCommentPlugins()): "trying "._tainted
    //#input(void loadCommentPlugins()): log
    //#input(void loadCommentPlugins()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin]
    //#input(void loadCommentPlugins()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin]
    //#input(void loadCommentPlugins()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin]
    //#input(void loadCommentPlugins()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin]
    //#input(void loadCommentPlugins()): org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin.__Descendant_Table[others]
    //#input(void loadCommentPlugins()): org/apache/roller/weblogger/config/WebloggerConfig.config
    //#input(void loadCommentPlugins()): org/apache/roller/weblogger/config/WebloggerConfig.log
    //#input(void loadCommentPlugins()): this
    //#input(void loadCommentPlugins()): this.commentPlugins
    //#pre[1] (void loadCommentPlugins()): log != null
    //#pre[2] (void loadCommentPlugins()): org/apache/roller/weblogger/config/WebloggerConfig.config != null
    //#pre[3] (void loadCommentPlugins()): org/apache/roller/weblogger/config/WebloggerConfig.log != null
    //#pre[5] (void loadCommentPlugins()): (soft) this.commentPlugins != null
    //#presumption(void loadCommentPlugins()): java.lang.Class:forName(...)@192 != null
    //#presumption(void loadCommentPlugins()): java.lang.Class:newInstance(...).__Tag@193 in {org/apache/roller/weblogger/business/plugins/comment/AutoformatPlugin, org/apache/roller/weblogger/business/plugins/comment/HTMLSubsetPlugin, org/apache/roller/weblogger/business/plugins/comment/LinkMarkupPlugin, org/apache/roller/weblogger/business/plugins/comment/WeblogEntryCommentPlugin}
    //#presumption(void loadCommentPlugins()): org.apache.commons.lang.StringUtils:stripAll(...)@187 != null
    //#presumption(void loadCommentPlugins()): plugins.length@187 <= 4_294_967_295
    //#unanalyzed(void loadCommentPlugins()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void loadCommentPlugins()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void loadCommentPlugins()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void loadCommentPlugins()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void loadCommentPlugins()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void loadCommentPlugins()): Effects-of-calling:java.util.Properties:getProperty
        
        String pluginStr = WebloggerConfig.getProperty("comment.formatter.classnames");
        if (pluginStr != null) {
            String[] plugins = StringUtils.stripAll(StringUtils.split(pluginStr, ","));
    //#PluginManagerImpl.java:187: Warning: method not available
    //#    -- call on String[] org.apache.commons.lang.StringUtils:split(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    unanalyzed callee: String[] org.apache.commons.lang.StringUtils:split(String, String)
    //#PluginManagerImpl.java:187: Warning: method not available
    //#    -- call on String[] org.apache.commons.lang.StringUtils:stripAll(String[])
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    unanalyzed callee: String[] org.apache.commons.lang.StringUtils:stripAll(String[])
            for (int i=0; i < plugins.length; i++) {
                log.debug("trying " + plugins[i]);
    //#PluginManagerImpl.java:189: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    basic block: bb_4
    //#    assertion: init'ed(plugins[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:189: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                
                try {
                    Class pluginClass = Class.forName(plugins[i]);
    //#PluginManagerImpl.java:192: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    basic block: bb_5
    //#    assertion: init'ed(plugins[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
                    WeblogEntryCommentPlugin plugin = 
                            (WeblogEntryCommentPlugin) pluginClass.newInstance();
                    
                    // make sure and maintain ordering
                    commentPlugins.add(i, plugin);
                    
                    log.debug("Configured comment plugin: "+plugins[i]);
    //#PluginManagerImpl.java:199: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    basic block: bb_12
    //#    assertion: init'ed(plugins[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:199: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    
                } catch (ClassCastException e) {
                    log.error("ClassCastException for " + plugins[i]);
    //#PluginManagerImpl.java:202: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    basic block: bb_6
    //#    assertion: init'ed(plugins[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:202: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
                } catch (ClassNotFoundException e) {
                    log.error("ClassNotFoundException for " + plugins[i]);
    //#PluginManagerImpl.java:204: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    basic block: bb_7
    //#    assertion: init'ed(plugins[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:204: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
                } catch (InstantiationException e) {
                    log.error("InstantiationException for " + plugins[i]);
    //#PluginManagerImpl.java:206: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    basic block: bb_8
    //#    assertion: init'ed(plugins[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:206: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
                } catch (IllegalAccessException e) {
                    log.error("IllegalAccessException for " + plugins[i]);
    //#PluginManagerImpl.java:208: ?use of default init
    //#    init'ed(plugins[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    basic block: bb_9
    //#    assertion: init'ed(plugins[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:208: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: void loadCommentPlugins()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
                }
            }
        }
        
    }
    //#PluginManagerImpl.java:213: end of method: void org.apache.roller.weblogger.business.plugins.PluginManagerImpl.loadCommentPlugins()
    
    
    private static boolean isPagePlugin(Class pluginClass) {
        Class[] interfaces = pluginClass.getInterfaces();
    //#PluginManagerImpl.java:217: method: bool org.apache.roller.weblogger.business.plugins.PluginManagerImpl.isPagePlugin(Class)
    //#input(bool isPagePlugin(Class)): pluginClass
    //#output(bool isPagePlugin(Class)): return_value
    //#pre[1] (bool isPagePlugin(Class)): pluginClass != null
    //#presumption(bool isPagePlugin(Class)): interfaces.length@217 <= 4_294_967_295
    //#presumption(bool isPagePlugin(Class)): java.lang.Class:getInterfaces(...)@217 != null
    //#post(bool isPagePlugin(Class)): init'ed(return_value)
    //#test_vector(bool isPagePlugin(Class)): java.lang.Object:equals(...)@219: {0}, {1}
        for (int i=0; i<interfaces.length; i++) {
            if (interfaces[i].equals(WeblogEntryPlugin.class)) return true;
    //#PluginManagerImpl.java:219: ?use of default init
    //#    init'ed(interfaces[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: bool isPagePlugin(Class)
    //#    basic block: bb_3
    //#    assertion: init'ed(interfaces[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#PluginManagerImpl.java:219: ?null dereference
    //#    not_init'ed(interfaces[i])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
    //#    method: bool isPagePlugin(Class)
    //#    basic block: bb_3
    //#    assertion: not_init'ed(interfaces[i])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
        }
        return false;
    //#PluginManagerImpl.java:221: end of method: bool org.apache.roller.weblogger.business.plugins.PluginManagerImpl.isPagePlugin(Class)
    }
    
    
    public void release() {
        // no op
    }
    //#PluginManagerImpl.java:227: method: void org.apache.roller.weblogger.business.plugins.PluginManagerImpl.release()
    //#PluginManagerImpl.java:227: end of method: void org.apache.roller.weblogger.business.plugins.PluginManagerImpl.release()
    
}
    //#PluginManagerImpl.java:: end of class: org.apache.roller.weblogger.business.plugins.PluginManagerImpl
