//# 3 errors, 289 messages
//#
/*
    //#AcronymsPlugin.java:1:1: class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
 * 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.entry;

import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.UserManager;
import org.apache.roller.weblogger.business.plugins.entry.WeblogEntryPlugin;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.WeblogTemplate;
import org.apache.roller.weblogger.pojos.Weblog;


/**
 * Adds full text to pre-defined acronyms.
 *
 * Example: HTML would become &lt;acronym title="Hyper Text Markup Language"&gt;HTML&lt;/acronym&gt;
 *
 * @author <a href="mailto:molen@mail.com">Jaap van der Molen</a>
 * @version $Revision: 1.3 $
 */
public class AcronymsPlugin implements WeblogEntryPlugin {
    
    private static final Log mLogger = LogFactory.getLog(AcronymsPlugin.class);
    //#AcronymsPlugin.java:48: method: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init
    //#AcronymsPlugin.java:48: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin]
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.getDescription()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.getName()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.loadAcronyms(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/Properties;
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.matchAcronyms(Ljava/lang/String;[Ljava/util/regex/Pattern;[Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.parseAcronymPage(Lorg/apache/roller/weblogger/pojos/WeblogTemplate;Ljava/util/Properties;)Ljava/util/Properties;
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): mLogger
    //#output(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin]
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): org/apache/roller/weblogger/business/plugins/entry/WeblogEntryPlugin.__Descendant_Table[org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.getDescription()Ljava/lang/String; == &getDescription
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.getName()Ljava/lang/String; == &getName
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.init(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &init
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.loadAcronyms(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/Properties; == &loadAcronyms
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.matchAcronyms(Ljava/lang/String;[Ljava/util/regex/Pattern;[Ljava/lang/String;)Ljava/lang/String; == &matchAcronyms
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.parseAcronymPage(Lorg/apache/roller/weblogger/pojos/WeblogTemplate;Ljava/util/Properties;)Ljava/util/Properties; == &parseAcronymPage
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): __Dispatch_Table.render(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/lang/String; == &render
    //#post(org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init): init'ed(mLogger)
    //#AcronymsPlugin.java:48: end of method: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin__static_init
    
    protected String name = "Acronyms";
    protected String description = "Expands acronyms defined in _acronym page. " +
            "Example: definition 'HTML=Hyper Text Markup Language' " +
            "becomes &lt;acronym title='Hyper Text Markup Language'&gt;HTML&lt;/acronym&gt;. " +
            "You must create an " +
            "<a href='page.do?method=editPages&rmik=tabbedmenu.website.pages'>" +
            "_acronym page</a> to use Acronyms.";
    
    
    public AcronymsPlugin() {
        super();
    //#AcronymsPlugin.java:60: method: void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()
    //#input(void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()): mLogger
    //#input(void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()): this
    //#output(void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()): this.description
    //#output(void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()): this.name
    //#presumption(void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()): org.apache.commons.logging.LogFactory:getLog(...)@48 != null
    //#post(void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()): this.description == &"Expands acronyms defined in _acronym page. Example: definition 'HTML=H ... ages&amp;rmik=tabbedmenu.website.pages'>_acronym page<.a> to use Acronyms."
    //#post(void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()): this.name == &"Acronyms"
        mLogger.debug("AcronymsPlugin instantiated.");
    //#AcronymsPlugin.java:61: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    }
    //#AcronymsPlugin.java:62: end of method: void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin()
    
    
    public String getName() {
        return name;
    //#AcronymsPlugin.java:66: method: String org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.getName()
    //#input(String getName()): this
    //#input(String getName()): this.name
    //#output(String getName()): return_value
    //#pre[2] (String getName()): init'ed(this.name)
    //#post(String getName()): return_value == this.name
    //#post(String getName()): init'ed(return_value)
    //#AcronymsPlugin.java:66: end of method: String org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.getName()
    }
    
    
    public String getDescription() {
        return StringEscapeUtils.escapeJavaScript(description);
    //#AcronymsPlugin.java:71: method: String org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.getDescription()
    //#AcronymsPlugin.java:71: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringEscapeUtils:escapeJavaScript(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String getDescription()
    //#    unanalyzed callee: String org.apache.commons.lang.StringEscapeUtils:escapeJavaScript(String)
    //#input(String getDescription()): this
    //#input(String getDescription()): this.description
    //#output(String getDescription()): return_value
    //#pre[2] (String getDescription()): init'ed(this.description)
    //#post(String getDescription()): init'ed(return_value)
    //#AcronymsPlugin.java:71: end of method: String org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.getDescription()
    }
    
    
    public void init(Weblog website) throws WebloggerException {}
    //#AcronymsPlugin.java:75: method: void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.init(Weblog)
    //#AcronymsPlugin.java:75: end of method: void org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.init(Weblog)
    
    
    public String render(WeblogEntry entry, String str) {
        String text = str;
    //#AcronymsPlugin.java:79: method: String org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.render(WeblogEntry, String)
    //#AcronymsPlugin.java:79: Warning: suspicious precondition
    //#    the precondition for org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(String render(WeblogEntry, String)): "">"._tainted
    //#input(String render(WeblogEntry, String)): "'"._tainted
    //#input(String render(WeblogEntry, String)): ")"._tainted
    //#input(String render(WeblogEntry, String)): "<.acronym>"._tainted
    //#input(String render(WeblogEntry, String)): "<acronym title=""._tainted
    //#input(String render(WeblogEntry, String)): "\b"._tainted
    //#input(String render(WeblogEntry, String)): "acronyms.size()="._tainted
    //#input(String render(WeblogEntry, String)): "match '"._tainted
    //#input(String render(WeblogEntry, String)): "matchAcronyms("._tainted
    //#input(String render(WeblogEntry, String)): "parsing _acronyms template: &#10;'"._tainted
    //#input(String render(WeblogEntry, String)): "render(entry = "._tainted
    //#input(String render(WeblogEntry, String)): entry
    //#input(String render(WeblogEntry, String)): mLogger
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.getPageByName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.__Tag
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.__Tag
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.threadLocalEntityManager
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getPageByName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(String render(WeblogEntry, String)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(String render(WeblogEntry, String)): str
    //#input(String render(WeblogEntry, String)): str._tainted
    //#input(String render(WeblogEntry, String)): this
    //#output(String render(WeblogEntry, String)): return_value
    //#pre[1] (String render(WeblogEntry, String)): entry != null
    //#pre[2] (String render(WeblogEntry, String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (String render(WeblogEntry, String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[4] (String render(WeblogEntry, String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#presumption(String render(WeblogEntry, String)): java.util.Properties:keySet(...)@100 != null
    //#presumption(String render(WeblogEntry, String)): java.util.Properties:size(...)@97 >= 0
    //#presumption(String render(WeblogEntry, String)): java.util.Properties:size(...)@98 >= 1
    //#presumption(String render(WeblogEntry, String)): java.util.Properties:size(...)@98 - java.util.Properties:size(...)@97 in 0..4_294_967_295
    //#presumption(String render(WeblogEntry, String)): java.util.regex.Pattern:compile(...)@102 init'ed
    //#presumption(String render(WeblogEntry, String)): org.apache.commons.logging.LogFactory:getLog(...)@48 != null
    //#presumption(String render(WeblogEntry, String)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@88 != null
    //#post(String render(WeblogEntry, String)): init'ed(return_value)
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogTemplate:getContents
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.util.Properties:setProperty
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.util.regex.Pattern:matcher
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.util.regex.Matcher:replaceAll
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.util.Properties
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:getWeblogger
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:getUserManager
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:getPageByName
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(String render(WeblogEntry, String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#test_vector(String render(WeblogEntry, String)): java.util.Iterator:hasNext(...)@100: {0}, {1}
    //#test_vector(String render(WeblogEntry, String)): java.util.Properties:size(...)@90: {-2_147_483_648..-1, 1..4_294_967_295}, {0}
    //#test_vector(String render(WeblogEntry, String)): java.util.Properties:size(...)@97: {1..4_294_967_295}, {0}
    //#test_vector(String render(WeblogEntry, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@81: {0}, {1}
        
        if (mLogger.isDebugEnabled()) {
    //#AcronymsPlugin.java:81: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
            mLogger.debug("render(entry = "+entry.getId()+")");
    //#AcronymsPlugin.java:82: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#AcronymsPlugin.java:82: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }
        
        /*
         * Get acronyms Properties.
         */
        Properties acronyms = loadAcronyms(entry.getWebsite());
    //#AcronymsPlugin.java:88: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
        mLogger.debug("acronyms.size()=" + acronyms.size());
    //#AcronymsPlugin.java:89: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        if (acronyms.size() == 0) {
            return text;
        }
        
        /*
         * Compile the user's acronyms into RegEx patterns.
         */
        Pattern[] acronymPatterns = new Pattern[acronyms.size()];
        String[] acronymTags = new String[acronyms.size()];
        int count = 0;
        for (Iterator iter = acronyms.keySet().iterator(); iter.hasNext();) {
            String acronym = (String) iter.next();
            acronymPatterns[count] = Pattern.compile("\\b" + acronym + "\\b");
    //#AcronymsPlugin.java:102: ?array index out of bounds
    //#    count < acronymPatterns.length
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    basic block: bb_7
    //#    assertion: count < acronymPatterns.length
    //#    VN: -(count - java.util.Properties:size(...)@97)
    //#    Expected: {1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad < Exp
            mLogger.debug("match '" + acronym + "'");
    //#AcronymsPlugin.java:103: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            acronymTags[count] =
                    "<acronym title=\""
                    + acronyms.getProperty(acronym)
                    + "\">"
                    + acronym
                    + "</acronym>";
            count++;
        }
        
        // if there are none, no work to do
        if (acronymPatterns == null || acronymPatterns.length == 0) {
    //#AcronymsPlugin.java:114: Warning: test always goes same way
    //#    test predetermined because acronymPatterns != null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    from bb: bb_8
    //#    live edge: bb_8-->bb_9
    //#    tested vn: 0
    //#    tested vn values: {0}
            return text;
        }
        
        return matchAcronyms(text, acronymPatterns, acronymTags);
    //#AcronymsPlugin.java:118: ?precondition failure
    //#    org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin.matchAcronyms: (soft) acronymPatterns[0..4_294_967_295] != null
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String render(WeblogEntry, String)
    //#    basic block: bb_11
    //#    assertion: (soft) acronymPatterns[0..4_294_967_295] != null
    //#    callee: String org/apache/roller/weblogger/business/plugins/entry/AcronymsPlugin.matchAcronyms(String, Pattern[], String[])
    //#    callee assertion: (soft) acronymPatterns[0..4_294_967_295] != null
    //#    callee file: AcronymsPlugin.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 154
    //#    VN: acronymPatterns[0..4_294_967_295]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad  Soft  Uncertain
    //#AcronymsPlugin.java:118: end of method: String org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.render(WeblogEntry, String)
    }
    
    
    /**
     * Look for any _acronyms Page and parse it into Properties.
     * @param website
     * @return
     * @throws WebloggerException
     */
    private Properties loadAcronyms(Weblog website) {
        Properties acronyms = new Properties();
    //#AcronymsPlugin.java:129: method: Properties org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.loadAcronyms(Weblog)
    //#AcronymsPlugin.java:129: Warning: suspicious precondition
    //#    the precondition for org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties loadAcronyms(Weblog)
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#input(Properties loadAcronyms(Weblog)): "'"._tainted
    //#input(Properties loadAcronyms(Weblog)): "parsing _acronyms template: &#10;'"._tainted
    //#input(Properties loadAcronyms(Weblog)): mLogger
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.getPageByName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.__Tag
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.__Tag
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.emf
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.threadLocalEntityManager
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getPageByName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(Properties loadAcronyms(Weblog)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(Properties loadAcronyms(Weblog)): this
    //#input(Properties loadAcronyms(Weblog)): website
    //#output(Properties loadAcronyms(Weblog)): new Properties(loadAcronyms#1) num objects
    //#output(Properties loadAcronyms(Weblog)): return_value
    //#new obj(Properties loadAcronyms(Weblog)): new Properties(loadAcronyms#1)
    //#pre[1] (Properties loadAcronyms(Weblog)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[2] (Properties loadAcronyms(Weblog)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[3] (Properties loadAcronyms(Weblog)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[5] (Properties loadAcronyms(Weblog)): (soft) website != null
    //#presumption(Properties loadAcronyms(Weblog)): getWeblogger(...).__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#presumption(Properties loadAcronyms(Weblog)): getWeblogger(...).userManager != null
    //#presumption(Properties loadAcronyms(Weblog)): org.apache.commons.logging.LogFactory:getLog(...)@48 != null
    //#presumption(Properties loadAcronyms(Weblog)): userMgr.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#presumption(Properties loadAcronyms(Weblog)): userMgr.strategy != null
    //#presumption(Properties loadAcronyms(Weblog)): userMgr.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#presumption(Properties loadAcronyms(Weblog)): userMgr.strategy.emf != null
    //#presumption(Properties loadAcronyms(Weblog)): userMgr.strategy.threadLocalEntityManager != null
    //#post(Properties loadAcronyms(Weblog)): return_value == &new Properties(loadAcronyms#1)
    //#post(Properties loadAcronyms(Weblog)): new Properties(loadAcronyms#1) num objects == 1
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogTemplate:getContents
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.util.Properties:setProperty
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:getWeblogger
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(Properties loadAcronyms(Weblog)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
        try {
            UserManager userMgr = WebloggerFactory.getWeblogger().getUserManager();
            WeblogTemplate acronymsPage = userMgr.getPageByName(
                    website, "_acronyms");
            if (acronymsPage != null) {
                acronyms = parseAcronymPage(acronymsPage, acronyms);
            }
        } catch (WebloggerException e) {
            // not much we can do about it
            mLogger.warn(e);
    //#AcronymsPlugin.java:139: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties loadAcronyms(Weblog)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
        }
        return acronyms;
    //#AcronymsPlugin.java:141: end of method: Properties org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.loadAcronyms(Weblog)
    }
    
    
    /**
     * Iterates through the acronym properties and replaces matching
     * acronyms in the entry text with acronym html-tags.
     *
     * @param text entry text
     * @param acronyms user provided set of acronyms
     * @return entry text with acronym explanations
     */
    private String matchAcronyms(String text, Pattern[] acronymPatterns, String[] acronymTags) {
        if (mLogger.isDebugEnabled()) {
    //#AcronymsPlugin.java:154: method: String org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.matchAcronyms(String, Pattern[], String[])
    //#AcronymsPlugin.java:154: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String matchAcronyms(String, Pattern[], String[])
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#input(String matchAcronyms(String, Pattern[], String[])): ")"._tainted
    //#input(String matchAcronyms(String, Pattern[], String[])): "matchAcronyms("._tainted
    //#input(String matchAcronyms(String, Pattern[], String[])): acronymPatterns
    //#input(String matchAcronyms(String, Pattern[], String[])): acronymPatterns.length
    //#input(String matchAcronyms(String, Pattern[], String[])): acronymPatterns[0..4_294_967_295]
    //#input(String matchAcronyms(String, Pattern[], String[])): acronymTags
    //#input(String matchAcronyms(String, Pattern[], String[])): acronymTags.length
    //#input(String matchAcronyms(String, Pattern[], String[])): acronymTags[0..4_294_967_295]
    //#input(String matchAcronyms(String, Pattern[], String[])): mLogger
    //#input(String matchAcronyms(String, Pattern[], String[])): text
    //#input(String matchAcronyms(String, Pattern[], String[])): text._tainted
    //#output(String matchAcronyms(String, Pattern[], String[])): return_value
    //#pre[1] (String matchAcronyms(String, Pattern[], String[])): acronymPatterns != null
    //#pre[2] (String matchAcronyms(String, Pattern[], String[])): acronymPatterns.length <= 4_294_967_295
    //#pre[3] (String matchAcronyms(String, Pattern[], String[])): (soft) acronymPatterns[0..4_294_967_295] != null
    //#pre[4] (String matchAcronyms(String, Pattern[], String[])): (soft) acronymTags != null
    //#pre[6] (String matchAcronyms(String, Pattern[], String[])): (soft) acronymPatterns.length <= acronymTags.length
    //#pre[7] (String matchAcronyms(String, Pattern[], String[])): (soft) init'ed(acronymTags[0..4_294_967_295])
    //#presumption(String matchAcronyms(String, Pattern[], String[])): java.util.regex.Pattern:matcher(...)@160 != null
    //#presumption(String matchAcronyms(String, Pattern[], String[])): org.apache.commons.logging.LogFactory:getLog(...)@48 != null
    //#post(String matchAcronyms(String, Pattern[], String[])): init'ed(return_value)
    //#test_vector(String matchAcronyms(String, Pattern[], String[])): org.apache.commons.logging.Log:isDebugEnabled(...)@154: {0}, {1}
            mLogger.debug("matchAcronyms("+text+")");
    //#AcronymsPlugin.java:155: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String matchAcronyms(String, Pattern[], String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }
        
        Matcher matcher = null;
    //#AcronymsPlugin.java:158: Warning: unused assignment
    //#    unused assignment into matcher
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: String matchAcronyms(String, Pattern[], String[])
    //#    Attribs:  Uncertain
        for (int i=0; i<acronymPatterns.length; i++) {
            matcher = acronymPatterns[i].matcher(text);
            text = matcher.replaceAll(acronymTags[i]);
        }
        return text;
    //#AcronymsPlugin.java:163: end of method: String org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.matchAcronyms(String, Pattern[], String[])
    }
    
    /**
     * Parse the Template of the provided WeblogTemplate and turns it
     * into a <code>Properties</code> collection.
     *
     * @param acronymPage
     * @return acronym properties (key = acronym, value= full text), empty if Template is empty
     */
    private Properties parseAcronymPage(WeblogTemplate acronymPage, Properties acronyms) {
        String rawAcronyms = acronymPage.getContents();
    //#AcronymsPlugin.java:174: method: Properties org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.parseAcronymPage(WeblogTemplate, Properties)
    //#AcronymsPlugin.java:174: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogTemplate:getContents()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties parseAcronymPage(WeblogTemplate, Properties)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogTemplate:getContents()
    //#input(Properties parseAcronymPage(WeblogTemplate, Properties)): "'"._tainted
    //#input(Properties parseAcronymPage(WeblogTemplate, Properties)): "parsing _acronyms template: &#10;'"._tainted
    //#input(Properties parseAcronymPage(WeblogTemplate, Properties)): acronymPage
    //#input(Properties parseAcronymPage(WeblogTemplate, Properties)): acronyms
    //#input(Properties parseAcronymPage(WeblogTemplate, Properties)): mLogger
    //#output(Properties parseAcronymPage(WeblogTemplate, Properties)): return_value
    //#pre[1] (Properties parseAcronymPage(WeblogTemplate, Properties)): acronymPage != null
    //#presumption(Properties parseAcronymPage(WeblogTemplate, Properties)): org.apache.commons.logging.LogFactory:getLog(...)@48 != null
    //#presumption(Properties parseAcronymPage(WeblogTemplate, Properties)): org.apache.roller.weblogger.pojos.WeblogTemplate:getContents(...)@174 != null
    //#post(Properties parseAcronymPage(WeblogTemplate, Properties)): return_value == acronyms
    //#post(Properties parseAcronymPage(WeblogTemplate, Properties)): init'ed(return_value)
    //#test_vector(Properties parseAcronymPage(WeblogTemplate, Properties)): org.apache.commons.logging.Log:isDebugEnabled(...)@176: {0}, {1}
        
        if (mLogger.isDebugEnabled()) {
    //#AcronymsPlugin.java:176: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties parseAcronymPage(WeblogTemplate, Properties)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
            mLogger.debug("parsing _acronyms template: \n'"+rawAcronyms+"'");
    //#AcronymsPlugin.java:177: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties parseAcronymPage(WeblogTemplate, Properties)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }
        
        String regex = "\n"; // end of line
        String[] lines = rawAcronyms.split(regex);
        
        if (lines != null) {
    //#AcronymsPlugin.java:183: Warning: test always goes same way
    //#    test predetermined because lines != null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties parseAcronymPage(WeblogTemplate, Properties)
    //#    from bb: bb_3
    //#    live edge: bb_3-->bb_4
    //#    tested vn: 0
    //#    tested vn values: {0}
            for (int i = 0; i < lines.length; i++) {
    //#AcronymsPlugin.java:184: ?use of default init
    //#    init'ed(lines.length)
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties parseAcronymPage(WeblogTemplate, Properties)
    //#    basic block: bb_5
    //#    assertion: init'ed(lines.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#AcronymsPlugin.java:184: Warning: test always goes same way
    //#    test predetermined because i == lines.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties parseAcronymPage(WeblogTemplate, Properties)
    //#    from bb: bb_5
    //#    live edge: bb_5-->bb_9
    //#    tested vn: i - undefined
    //#    tested vn values: {0}
    //#AcronymsPlugin.java:184: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties parseAcronymPage(WeblogTemplate, Properties)
    //#    dead bb: bb_8
                int index = lines[i].indexOf('=');
    //#AcronymsPlugin.java:185: Warning: dead code
    //#    dead code here because i == lines.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties parseAcronymPage(WeblogTemplate, Properties)
    //#    dead bb: bb_6
                if (index > 0) {
                    String key = lines[i].substring(0, index).trim();
    //#AcronymsPlugin.java:187: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
    //#    method: Properties parseAcronymPage(WeblogTemplate, Properties)
    //#    dead bb: bb_7
                    String value =
                            lines[i].substring(index + 1, lines[i].length()).trim();
                    acronyms.setProperty(key, value);
                }
            }
        }
        
        return acronyms;
    //#AcronymsPlugin.java:195: end of method: Properties org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin.parseAcronymPage(WeblogTemplate, Properties)
    }
    
}
    //#AcronymsPlugin.java:: end of class: org.apache.roller.weblogger.business.plugins.entry.AcronymsPlugin
