//# 0 errors, 559 messages
//#
/*
    //#PreviewURLStrategy.java:1:1: class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#PreviewURLStrategy.java:1:1: method: org.apache.roller.weblogger.business.PreviewURLStrategy.org.apache.roller.weblogger.business.PreviewURLStrategy__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.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.WeblogTheme;
import org.apache.roller.weblogger.util.URLUtilities;


/**
 * A URLStrategy used by the preview rendering system.
 */
public class PreviewURLStrategy extends MultiWeblogURLStrategy {
    
    private final String previewTheme;
    
    
    public PreviewURLStrategy(String theme) {
    //#PreviewURLStrategy.java:38: method: void org.apache.roller.weblogger.business.PreviewURLStrategy.org.apache.roller.weblogger.business.PreviewURLStrategy(String)
    //#input(void org.apache.roller.weblogger.business.PreviewURLStrategy(String)): theme
    //#input(void org.apache.roller.weblogger.business.PreviewURLStrategy(String)): this
    //#output(void org.apache.roller.weblogger.business.PreviewURLStrategy(String)): this.previewTheme
    //#post(void org.apache.roller.weblogger.business.PreviewURLStrategy(String)): this.previewTheme == theme
    //#post(void org.apache.roller.weblogger.business.PreviewURLStrategy(String)): init'ed(this.previewTheme)
    //#unanalyzed(void org.apache.roller.weblogger.business.PreviewURLStrategy(String)): Effects-of-calling:org.apache.roller.weblogger.business.AbstractURLStrategy
        previewTheme = theme;
    }
    //#PreviewURLStrategy.java:40: end of method: void org.apache.roller.weblogger.business.PreviewURLStrategy.org.apache.roller.weblogger.business.PreviewURLStrategy(String)
    
    
    /**
     * Get root url for a given *preview* weblog.  
     * Optionally for a certain locale.
     */
    @Override
    public String getWeblogURL(Weblog weblog, String locale, boolean absolute) {
        
        if(weblog == null) {
    //#PreviewURLStrategy.java:50: method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogURL(Weblog, String, bool)
    //#PreviewURLStrategy.java:50: 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.PreviewURLStrategy
    //#    method: String getWeblogURL(Weblog, String, bool)
    //#    suspicious precondition index: [11]
    //#    Attribs:  Soft
    //#input(String getWeblogURL(Weblog, String, bool)): "."._tainted
    //#input(String getWeblogURL(Weblog, String, bool)): ".roller-ui.authoring.preview."._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)): this
    //#input(String getWeblogURL(Weblog, String, bool)): this.previewTheme
    //#input(String getWeblogURL(Weblog, String, bool)): weblog
    //#output(String getWeblogURL(Weblog, String, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogURL(Weblog, String, bool)): return_value
    //#new obj(String getWeblogURL(Weblog, String, bool)): java.lang.StringBuilder:toString(...)
    //#pre[10] (String getWeblogURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[11] (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[12] (String getWeblogURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[20] (String getWeblogURL(Weblog, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[22] (String getWeblogURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[23] (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.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogURL(Weblog, String, bool)): return_value in Addr_Set{null,&java.lang.StringBuilder: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)): this.previewTheme: 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("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
    //#PreviewURLStrategy.java:62: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogURL(Weblog, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        
        if(locale != null) {
            url.append(locale).append("/");
        }
        
        Map params = new HashMap();
        if(previewTheme != null) {
            params.put("theme", URLUtilities.encode(previewTheme));
    //#PreviewURLStrategy.java:70: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogURL(Weblog, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        }
        
        return url.toString() + URLUtilities.getQueryString(params);
    //#PreviewURLStrategy.java:73: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogURL(Weblog, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#PreviewURLStrategy.java:73: end of method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogURL(Weblog, String, bool)
    }
    
    
    /**
     * Get url for a given *preview* weblog entry.  
     * Optionally for a certain locale.
     */
    @Override
    public String getWeblogEntryURL(Weblog weblog,
                                    String locale,
                                    String previewAnchor,
                                    boolean absolute) {
        
        if(weblog == null) {
    //#PreviewURLStrategy.java:87: method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogEntryURL(Weblog, String, String, bool)
    //#PreviewURLStrategy.java:87: 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.PreviewURLStrategy
    //#    method: String getWeblogEntryURL(Weblog, String, String, bool)
    //#    suspicious precondition index: [13]
    //#    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)): "fetched property ["._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): "site.absoluteurl"._tainted
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): absolute
    //#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/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)): previewAnchor
    //#input(String getWeblogEntryURL(Weblog, String, String, bool)): this
    //#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.StringBuilder:toString(...)._tainted
    //#output(String getWeblogEntryURL(Weblog, String, String, bool)): return_value
    //#new obj(String getWeblogEntryURL(Weblog, String, String, bool)): java.lang.StringBuilder:toString(...)
    //#pre[12] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[13] (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[14] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[22] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[24] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[25] (String getWeblogEntryURL(Weblog, String, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getWeblogEntryURL(Weblog, String, String, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogEntryURL(Weblog, String, String, bool)): return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
    //#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
    //#test_vector(String getWeblogEntryURL(Weblog, String, String, bool)): absolute: {0}, {1}
    //#test_vector(String getWeblogEntryURL(Weblog, String, String, bool)): locale: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogEntryURL(Weblog, String, String, bool)): previewAnchor: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogEntryURL(Weblog, String, String, bool)): this.previewTheme: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogEntryURL(Weblog, String, 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("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
    //#PreviewURLStrategy.java:99: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogEntryURL(Weblog, String, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        
        if(locale != null) {
            url.append(locale).append("/");
        }
        
        Map params = new HashMap();
        if(previewTheme != null) {
            params.put("theme", URLUtilities.encode(previewTheme));
    //#PreviewURLStrategy.java:107: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogEntryURL(Weblog, String, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        }
        if(previewAnchor != null) {
            params.put("previewEntry", URLUtilities.encode(previewAnchor));
    //#PreviewURLStrategy.java:110: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogEntryURL(Weblog, String, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        }
        
        return url.toString() + URLUtilities.getQueryString(params);
    //#PreviewURLStrategy.java:113: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogEntryURL(Weblog, String, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#PreviewURLStrategy.java:113: end of method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogEntryURL(Weblog, 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) {
    //#PreviewURLStrategy.java:128: method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#PreviewURLStrategy.java:128: 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.PreviewURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    suspicious precondition index: [15]
    //#    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)): 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/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.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[14] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[15] (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[16] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[24] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[26] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[27] (String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#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: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
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): absolute: {0}, {1}
    //#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)): locale: Addr_Set{null}, Inverse{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)): this.previewTheme: 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(...)@148: {0}, {1}
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): java.lang.String:startsWith(...)@150: {0}, {1}
    //#test_vector(String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)): java.util.List:size(...)@160: {-2_147_483_648..0}, {1..4_294_967_295}
            return null;
        }
        
        StringBuffer pathinfo = new StringBuffer();
        Map params = new HashMap();
        
        if(absolute) {
        	pathinfo.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
        	pathinfo.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        pathinfo.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
    //#PreviewURLStrategy.java:141: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        
        if(locale != null) {
        	pathinfo.append(locale).append("/");
        }

        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));
    //#PreviewURLStrategy.java:155: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encodePath(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    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));
    //#PreviewURLStrategy.java:161: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getEncodedTagsString(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    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));
    //#PreviewURLStrategy.java:164: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    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));
        }
        
        if(previewTheme != null) {
            params.put("theme", URLUtilities.encode(previewTheme));
    //#PreviewURLStrategy.java:172: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        }

        return pathinfo.toString() + URLUtilities.getQueryString(params);
    //#PreviewURLStrategy.java:175: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#PreviewURLStrategy.java:175: end of method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    }
    

    /**
     * Get url for a custom page on a given weblog.
     */
    @Override
    public String getWeblogPageURL(Weblog weblog,
                                                String locale,
                                                String pageLink,
                                                String entryAnchor,
                                                String category,
                                                String dateString,
                                                List tags,
                                                int pageNum,
                                                boolean absolute) {
        
        if(weblog == null) {
    //#PreviewURLStrategy.java:193: method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#PreviewURLStrategy.java:193: 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.PreviewURLStrategy
    //#    method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    suspicious precondition index: [24]
    //#    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/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)): 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/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[23] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[24] (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[25] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[33] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[35] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[36] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#pre[43] (String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)): (soft) this.__Tag == 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(...)}
    //#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.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:java.lang.StringBuffer:toString
    //#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)): absolute: {0}, {1}
    //#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)): locale: 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)): this.previewTheme: 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(...)@226: {-2_147_483_648..0}, {1..4_294_967_295}
            return null;
        }
        
        StringBuffer pathinfo = new StringBuffer();
        Map params = new HashMap();
        
        if(absolute) {
            pathinfo.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            pathinfo.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        pathinfo.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
    //#PreviewURLStrategy.java:206: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        
        if(locale != null) {
            pathinfo.append(locale).append("/");
        }
        
        if(previewTheme != null) {
            params.put("theme", URLUtilities.encode(previewTheme));
    //#PreviewURLStrategy.java:213: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        }
        
        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));
    //#PreviewURLStrategy.java:224: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    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));
    //#PreviewURLStrategy.java:227: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getEncodedTagsString(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    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);
    //#PreviewURLStrategy.java:237: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#PreviewURLStrategy.java:237: end of method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    }
    
    
    /**
     * Get a url to a *preview* resource on a given weblog.
     */
    @Override
    public String getWeblogResourceURL(Weblog weblog, String filePath, boolean absolute) {
        
        if(weblog == null) {
    //#PreviewURLStrategy.java:247: method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogResourceURL(Weblog, String, bool)
    //#PreviewURLStrategy.java:247: 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.PreviewURLStrategy
    //#    method: String getWeblogResourceURL(Weblog, String, bool)
    //#    suspicious precondition index: [9]
    //#    Attribs:  Soft
    //#input(String getWeblogResourceURL(Weblog, String, bool)): "."._tainted
    //#input(String getWeblogResourceURL(Weblog, String, bool)): ".roller-ui.authoring.previewresource."._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)): "site.absoluteurl"._tainted
    //#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/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.previewTheme
    //#input(String getWeblogResourceURL(Weblog, String, bool)): weblog
    //#output(String getWeblogResourceURL(Weblog, String, bool)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String getWeblogResourceURL(Weblog, String, bool)): return_value
    //#new obj(String getWeblogResourceURL(Weblog, String, bool)): java.lang.StringBuilder:toString(...)
    //#pre[6] (String getWeblogResourceURL(Weblog, String, bool)): (soft) filePath != null
    //#pre[8] (String getWeblogResourceURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[9] (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[10] (String getWeblogResourceURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[18] (String getWeblogResourceURL(Weblog, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
    //#pre[20] (String getWeblogResourceURL(Weblog, String, bool)): (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
    //#pre[21] (String getWeblogResourceURL(Weblog, String, bool)): (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
    //#post(String getWeblogResourceURL(Weblog, String, bool)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String getWeblogResourceURL(Weblog, String, bool)): return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
    //#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
    //#test_vector(String getWeblogResourceURL(Weblog, String, bool)): absolute: {0}, {1}
    //#test_vector(String getWeblogResourceURL(Weblog, String, bool)): this.previewTheme: Addr_Set{null}, Inverse{null}
    //#test_vector(String getWeblogResourceURL(Weblog, String, bool)): weblog: Inverse{null}, Addr_Set{null}
    //#test_vector(String getWeblogResourceURL(Weblog, String, bool)): java.lang.String:equals(...)@268: {1}, {0}
    //#test_vector(String getWeblogResourceURL(Weblog, String, bool)): java.lang.String:startsWith(...)@261: {0}, {1}
            return null;
        }
        
        StringBuffer url = new StringBuffer();
        
        if(absolute) {
            url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
        } else {
            url.append(WebloggerRuntimeConfig.getRelativeContextURL());
        }
        
        url.append("/roller-ui/authoring/previewresource/").append(weblog.getHandle()).append("/");
    //#PreviewURLStrategy.java:259: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogResourceURL(Weblog, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        
        if(filePath.startsWith("/")) {
            url.append(filePath.substring(1));
        } else {
            url.append(filePath);
        }
        
        Map params = new HashMap();
        if(previewTheme != null && !WeblogTheme.CUSTOM.equals(previewTheme)) {
            params.put("theme", URLUtilities.encode(previewTheme));
    //#PreviewURLStrategy.java:269: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:encode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogResourceURL(Weblog, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:encode(String)
        }
        
        return url.toString() + URLUtilities.getQueryString(params);
    //#PreviewURLStrategy.java:272: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.PreviewURLStrategy
    //#    method: String getWeblogResourceURL(Weblog, String, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.URLUtilities:getQueryString(Map)
    //#PreviewURLStrategy.java:272: end of method: String org.apache.roller.weblogger.business.PreviewURLStrategy.getWeblogResourceURL(Weblog, String, bool)
    }
    
}
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__static_init): __Dispatch_Table.getAtomProtocolURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getEntryAddURL(Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getEntryEditURL(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getLoginURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getLogoutURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getPreviewURLStrategy(Ljava/lang/String;)Lorg/apache/roller/weblogger/business/URLStrategy;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__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.PreviewURLStrategy__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.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogConfigURL(Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__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.PreviewURLStrategy__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.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogResourceURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogRsdURL(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogTagsJsonURL(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getXmlrpcURL(Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): org/apache/roller/weblogger/business/AbstractURLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): org/apache/roller/weblogger/business/MultiWeblogURLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#output(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): org/apache/roller/weblogger/business/URLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy]
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): org/apache/roller/weblogger/business/AbstractURLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): org/apache/roller/weblogger/business/MultiWeblogURLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): org/apache/roller/weblogger/business/URLStrategy.__Descendant_Table[org/apache/roller/weblogger/business/PreviewURLStrategy] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__static_init): __Dispatch_Table.getAtomProtocolURL(Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getAtomProtocolURL
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__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.PreviewURLStrategy__static_init): __Dispatch_Table.getLoginURL(Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getLoginURL
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getLogoutURL(Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getLogoutURL
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getPreviewURLStrategy(Ljava/lang/String;)Lorg/apache/roller/weblogger/business/URLStrategy; == &org/apache/roller/weblogger/business/MultiWeblogURLStrategy.getPreviewURLStrategy
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogCommentURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/MultiWeblogURLStrategy.getWeblogCommentURL
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogCommentsURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/MultiWeblogURLStrategy.getWeblogCommentsURL
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__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.PreviewURLStrategy__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; == &org/apache/roller/weblogger/business/MultiWeblogURLStrategy.getWeblogFeedURL
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__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.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogRsdURL(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/MultiWeblogURLStrategy.getWeblogRsdURL
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogSearchURL(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/lang/String; == &org/apache/roller/weblogger/business/MultiWeblogURLStrategy.getWeblogSearchURL
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__static_init): __Dispatch_Table.getWeblogTagsJsonURL(Lorg/apache/roller/weblogger/pojos/Weblog;Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/MultiWeblogURLStrategy.getWeblogTagsJsonURL
    //#post(org.apache.roller.weblogger.business.PreviewURLStrategy__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.PreviewURLStrategy__static_init): __Dispatch_Table.getXmlrpcURL(Z)Ljava/lang/String; == &org/apache/roller/weblogger/business/AbstractURLStrategy.getXmlrpcURL
    //#PreviewURLStrategy.java:: end of method: org.apache.roller.weblogger.business.PreviewURLStrategy.org.apache.roller.weblogger.business.PreviewURLStrategy__static_init
    //#PreviewURLStrategy.java:: end of class: org.apache.roller.weblogger.business.PreviewURLStrategy
