//# 0 errors, 1,202 messages
//#
/*
    //#MultiWeblogURLStrategy.java:1:1: class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#MultiWeblogURLStrategy.java:1:1: method: org.apache.roller.weblogger.business.MultiWeblogURLStrategy.org.apache.roller.weblogger.business.MultiWeblogURLStrategy__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.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.WeblogTheme;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.util.URLUtilities;


/**
 * A Weblogger URLStrategy which builds urls for a multi-weblog environment.
 */
public class MultiWeblogURLStrategy extends AbstractURLStrategy {
    
    public MultiWeblogURLStrategy() {}
    //#MultiWeblogURLStrategy.java:36: method: void org.apache.roller.weblogger.business.MultiWeblogURLStrategy.org.apache.roller.weblogger.business.MultiWeblogURLStrategy()
    //#input(void org.apache.roller.weblogger.business.MultiWeblogURLStrategy()): this
    //#MultiWeblogURLStrategy.java:36: end of method: void org.apache.roller.weblogger.business.MultiWeblogURLStrategy.org.apache.roller.weblogger.business.MultiWeblogURLStrategy()
    
    
    /**
     * @inheritDoc
     */
    public URLStrategy getPreviewURLStrategy(String previewTheme) {
        return new PreviewURLStrategy(previewTheme);
    //#MultiWeblogURLStrategy.java:43: method: URLStrategy org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getPreviewURLStrategy(String)
    //#input(URLStrategy getPreviewURLStrategy(String)): previewTheme
    //#output(URLStrategy getPreviewURLStrategy(String)): new PreviewURLStrategy(getPreviewURLStrategy#1) num objects
    //#output(URLStrategy getPreviewURLStrategy(String)): return_value.__Tag
    //#output(URLStrategy getPreviewURLStrategy(String)): return_value.previewTheme
    //#output(URLStrategy getPreviewURLStrategy(String)): return_value
    //#new obj(URLStrategy getPreviewURLStrategy(String)): new PreviewURLStrategy(getPreviewURLStrategy#1)
    //#post(URLStrategy getPreviewURLStrategy(String)): return_value == &new PreviewURLStrategy(getPreviewURLStrategy#1)
    //#post(URLStrategy getPreviewURLStrategy(String)): new PreviewURLStrategy(getPreviewURLStrategy#1) num objects == 1
    //#post(URLStrategy getPreviewURLStrategy(String)): return_value.__Tag == org/apache/roller/weblogger/business/PreviewURLStrategy
    //#post(URLStrategy getPreviewURLStrategy(String)): return_value.previewTheme == previewTheme
    //#post(URLStrategy getPreviewURLStrategy(String)): init'ed(return_value.previewTheme)
    //#unanalyzed(URLStrategy getPreviewURLStrategy(String)): Effects-of-calling:org.apache.roller.weblogger.business.AbstractURLStrategy
    //#unanalyzed(URLStrategy getPreviewURLStrategy(String)): Effects-of-calling:org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#MultiWeblogURLStrategy.java:43: end of method: URLStrategy org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getPreviewURLStrategy(String)
    }
    
    
    /**
     * Get root url for a given weblog.  Optionally for a certain locale.
     */
    public String getWeblogURL(Weblog weblog,
                                            String locale,
                                            boolean absolute) {
        
        if(weblog == null) {
    //#MultiWeblogURLStrategy.java:54: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogURL(Weblog, String, bool)
    //#MultiWeblogURLStrategy.java:54: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogURL(Weblog, String, bool)
    //#    suspicious precondition index: [9]
    //#    Attribs:  Soft
    //#input(String getWeblogURL(Weblog, String, bool)): "."._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): "="._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): "]"._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): "fetched property ["._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): absolute
    //#input(String getWeblogURL(Weblog, String, bool)): locale
    //#input(String getWeblogURL(Weblog, String, bool)): locale._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): weblog
    //#output(String getWeblogURL(Weblog, String, bool)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getWeblogURL(Weblog, String, bool)): return_value
    //#new obj(String getWeblogURL(Weblog, String, bool)): java.lang.StringBuffer:toString(...)
    //#pre[8] (String getWeblogURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[9] (String getWeblogURL(Weblog, 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[10] (String getWeblogURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[18] (String getWeblogURL(Weblog, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[20] (String getWeblogURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[21] (String getWeblogURL(Weblog, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getWeblogURL(Weblog, String, bool)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getWeblogURL(Weblog, String, bool)): return_value in Addr_Set{null,&java.lang.StringBuffer:toString(...)}
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogURL(Weblog, String, bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getWeblogURL(Weblog, String, bool)): absolute: {0}, {1}
    //#test_vector(String getWeblogURL(Weblog, String, bool)): locale: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogURL(Weblog, String, bool)): weblog: Inverse{null}, Addr_Set{null}
            return null;
        }
        
        StringBuffer url = new StringBuffer();
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append("/").append(weblog.getHandle()).append("/");
    //#MultiWeblogURLStrategy.java:66: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogURL(Weblog, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        
        if(locale != null) {
            url.append(locale).append("/");
        }
        
        return url.toString();
    //#MultiWeblogURLStrategy.java:72: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogURL(Weblog, String, bool)
    }
    
    
    /**
     * Get url for a single weblog entry on a given weblog.
     */
    public String getWeblogEntryURL(Weblog weblog,
                                                 String locale,
                                                 String entryAnchor,
                                                 boolean absolute) {
        
        if(weblog == null || entryAnchor == null) {
    //#MultiWeblogURLStrategy.java:84: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogEntryURL(Weblog, String, String, bool)
    //#MultiWeblogURLStrategy.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.MultiWeblogURLStrategy
    //#    method: String getWeblogEntryURL(Weblog, String, String, bool)
    //#    suspicious precondition index: [10]
    //#    Attribs:  Soft
    //#MultiWeblogURLStrategy.java:84: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogEntryURL(Weblog, String, String, bool)
    //#    suspicious precondition index: [25]
    //#    Attribs:  Soft
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): "."._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): ".roller-ui.authoring.preview."._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): "="._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): "]"._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): "entry."._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): "fetched property ["._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): __Descendant_Table[others]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): absolute
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): entryAnchor
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): locale
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): locale._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): this
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): this.__Tag
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): this.previewTheme
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): weblog
    //#output(String getWeblogEntryURL(Weblog, String, String, bool)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getWeblogEntryURL(Weblog, String, String, bool)): return_value
    //#new obj(String getWeblogEntryURL(Weblog, String, String, bool)): java.lang.StringBuffer:toString(...)
    //#pre[9] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[10] (String getWeblogEntryURL(Weblog, 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[11] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[19] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[21] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[22] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#pre[25] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) this.__Tag in {org/apache/roller/weblogger/business/MultiWeblogURLStrategy, org/apache/roller/weblogger/business/PreviewURLStrategy}
    //#post(String getWeblogEntryURL(Weblog, String, String, bool)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getWeblogEntryURL(Weblog, String, String, bool)): return_value in Addr_Set{null,&java.lang.StringBuffer:toString(...)}
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encode
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(String getWeblogEntryURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getQueryString
    //#test_vector(String getWeblogEntryURL(Weblog, String, String, bool)): entryAnchor: Inverse{null}, Addr_Set{null}
    //#test_vector(String getWeblogEntryURL(Weblog, String, String, bool)): weblog: Addr_Set{null}, Inverse{null}
            return null;
        }
        
        StringBuffer url = new StringBuffer();
        
        url.append(getWeblogURL(weblog, locale, absolute));
        url.append("entry/").append(URLUtilities.encode(entryAnchor));
    //#MultiWeblogURLStrategy.java:91: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogEntryURL(Weblog, String, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        
        return url.toString();
    //#MultiWeblogURLStrategy.java:93: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogEntryURL(Weblog, String, String, bool)
    }
    
    
    /**
     * Get url for a single weblog entry comments on a given weblog.
     */
    public String getWeblogCommentsURL(Weblog weblog,
                                                    String locale,
                                                    String entryAnchor,
                                                    boolean absolute) {
        
        return getWeblogEntryURL(weblog, locale, entryAnchor, absolute)+"#comments";
    //#MultiWeblogURLStrategy.java:105: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogCommentsURL(Weblog, String, String, bool)
    //#MultiWeblogURLStrategy.java:105: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogCommentsURL(Weblog, String, String, bool)
    //#    suspicious precondition index: [10]
    //#    Attribs:  Soft
    //#MultiWeblogURLStrategy.java:105: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogCommentsURL(Weblog, String, String, bool)
    //#    suspicious precondition index: [25]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): "#comments"._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): "."._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): ".roller-ui.authoring.preview."._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): "="._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): "]"._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): "entry."._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): "fetched property ["._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): __Descendant_Table[others]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): __Dispatch_Table.getWeblogEntryURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): absolute
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): entryAnchor
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): locale
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): locale._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogEntryURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): this
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): this.__Tag
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): this.previewTheme
    //#input(String getWeblogCommentsURL(Weblog, String, String, bool)): weblog
    //#output(String getWeblogCommentsURL(Weblog, String, String, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogCommentsURL(Weblog, String, String, bool)): return_value
    //#new obj(String getWeblogCommentsURL(Weblog, String, String, bool)): java.lang.StringBuilder:toString(...)
    //#pre[25] (String getWeblogCommentsURL(Weblog, String, String, bool)): this.__Tag in {org/apache/roller/weblogger/business/MultiWeblogURLStrategy, org/apache/roller/weblogger/business/PreviewURLStrategy}
    //#pre[9] (String getWeblogCommentsURL(Weblog, String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[10] (String getWeblogCommentsURL(Weblog, 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[11] (String getWeblogCommentsURL(Weblog, String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[19] (String getWeblogCommentsURL(Weblog, String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[21] (String getWeblogCommentsURL(Weblog, String, String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[22] (String getWeblogCommentsURL(Weblog, String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getWeblogCommentsURL(Weblog, String, String, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogCommentsURL(Weblog, String, String, bool)): return_value == &java.lang.StringBuilder:toString(...)
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encode
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(String getWeblogCommentsURL(Weblog, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getQueryString
    //#MultiWeblogURLStrategy.java:105: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogCommentsURL(Weblog, String, String, bool)
    }
    
    
    /**
     * Get url for a single weblog entry comment on a given weblog.
     */
    public String getWeblogCommentURL(Weblog weblog,
                                                   String locale,
                                                   String entryAnchor,
                                                   String timeStamp,
                                                   boolean absolute) {
        
        return getWeblogEntryURL(weblog, locale, entryAnchor, absolute)+"#comment-"+timeStamp;
    //#MultiWeblogURLStrategy.java:118: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogCommentURL(Weblog, String, String, String, bool)
    //#MultiWeblogURLStrategy.java:118: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogCommentURL(Weblog, String, String, String, bool)
    //#    suspicious precondition index: [10]
    //#    Attribs:  Soft
    //#MultiWeblogURLStrategy.java:118: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogCommentURL(Weblog, String, String, String, bool)
    //#    suspicious precondition index: [25]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): "#comment-"._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): "."._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): ".roller-ui.authoring.preview."._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): "="._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): "]"._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): "entry."._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): "fetched property ["._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): __Descendant_Table[others]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): __Dispatch_Table.getWeblogEntryURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): absolute
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): entryAnchor
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): locale
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): locale._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogEntryURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): this
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): this.__Tag
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): this.previewTheme
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): timeStamp
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): timeStamp._tainted
    //#input(String getWeblogCommentURL(Weblog, String, String, String, bool)): weblog
    //#output(String getWeblogCommentURL(Weblog, String, String, String, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogCommentURL(Weblog, String, String, String, bool)): return_value
    //#new obj(String getWeblogCommentURL(Weblog, String, String, String, bool)): java.lang.StringBuilder:toString(...)
    //#pre[25] (String getWeblogCommentURL(Weblog, String, String, String, bool)): this.__Tag in {org/apache/roller/weblogger/business/MultiWeblogURLStrategy, org/apache/roller/weblogger/business/PreviewURLStrategy}
    //#pre[9] (String getWeblogCommentURL(Weblog, String, String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[10] (String getWeblogCommentURL(Weblog, String, 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[11] (String getWeblogCommentURL(Weblog, String, String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[19] (String getWeblogCommentURL(Weblog, String, String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[21] (String getWeblogCommentURL(Weblog, String, String, String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[22] (String getWeblogCommentURL(Weblog, String, String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getWeblogCommentURL(Weblog, String, String, String, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogCommentURL(Weblog, String, String, String, bool)): return_value == &java.lang.StringBuilder:toString(...)
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encode
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(String getWeblogCommentURL(Weblog, String, String, String, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getQueryString
    //#MultiWeblogURLStrategy.java:118: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogCommentURL(Weblog, String, String, String, bool)
    }
    
    
    /**
     * Get url for a collection of entries on a given weblog.
     */
    public String getWeblogCollectionURL(Weblog weblog,
                                                      String locale,
                                                      String category,
                                                      String dateString,
                                                      List tags,
                                                      int pageNum,
                                                      boolean absolute) {
        
        if(weblog == null) {
    //#MultiWeblogURLStrategy.java:133: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#MultiWeblogURLStrategy.java:133: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    suspicious precondition index: [11]
    //#    Attribs:  Soft
    //#MultiWeblogURLStrategy.java:133: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    suspicious precondition index: [28]
    //#    Attribs:  Soft
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): "."._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): ".roller-ui.authoring.preview."._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): "="._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): "]"._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): "category."._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): "date."._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): "fetched property ["._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): "tags."._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): __Descendant_Table[others]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): absolute
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): category
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): category._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): dateString
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): dateString._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): locale
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): locale._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): pageNum
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): tags
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): this
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): this.__Tag
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): this.previewTheme
    //#input(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): weblog
    //#output(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): return_value
    //#new obj(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): java.lang.StringBuilder:toString(...)
    //#pre[10] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[11] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[12] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[20] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[22] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[23] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#pre[28] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) this.__Tag in {org/apache/roller/weblogger/business/MultiWeblogURLStrategy, org/apache/roller/weblogger/business/PreviewURLStrategy}
    //#post(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encode
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getQueryString
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): category: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): dateString: Inverse{null}, Addr_Set{null}
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): pageNum: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): tags: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): weblog: Inverse{null}, Addr_Set{null}
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): java.lang.String:equals(...)@143: {0}, {1}
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): java.lang.String:startsWith(...)@145: {0}, {1}
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): java.util.List:size(...)@155: {-2_147_483_648..0}, {1..4_294_967_295}
            return null;
        }
        
        StringBuffer pathinfo = new StringBuffer();
        Map params = new HashMap();
        
        pathinfo.append(getWeblogURL(weblog, locale, absolute));
        
        String cat = null;
        if(category != null && "/".equals(category)) {
            cat = null;
        } else if(category != null && category.startsWith("/")) {
            cat = category.substring(1);
        }
        
        if(cat != null && dateString == null) {
            pathinfo.append("category/").append(URLUtilities.encodePath(cat));
    //#MultiWeblogURLStrategy.java:150: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encodePath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encodePath(String)
            
        } else if(dateString != null && cat == null) {
            pathinfo.append("date/").append(dateString);  
        
        } else if(tags != null && tags.size() > 0) {
            pathinfo.append("tags/").append(URLUtilities.getEncodedTagsString(tags));
    //#MultiWeblogURLStrategy.java:156: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getEncodedTagsString(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getEncodedTagsString(List)
        } else {
            if(dateString != null) params.put("date", dateString);
            if(cat != null) params.put("cat", URLUtilities.encode(cat));
    //#MultiWeblogURLStrategy.java:159: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        }

        if(pageNum > 0) {
            params.put("page", Integer.toString(pageNum));
        }
        
        return pathinfo.toString() + URLUtilities.getQueryString(params);
    //#MultiWeblogURLStrategy.java:166: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#MultiWeblogURLStrategy.java:166: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    }
    
    
    /**
     * Get url for a custom page on a given weblog.
     */
    public String getWeblogPageURL(Weblog weblog,
                                                String locale,
                                                String pageLink,
                                                String entryAnchor,
                                                String category,
                                                String dateString,
                                                List tags,
                                                int pageNum,
                                                boolean absolute) {
        
        if(weblog == null) {
    //#MultiWeblogURLStrategy.java:183: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#MultiWeblogURLStrategy.java:183: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    suspicious precondition index: [18]
    //#    Attribs:  Soft
    //#MultiWeblogURLStrategy.java:183: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    suspicious precondition index: [37]
    //#    Attribs:  Soft
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "."._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): ".roller-ui.authoring.preview."._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "="._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "]"._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "category."._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "date."._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "fetched property ["._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "page."._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): "tags."._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): __Descendant_Table[others]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): __Dispatch_Table.getWeblogCollectionURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;IZ)Ljava/lang/String;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): absolute
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): category
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): category._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): dateString
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): dateString._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): locale
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): locale._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogCollectionURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;IZ)Ljava/lang/String;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): pageLink
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): pageLink._tainted
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): pageNum
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): tags
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): this
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): this.__Tag
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): this.previewTheme
    //#input(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): weblog
    //#output(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): return_value
    //#new obj(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): java.lang.StringBuilder:toString(...)
    //#pre[17] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[18] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[19] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[27] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[29] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[30] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#pre[37] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) this.__Tag in {org/apache/roller/weblogger/business/MultiWeblogURLStrategy, org/apache/roller/weblogger/business/PreviewURLStrategy}
    //#post(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...),&java.lang.StringBuilder:toString(...),&java.lang.StringBuilder:toString(...)}
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encode
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getQueryString
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encodePath
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.util.List:size
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getEncodedTagsString
    //#unanalyzed(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): Effects-of-calling:java.lang.Integer:toString
    //#test_vector(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): category: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): dateString: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): pageLink: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): pageNum: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): tags: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): weblog: Inverse{null}, Addr_Set{null}
    //#test_vector(String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): java.util.List:size(...)@202: {-2_147_483_648..0}, {1..4_294_967_295}
            return null;
        }
        
        StringBuffer pathinfo = new StringBuffer();
        Map params = new HashMap();
        
        pathinfo.append(getWeblogURL(weblog, locale, absolute));
        
        if(pageLink != null) {
            pathinfo.append("page/").append(pageLink);
            
            // for custom pages we only allow query params
            if(dateString != null) {
                params.put("date", dateString);
            }
            if(category != null) {
                params.put("cat", URLUtilities.encode(category));
    //#MultiWeblogURLStrategy.java:200: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
            }
            if(tags != null && tags.size() > 0) {
                params.put("tags", URLUtilities.getEncodedTagsString(tags));
    //#MultiWeblogURLStrategy.java:203: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getEncodedTagsString(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getEncodedTagsString(List)
            }
            if(pageNum > 0) {
                params.put("page", Integer.toString(pageNum));
            }
        } else {
            // if there is no page link then this is just a typical collection url
            return getWeblogCollectionURL(weblog, locale, category, dateString, tags, pageNum, absolute);
        }
        
        return pathinfo.toString() + URLUtilities.getQueryString(params);
    //#MultiWeblogURLStrategy.java:213: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#MultiWeblogURLStrategy.java:213: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    }
    
    
    /**
     * Get url for a feed on a given weblog.
     */
    public String getWeblogFeedURL(Weblog weblog,
                                                String locale,
                                                String type,
                                                String format,
                                                String category,
                                                String term,
                                                List tags,
                                                boolean excerpts,
                                                boolean absolute) {
        
        if(weblog == null) {
    //#MultiWeblogURLStrategy.java:230: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
    //#MultiWeblogURLStrategy.java:230: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
    //#    suspicious precondition index: [11]
    //#    Attribs:  Soft
    //#MultiWeblogURLStrategy.java:230: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
    //#    suspicious precondition index: [28]
    //#    Attribs:  Soft
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): "."._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): ".roller-ui.authoring.preview."._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): "="._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): "]"._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): "feed."._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): "fetched property ["._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): __Descendant_Table[others]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): absolute
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): category
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): excerpts
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): format
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): format._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): locale
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): locale._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): tags
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): term
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): this
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): this.__Tag
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): this.previewTheme
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): type
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): type._tainted
    //#input(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): weblog
    //#output(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): return_value
    //#new obj(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): java.lang.StringBuilder:toString(...)
    //#pre[10] (String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[11] (String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[12] (String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[20] (String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[22] (String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[23] (String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#pre[28] (String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): (soft) this.__Tag in {org/apache/roller/weblogger/business/MultiWeblogURLStrategy, org/apache/roller/weblogger/business/PreviewURLStrategy}
    //#post(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encode
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getQueryString
    //#test_vector(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): category: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): excerpts: {0}, {1}
    //#test_vector(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): tags: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): term: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): weblog: Inverse{null}, Addr_Set{null}
    //#test_vector(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): java.lang.String:length(...)@240: {0}, {1..4_294_967_295}
    //#test_vector(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): java.lang.String:length(...)@246: {0}, {1..4_294_967_295}
    //#test_vector(String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)): java.util.List:size(...)@243: {-2_147_483_648..0}, {1..4_294_967_295}
            return null;
        }
        
        StringBuffer url = new StringBuffer();
        
        url.append(getWeblogURL(weblog, locale, absolute));
        url.append("feed/").append(type).append("/").append(format);
        
        Map params = new HashMap();
        if(category != null && category.trim().length() > 0) {
            params.put("cat", URLUtilities.encode(category));
    //#MultiWeblogURLStrategy.java:241: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        }
        if(tags != null && tags.size() > 0) {
          params.put("tags", URLUtilities.getEncodedTagsString(tags));
    //#MultiWeblogURLStrategy.java:244: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getEncodedTagsString(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getEncodedTagsString(List)
        }
        if(term != null && term.trim().length() > 0) {
            params.put("q", URLUtilities.encode(term.trim()));
    //#MultiWeblogURLStrategy.java:247: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        }
        if(excerpts) {
            params.put("excerpts", "true");
        }
        
        return url.toString() + URLUtilities.getQueryString(params);
    //#MultiWeblogURLStrategy.java:253: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#MultiWeblogURLStrategy.java:253: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogFeedURL(Weblog, String, String, String, String, String, List, bool, bool)
    }
    
    
    /**
     * Get url to search endpoint on a given weblog.
     */
    public String getWeblogSearchURL(Weblog weblog,
                                                  String locale,
                                                  String query,
                                                  String category,
                                                  int pageNum,
                                                  boolean absolute) {
        
        if(weblog == null) {
    //#MultiWeblogURLStrategy.java:267: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogSearchURL(Weblog, String, String, String, int, bool)
    //#MultiWeblogURLStrategy.java:267: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogSearchURL(Weblog, String, String, String, int, bool)
    //#    suspicious precondition index: [13]
    //#    Attribs:  Soft
    //#MultiWeblogURLStrategy.java:267: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogSearchURL(Weblog, String, String, String, int, bool)
    //#    suspicious precondition index: [30]
    //#    Attribs:  Soft
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): "."._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): ".roller-ui.authoring.preview."._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): "="._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): "]"._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): "fetched property ["._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): "search"._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): __Descendant_Table[others]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): absolute
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): category
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): locale
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): locale._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): pageNum
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): query
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): this
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): this.__Tag
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): this.previewTheme
    //#input(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): weblog
    //#output(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): return_value
    //#new obj(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): java.lang.StringBuilder:toString(...)
    //#pre[12] (String getWeblogSearchURL(Weblog, String, String, String, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[13] (String getWeblogSearchURL(Weblog, String, String, String, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[14] (String getWeblogSearchURL(Weblog, String, String, String, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[22] (String getWeblogSearchURL(Weblog, String, String, String, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[24] (String getWeblogSearchURL(Weblog, String, String, String, int, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[25] (String getWeblogSearchURL(Weblog, String, String, String, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#pre[30] (String getWeblogSearchURL(Weblog, String, String, String, int, bool)): (soft) this.__Tag in {org/apache/roller/weblogger/business/MultiWeblogURLStrategy, org/apache/roller/weblogger/business/PreviewURLStrategy}
    //#post(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encode
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getQueryString
    //#test_vector(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): category: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): pageNum: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): query: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogSearchURL(Weblog, String, String, String, int, bool)): weblog: Inverse{null}, Addr_Set{null}
            return null;
        }
        
        StringBuffer url = new StringBuffer();
        
        url.append(getWeblogURL(weblog, locale, absolute));
        url.append("search");
        
        Map params = new HashMap();
        if(query != null) {
            params.put("q", URLUtilities.encode(query));
    //#MultiWeblogURLStrategy.java:278: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogSearchURL(Weblog, String, String, String, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
            
            // other stuff only makes sense if there is a query
            if(category != null) {
                params.put("cat", URLUtilities.encode(category));
    //#MultiWeblogURLStrategy.java:282: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogSearchURL(Weblog, String, String, String, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
            }
            if(pageNum > 0) {
                params.put("page", Integer.toString(pageNum));
            }
        }
        
        return url.toString() + URLUtilities.getQueryString(params);
    //#MultiWeblogURLStrategy.java:289: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogSearchURL(Weblog, String, String, String, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#MultiWeblogURLStrategy.java:289: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogSearchURL(Weblog, String, String, String, int, bool)
    }
    
    
    /**
     * Get url to a resource on a given weblog.
     */
    public String getWeblogResourceURL(Weblog weblog,
                                                    String filePath,
                                                    boolean absolute) {
        
        if(weblog == null || StringUtils.isEmpty(filePath)) {
    //#MultiWeblogURLStrategy.java:300: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogResourceURL(Weblog, String, bool)
    //#MultiWeblogURLStrategy.java:300: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogResourceURL(Weblog, String, bool)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#MultiWeblogURLStrategy.java:300: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogResourceURL(Weblog, String, bool)
    //#    suspicious precondition index: [5]
    //#    Attribs:  Soft
    //#MultiWeblogURLStrategy.java:300: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogResourceURL(Weblog, String, bool)
    //#    suspicious precondition index: [20]
    //#    Attribs:  Soft
    //#input(String getWeblogResourceURL(Weblog, String, bool)): "."._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): ".roller-ui.authoring.preview."._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): "="._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): "]"._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): "fetched property ["._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): "resource."._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): __Descendant_Table[others]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): absolute
    //#input(String getWeblogResourceURL(Weblog, String, bool)): filePath
    //#input(String getWeblogResourceURL(Weblog, String, bool)): filePath._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogResourceURL(Weblog, String, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): this
    //#input(String getWeblogResourceURL(Weblog, String, bool)): this.__Tag
    //#input(String getWeblogResourceURL(Weblog, String, bool)): this.previewTheme
    //#input(String getWeblogResourceURL(Weblog, String, bool)): weblog
    //#output(String getWeblogResourceURL(Weblog, String, bool)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getWeblogResourceURL(Weblog, String, bool)): return_value
    //#new obj(String getWeblogResourceURL(Weblog, String, bool)): java.lang.StringBuffer:toString(...)
    //#pre[2] (String getWeblogResourceURL(Weblog, String, bool)): (soft) filePath != null
    //#pre[4] (String getWeblogResourceURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[5] (String getWeblogResourceURL(Weblog, 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[6] (String getWeblogResourceURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[14] (String getWeblogResourceURL(Weblog, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[16] (String getWeblogResourceURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[17] (String getWeblogResourceURL(Weblog, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#pre[20] (String getWeblogResourceURL(Weblog, String, bool)): (soft) this.__Tag in {org/apache/roller/weblogger/business/MultiWeblogURLStrategy, org/apache/roller/weblogger/business/PreviewURLStrategy}
    //#post(String getWeblogResourceURL(Weblog, String, bool)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getWeblogResourceURL(Weblog, String, bool)): return_value in Addr_Set{null,&java.lang.StringBuffer:toString(...)}
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encode
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(String getWeblogResourceURL(Weblog, String, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getQueryString
    //#test_vector(String getWeblogResourceURL(Weblog, String, bool)): weblog: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogResourceURL(Weblog, String, bool)): java.lang.String:startsWith(...)@309: {0}, {1}
    //#test_vector(String getWeblogResourceURL(Weblog, String, bool)): org.apache.commons.lang.StringUtils:isEmpty(...)@300: {0}, {1}
            return null;
        }
        
        StringBuffer url = new StringBuffer();
        
        url.append(getWeblogURL(weblog, null, absolute));
        url.append("resource/");
        
        if(filePath.startsWith("/")) {
            url.append(URLUtilities.encodePath(filePath.substring(1)));
    //#MultiWeblogURLStrategy.java:310: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encodePath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogResourceURL(Weblog, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encodePath(String)
        } else {
            url.append(URLUtilities.encodePath(filePath));
    //#MultiWeblogURLStrategy.java:312: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encodePath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogResourceURL(Weblog, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encodePath(String)
        }
        
        return url.toString();
    //#MultiWeblogURLStrategy.java:315: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogResourceURL(Weblog, String, bool)
    }
    
    
    /**
     * Get url to rsd file on a given weblog.
     */
    public String getWeblogRsdURL(Weblog weblog,
                                               boolean absolute) {
        
        if(weblog == null) {
    //#MultiWeblogURLStrategy.java:325: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogRsdURL(Weblog, bool)
    //#MultiWeblogURLStrategy.java:325: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogRsdURL(Weblog, bool)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#MultiWeblogURLStrategy.java:325: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogRsdURL(Weblog, bool)
    //#    suspicious precondition index: [18]
    //#    Attribs:  Soft
    //#input(String getWeblogRsdURL(Weblog, bool)): "."._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): ".roller-ui.authoring.preview."._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): "="._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): "]"._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): "fetched property ["._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): "rsd"._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#input(String getWeblogRsdURL(Weblog, bool)): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#input(String getWeblogRsdURL(Weblog, bool)): __Descendant_Table[others]
    //#input(String getWeblogRsdURL(Weblog, bool)): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogRsdURL(Weblog, bool)): absolute
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/PreviewURLStrategy.__Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogRsdURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogRsdURL(Weblog, bool)): this
    //#input(String getWeblogRsdURL(Weblog, bool)): this.__Tag
    //#input(String getWeblogRsdURL(Weblog, bool)): this.previewTheme
    //#input(String getWeblogRsdURL(Weblog, bool)): weblog
    //#output(String getWeblogRsdURL(Weblog, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogRsdURL(Weblog, bool)): return_value
    //#new obj(String getWeblogRsdURL(Weblog, bool)): java.lang.StringBuilder:toString(...)
    //#pre[2] (String getWeblogRsdURL(Weblog, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (String getWeblogRsdURL(Weblog, 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 getWeblogRsdURL(Weblog, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[12] (String getWeblogRsdURL(Weblog, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[14] (String getWeblogRsdURL(Weblog, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[15] (String getWeblogRsdURL(Weblog, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#pre[18] (String getWeblogRsdURL(Weblog, bool)): (soft) this.__Tag in {org/apache/roller/weblogger/business/MultiWeblogURLStrategy, org/apache/roller/weblogger/business/PreviewURLStrategy}
    //#post(String getWeblogRsdURL(Weblog, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogRsdURL(Weblog, bool)): return_value == One-of{null, &java.lang.StringBuilder:toString(...)}
    //#post(String getWeblogRsdURL(Weblog, bool)): return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:encode
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:java.util.Map:put
    //#unanalyzed(String getWeblogRsdURL(Weblog, bool)): Effects-of-calling:org.apache.roller.weblogger.util.URLUtilities:getQueryString
    //#test_vector(String getWeblogRsdURL(Weblog, bool)): weblog: Inverse{null}, Addr_Set{null}
            return null;
        }
        
        return getWeblogURL(weblog, null, absolute)+"rsd";
    //#MultiWeblogURLStrategy.java:329: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogRsdURL(Weblog, bool)
    }
    
    
    /**
     * Get url to JSON tags service url, optionally for a given weblog.
     */
    public String getWeblogTagsJsonURL(Weblog weblog,
                                                    boolean absolute) {
        
        StringBuffer url = new StringBuffer();
    //#MultiWeblogURLStrategy.java:339: method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogTagsJsonURL(Weblog, bool)
    //#MultiWeblogURLStrategy.java:339: 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.MultiWeblogURLStrategy
    //#    method: String getWeblogTagsJsonURL(Weblog, bool)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): "."._tainted
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): ".roller-services.json.tags."._tainted
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): "="._tainted
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): "Trouble accessing property: "._tainted
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): "]"._tainted
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): "fetched property ["._tainted
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): absolute
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/PropertiesManager]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Descendant_Table[others]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/PropertiesManager.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.__Tag
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.__Tag
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.propertiesManager.strategy.threadLocalEntityManager
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.load(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAPropertiesManagerImpl.__Dispatch_Table.getProperty(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/RuntimeConfigProperty;
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getPropertiesManager()Lorg/apache/roller/weblogger/business/PropertiesManager;
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL._tainted
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL._tainted
    //#input(String getWeblogTagsJsonURL(Weblog, bool)): weblog
    //#output(String getWeblogTagsJsonURL(Weblog, bool)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getWeblogTagsJsonURL(Weblog, bool)): return_value
    //#new obj(String getWeblogTagsJsonURL(Weblog, bool)): java.lang.StringBuffer:toString(...)
    //#pre[2] (String getWeblogTagsJsonURL(Weblog, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (String getWeblogTagsJsonURL(Weblog, 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 getWeblogTagsJsonURL(Weblog, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[12] (String getWeblogTagsJsonURL(Weblog, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[14] (String getWeblogTagsJsonURL(Weblog, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[15] (String getWeblogTagsJsonURL(Weblog, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getWeblogTagsJsonURL(Weblog, bool)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getWeblogTagsJsonURL(Weblog, bool)): return_value == &java.lang.StringBuffer:toString(...)
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:getWeblogger
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:getPropertiesManager
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:getProperty
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:javax.persistence.EntityManager:find
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(String getWeblogTagsJsonURL(Weblog, bool)): Effects-of-calling:java.lang.String:length
    //#test_vector(String getWeblogTagsJsonURL(Weblog, bool)): absolute: {0}, {1}
    //#test_vector(String getWeblogTagsJsonURL(Weblog, bool)): weblog: Addr_Set{null}, Inverse{null}
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        // json tags service base
        url.append("/roller-services/json/tags/");
        
        // is this for a specific weblog or site-wide?
        if(weblog != null) {
            url.append(weblog.getHandle()).append("/");
    //#MultiWeblogURLStrategy.java:352: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
    //#    method: String getWeblogTagsJsonURL(Weblog, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        }
        
        return url.toString();
    //#MultiWeblogURLStrategy.java:355: end of method: String org.apache.roller.weblogger.business.MultiWeblogURLStrategy.getWeblogTagsJsonURL(Weblog, bool)
    }
    
}
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__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.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getAtomProtocolURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getEntryAddURL(Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getEntryEditURL(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getLoginURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getLogoutURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getPreviewURLStrategy(Ljava/lang/String;)Lorg/apache/roller/weblogger/business/URLStrategy;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogCollectionURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;IZ)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogCommentURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogCommentsURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogConfigURL(Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogEntryURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogFeedURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ZZ)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogPageURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;IZ)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogResourceURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogRsdURL(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogSearchURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogTagsJsonURL(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getXmlrpcURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): org/apache/roller/weblogger/business/AbstractURLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#output(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): org/apache/roller/weblogger/business/URLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy]
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): org/apache/roller/weblogger/business/AbstractURLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): org/apache/roller/weblogger/business/URLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/MultiWeblogURLStrategy] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getActionURL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getActionURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getAtomProtocolURL(Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getAtomProtocolURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getEntryAddURL(Ljava/lang/String;Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getEntryAddURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getEntryEditURL(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getEntryEditURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getLoginURL(Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getLoginURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getLogoutURL(Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getLogoutURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getPreviewURLStrategy(Ljava/lang/String;)Lorg/apache/roller/weblogger/business/URLStrategy; == &getPreviewURLStrategy
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogCollectionURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;IZ)Ljava/lang/String; == &getWeblogCollectionURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogCommentURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; == &getWeblogCommentURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogCommentsURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; == &getWeblogCommentsURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogConfigURL(Ljava/lang/String;Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getWeblogConfigURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogEntryURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; == &getWeblogEntryURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogFeedURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ZZ)Ljava/lang/String; == &getWeblogFeedURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogPageURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;IZ)Ljava/lang/String; == &getWeblogPageURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogResourceURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String; == &getWeblogResourceURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogRsdURL(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/lang/String; == &getWeblogRsdURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogSearchURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/lang/String; == &getWeblogSearchURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogTagsJsonURL(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/lang/String; == &getWeblogTagsJsonURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String; == &getWeblogURL
    //#post(org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init): __Dispatch_Table.getXmlrpcURL(Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getXmlrpcURL
    //#MultiWeblogURLStrategy.java:: end of method: org.apache.roller.weblogger.business.MultiWeblogURLStrategy.org.apache.roller.weblogger.business.MultiWeblogURLStrategy__static_init
    //#MultiWeblogURLStrategy.java:: end of class: org.apache.roller.weblogger.business.MultiWeblogURLStrategy
