//# 0 errors, 647 messages
//#
/*
    //#AbstractURLStrategy.java:1:1: class: org.apache.roller.weblogger.business.AbstractURLStrategy
    //#AbstractURLStrategy.java:1:1: method: org.apache.roller.weblogger.business.AbstractURLStrategy.org.apache.roller.weblogger.business.AbstractURLStrategy__static_init
 * 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;

import java.util.HashMap;
import java.util.Map;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.util.URLUtilities;


/**
 * An abstract Weblogger URLStrategy which implements some of the url methods
 * which are not likely to change for any alternate url strategies.
 */
public abstract class AbstractURLStrategy implements URLStrategy {
    
    public AbstractURLStrategy() {}
    //#AbstractURLStrategy.java:33: method: void org.apache.roller.weblogger.business.AbstractURLStrategy.org.apache.roller.weblogger.business.AbstractURLStrategy()
    //#AbstractURLStrategy.java:33: end of method: void org.apache.roller.weblogger.business.AbstractURLStrategy.org.apache.roller.weblogger.business.AbstractURLStrategy()
    
    
    /**
     * Url to login page.
     */
    public String getLoginURL(boolean absolute) {
        
        StringBuffer url = new StringBuffer();
    //#AbstractURLStrategy.java:41: method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getLoginURL(bool)
    //#AbstractURLStrategy.java:41: 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.AbstractURLStrategy
    //#    method: String getLoginURL(bool)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(String getLoginURL(bool)): ".roller-ui.login-redirect.rol"._tainted
    //#input(String getLoginURL(bool)): "="._tainted
    //#input(String getLoginURL(bool)): "Trouble accessing property: "._tainted
    //#input(String getLoginURL(bool)): "]"._tainted
    //#input(String getLoginURL(bool)): "fetched property ["._tainted
    //#input(String getLoginURL(bool)): "site.absoluteurl"._tainted
    //#input(String getLoginURL(bool)): absolute
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getLoginURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#output(String getLoginURL(bool)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getLoginURL(bool)): return_value
    //#new obj(String getLoginURL(bool)): java.lang.StringBuffer:toString(...)
    //#pre[2] (String getLoginURL(bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (String getLoginURL(bool)): (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 getLoginURL(bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[12] (String getLoginURL(bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[14] (String getLoginURL(bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[15] (String getLoginURL(bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getLoginURL(bool)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getLoginURL(bool)): return_value == &java.lang.StringBuffer:toString(...)
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getLoginURL(bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getLoginURL(bool)): absolute: {0}, {1}
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append("/roller-ui/login-redirect.rol");
        
        return url.toString();
    //#AbstractURLStrategy.java:51: end of method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getLoginURL(bool)
    }
    
    
    /**
     * Url to logout page.
     */
    public String getLogoutURL(boolean absolute) {
        
        StringBuffer url = new StringBuffer();
    //#AbstractURLStrategy.java:60: method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getLogoutURL(bool)
    //#AbstractURLStrategy.java:60: 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.AbstractURLStrategy
    //#    method: String getLogoutURL(bool)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(String getLogoutURL(bool)): ".roller-ui.logout.rol"._tainted
    //#input(String getLogoutURL(bool)): "="._tainted
    //#input(String getLogoutURL(bool)): "Trouble accessing property: "._tainted
    //#input(String getLogoutURL(bool)): "]"._tainted
    //#input(String getLogoutURL(bool)): "fetched property ["._tainted
    //#input(String getLogoutURL(bool)): "site.absoluteurl"._tainted
    //#input(String getLogoutURL(bool)): absolute
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getLogoutURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#output(String getLogoutURL(bool)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getLogoutURL(bool)): return_value
    //#new obj(String getLogoutURL(bool)): java.lang.StringBuffer:toString(...)
    //#pre[2] (String getLogoutURL(bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (String getLogoutURL(bool)): (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 getLogoutURL(bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[12] (String getLogoutURL(bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[14] (String getLogoutURL(bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[15] (String getLogoutURL(bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getLogoutURL(bool)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getLogoutURL(bool)): return_value == &java.lang.StringBuffer:toString(...)
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getLogoutURL(bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getLogoutURL(bool)): absolute: {0}, {1}
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append("/roller-ui/logout.rol");
        
        return url.toString();
    //#AbstractURLStrategy.java:70: end of method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getLogoutURL(bool)
    }
    
    
    /**
     * Get a url to a UI action in a given namespace, optionally specifying
     * a weblogHandle parameter if that is needed by the action.
     */
    public String getActionURL(String action,
                                            String namespace,
                                            String weblogHandle,
                                            Map<String, String> parameters,
                                            boolean absolute) {
        
        StringBuffer url = new StringBuffer();
    //#AbstractURLStrategy.java:84: method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getActionURL(String, String, String, Map, bool)
    //#AbstractURLStrategy.java:84: 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.AbstractURLStrategy
    //#    method: String getActionURL(String, String, String, Map, bool)
    //#    suspicious precondition index: [7]
    //#    Attribs:  Soft
    //#input(String getActionURL(String, String, String, Map, bool)): "."._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): ".rol"._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): "="._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): "Trouble accessing property: "._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): "]"._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): "fetched property ["._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): "site.absoluteurl"._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): absolute
    //#input(String getActionURL(String, String, String, Map, bool)): action
    //#input(String getActionURL(String, String, String, Map, bool)): action._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): namespace
    //#input(String getActionURL(String, String, String, Map, bool)): namespace._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getActionURL(String, String, String, Map, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getActionURL(String, String, String, Map, bool)): parameters
    //#input(String getActionURL(String, String, String, Map, bool)): weblogHandle
    //#output(String getActionURL(String, String, String, Map, bool)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getActionURL(String, String, String, Map, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getActionURL(String, String, String, Map, bool)): return_value
    //#new obj(String getActionURL(String, String, String, Map, bool)): java.lang.StringBuffer:toString(...)
    //#new obj(String getActionURL(String, String, String, Map, bool)): java.lang.StringBuilder:toString(...)
    //#pre[6] (String getActionURL(String, String, String, Map, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[7] (String getActionURL(String, String, String, Map, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[8] (String getActionURL(String, String, String, Map, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[16] (String getActionURL(String, String, String, Map, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[18] (String getActionURL(String, String, String, Map, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[19] (String getActionURL(String, String, String, Map, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getActionURL(String, String, String, Map, bool)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getActionURL(String, String, String, Map, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getActionURL(String, String, String, Map, bool)): return_value in Addr_Set{&java.lang.StringBuffer:toString(...),&java.lang.StringBuilder:toString(...)}
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getActionURL(String, String, String, Map, bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getActionURL(String, String, String, Map, bool)): absolute: {0}, {1}
    //#test_vector(String getActionURL(String, String, String, Map, bool)): parameters: Addr_Set{null}, Inverse{null}
    //#test_vector(String getActionURL(String, String, String, Map, bool)): weblogHandle: Addr_Set{null}, Inverse{null}
    //#test_vector(String getActionURL(String, String, String, Map, bool)): java.util.Map:isEmpty(...)@106: {1}, {0}
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append(namespace);
        url.append("/").append(action).append(".rol");
        
        // put weblog handle parameter, if necessary
        Map<String, String> params = new HashMap();
        if(weblogHandle != null) {
            params.put("weblog", weblogHandle);
        }
        
        // add custom parameters if they exist
        if(parameters != null) {
            params.putAll(parameters);
        }
        
        if(!params.isEmpty()) {
            return url.toString() + URLUtilities.getQueryString(params);
    //#AbstractURLStrategy.java:107: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.AbstractURLStrategy
    //#    method: String getActionURL(String, String, String, Map, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
        } else {
            return url.toString();
    //#AbstractURLStrategy.java:109: end of method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getActionURL(String, String, String, Map, bool)
        }
    }
    
    
    /**
     * Get a url to add a new weblog entry.
     */
    public String getEntryAddURL(String weblogHandle,
                                              boolean absolute) {
        
        StringBuffer url = new StringBuffer();
    //#AbstractURLStrategy.java:120: method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getEntryAddURL(String, bool)
    //#AbstractURLStrategy.java:120: 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.AbstractURLStrategy
    //#    method: String getEntryAddURL(String, bool)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(String getEntryAddURL(String, bool)): ".roller-ui.authoring.entryAdd.rol"._tainted
    //#input(String getEntryAddURL(String, bool)): "="._tainted
    //#input(String getEntryAddURL(String, bool)): "Trouble accessing property: "._tainted
    //#input(String getEntryAddURL(String, bool)): "]"._tainted
    //#input(String getEntryAddURL(String, bool)): "fetched property ["._tainted
    //#input(String getEntryAddURL(String, bool)): "site.absoluteurl"._tainted
    //#input(String getEntryAddURL(String, bool)): absolute
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getEntryAddURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getEntryAddURL(String, bool)): weblogHandle
    //#output(String getEntryAddURL(String, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getEntryAddURL(String, bool)): return_value
    //#new obj(String getEntryAddURL(String, bool)): java.lang.StringBuilder:toString(...)
    //#pre[2] (String getEntryAddURL(String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (String getEntryAddURL(String, bool)): (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 getEntryAddURL(String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[12] (String getEntryAddURL(String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[14] (String getEntryAddURL(String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[15] (String getEntryAddURL(String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getEntryAddURL(String, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getEntryAddURL(String, bool)): return_value == &java.lang.StringBuilder:toString(...)
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getEntryAddURL(String, bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getEntryAddURL(String, bool)): absolute: {0}, {1}
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append("/roller-ui/authoring/entryAdd.rol");
        
        Map params = new HashMap();
        params.put("weblog", weblogHandle);
        
        return url.toString() + URLUtilities.getQueryString(params);
    //#AbstractURLStrategy.java:133: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.AbstractURLStrategy
    //#    method: String getEntryAddURL(String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#AbstractURLStrategy.java:133: end of method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getEntryAddURL(String, bool)
    }
    
    
    /**
     * Get a url to edit a specific weblog entry.
     */
    public String getEntryEditURL(String weblogHandle,
                                               String entryId,
                                               boolean absolute) {
        
        StringBuffer url = new StringBuffer();
    //#AbstractURLStrategy.java:144: method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getEntryEditURL(String, String, bool)
    //#AbstractURLStrategy.java:144: 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.AbstractURLStrategy
    //#    method: String getEntryEditURL(String, String, bool)
    //#    suspicious precondition index: [4]
    //#    Attribs:  Soft
    //#input(String getEntryEditURL(String, String, bool)): ".roller-ui.authoring.entryEdit.rol"._tainted
    //#input(String getEntryEditURL(String, String, bool)): "="._tainted
    //#input(String getEntryEditURL(String, String, bool)): "Trouble accessing property: "._tainted
    //#input(String getEntryEditURL(String, String, bool)): "]"._tainted
    //#input(String getEntryEditURL(String, String, bool)): "fetched property ["._tainted
    //#input(String getEntryEditURL(String, String, bool)): "site.absoluteurl"._tainted
    //#input(String getEntryEditURL(String, String, bool)): absolute
    //#input(String getEntryEditURL(String, String, bool)): entryId
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getEntryEditURL(String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getEntryEditURL(String, String, bool)): weblogHandle
    //#output(String getEntryEditURL(String, String, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getEntryEditURL(String, String, bool)): return_value
    //#new obj(String getEntryEditURL(String, String, bool)): java.lang.StringBuilder:toString(...)
    //#pre[3] (String getEntryEditURL(String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[4] (String getEntryEditURL(String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[5] (String getEntryEditURL(String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[13] (String getEntryEditURL(String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[15] (String getEntryEditURL(String, String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[16] (String getEntryEditURL(String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getEntryEditURL(String, String, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getEntryEditURL(String, String, bool)): return_value == &java.lang.StringBuilder:toString(...)
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getEntryEditURL(String, String, bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getEntryEditURL(String, String, bool)): absolute: {0}, {1}
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append("/roller-ui/authoring/entryEdit.rol");
        
        Map params = new HashMap();
        params.put("weblog", weblogHandle);
        params.put("bean.id", entryId);
        
        return url.toString() + URLUtilities.getQueryString(params);
    //#AbstractURLStrategy.java:158: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.AbstractURLStrategy
    //#    method: String getEntryEditURL(String, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#AbstractURLStrategy.java:158: end of method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getEntryEditURL(String, String, bool)
    }
    
    
    /**
     * Get a url to weblog config page.
     */
    public String getWeblogConfigURL(String weblogHandle,
                                                  boolean absolute) {
        
        StringBuffer url = new StringBuffer();
    //#AbstractURLStrategy.java:168: method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getWeblogConfigURL(String, bool)
    //#AbstractURLStrategy.java:168: 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.AbstractURLStrategy
    //#    method: String getWeblogConfigURL(String, bool)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(String getWeblogConfigURL(String, bool)): ".roller-ui.authoring.weblogConfig.rol"._tainted
    //#input(String getWeblogConfigURL(String, bool)): "="._tainted
    //#input(String getWeblogConfigURL(String, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogConfigURL(String, bool)): "]"._tainted
    //#input(String getWeblogConfigURL(String, bool)): "fetched property ["._tainted
    //#input(String getWeblogConfigURL(String, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogConfigURL(String, bool)): absolute
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogConfigURL(String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogConfigURL(String, bool)): weblogHandle
    //#output(String getWeblogConfigURL(String, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogConfigURL(String, bool)): return_value
    //#new obj(String getWeblogConfigURL(String, bool)): java.lang.StringBuilder:toString(...)
    //#pre[2] (String getWeblogConfigURL(String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (String getWeblogConfigURL(String, bool)): (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 getWeblogConfigURL(String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[12] (String getWeblogConfigURL(String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[14] (String getWeblogConfigURL(String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[15] (String getWeblogConfigURL(String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getWeblogConfigURL(String, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogConfigURL(String, bool)): return_value == &java.lang.StringBuilder:toString(...)
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogConfigURL(String, bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getWeblogConfigURL(String, bool)): absolute: {0}, {1}
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append("/roller-ui/authoring/weblogConfig.rol");
        
        Map params = new HashMap();
        params.put("weblog", weblogHandle);
        
        return url.toString() + URLUtilities.getQueryString(params);
    //#AbstractURLStrategy.java:181: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.AbstractURLStrategy
    //#    method: String getWeblogConfigURL(String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#AbstractURLStrategy.java:181: end of method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getWeblogConfigURL(String, bool)
    }
    
    
    public String getXmlrpcURL(boolean absolute) {
        
        StringBuffer url = new StringBuffer();
    //#AbstractURLStrategy.java:187: method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getXmlrpcURL(bool)
    //#AbstractURLStrategy.java:187: 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.AbstractURLStrategy
    //#    method: String getXmlrpcURL(bool)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(String getXmlrpcURL(bool)): ".roller-services.xmlrpc"._tainted
    //#input(String getXmlrpcURL(bool)): "="._tainted
    //#input(String getXmlrpcURL(bool)): "Trouble accessing property: "._tainted
    //#input(String getXmlrpcURL(bool)): "]"._tainted
    //#input(String getXmlrpcURL(bool)): "fetched property ["._tainted
    //#input(String getXmlrpcURL(bool)): "site.absoluteurl"._tainted
    //#input(String getXmlrpcURL(bool)): absolute
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getXmlrpcURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#output(String getXmlrpcURL(bool)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getXmlrpcURL(bool)): return_value
    //#new obj(String getXmlrpcURL(bool)): java.lang.StringBuffer:toString(...)
    //#pre[2] (String getXmlrpcURL(bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (String getXmlrpcURL(bool)): (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 getXmlrpcURL(bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[12] (String getXmlrpcURL(bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[14] (String getXmlrpcURL(bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[15] (String getXmlrpcURL(bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getXmlrpcURL(bool)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getXmlrpcURL(bool)): return_value == &java.lang.StringBuffer:toString(...)
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getXmlrpcURL(bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getXmlrpcURL(bool)): absolute: {0}, {1}
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append("/roller-services/xmlrpc");
        
        return url.toString();
    //#AbstractURLStrategy.java:197: end of method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getXmlrpcURL(bool)
    }
    
    
    public String getAtomProtocolURL(boolean absolute) {
        
        StringBuffer url = new StringBuffer();
    //#AbstractURLStrategy.java:203: method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getAtomProtocolURL(bool)
    //#AbstractURLStrategy.java:203: 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.AbstractURLStrategy
    //#    method: String getAtomProtocolURL(bool)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(String getAtomProtocolURL(bool)): ".roller-services.app"._tainted
    //#input(String getAtomProtocolURL(bool)): "="._tainted
    //#input(String getAtomProtocolURL(bool)): "Trouble accessing property: "._tainted
    //#input(String getAtomProtocolURL(bool)): "]"._tainted
    //#input(String getAtomProtocolURL(bool)): "fetched property ["._tainted
    //#input(String getAtomProtocolURL(bool)): "site.absoluteurl"._tainted
    //#input(String getAtomProtocolURL(bool)): absolute
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getAtomProtocolURL(bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#output(String getAtomProtocolURL(bool)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getAtomProtocolURL(bool)): return_value
    //#new obj(String getAtomProtocolURL(bool)): java.lang.StringBuffer:toString(...)
    //#pre[2] (String getAtomProtocolURL(bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (String getAtomProtocolURL(bool)): (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 getAtomProtocolURL(bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[12] (String getAtomProtocolURL(bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[14] (String getAtomProtocolURL(bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[15] (String getAtomProtocolURL(bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getAtomProtocolURL(bool)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getAtomProtocolURL(bool)): return_value == &java.lang.StringBuffer:toString(...)
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getAtomProtocolURL(bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getAtomProtocolURL(bool)): absolute: {0}, {1}
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append("/roller-services/app");
        
        return url.toString();
    //#AbstractURLStrategy.java:213: end of method: String org.apache.roller.weblogger.business.AbstractURLStrategy.getAtomProtocolURL(bool)
    }
    
}
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Descendant_Table[org/apache/roller/weblogger/business/AbstractURLStrategy]
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getActionURL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getAtomProtocolURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getEntryAddURL(Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getEntryEditURL(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getLoginURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getLogoutURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getWeblogConfigURL(Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getXmlrpcURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): org/apache/roller/weblogger/business/URLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/AbstractURLStrategy]
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Descendant_Table[org/apache/roller/weblogger/business/AbstractURLStrategy] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): org/apache/roller/weblogger/business/URLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/AbstractURLStrategy] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getActionURL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Z)Ljava/lang/String; == &getActionURL
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getAtomProtocolURL(Z)Ljava/lang/String; == &getAtomProtocolURL
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getEntryAddURL(Ljava/lang/String;Z)Ljava/lang/String; == &getEntryAddURL
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getEntryEditURL(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; == &getEntryEditURL
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getLoginURL(Z)Ljava/lang/String; == &getLoginURL
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getLogoutURL(Z)Ljava/lang/String; == &getLogoutURL
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getWeblogConfigURL(Ljava/lang/String;Z)Ljava/lang/String; == &getWeblogConfigURL
    //#post(org.apache.roller.weblogger.business.AbstractURLStrategy__static_init): __Dispatch_Table.getXmlrpcURL(Z)Ljava/lang/String; == &getXmlrpcURL
    //#AbstractURLStrategy.java:: end of method: org.apache.roller.weblogger.business.AbstractURLStrategy.org.apache.roller.weblogger.business.AbstractURLStrategy__static_init
    //#AbstractURLStrategy.java:: end of class: org.apache.roller.weblogger.business.AbstractURLStrategy
