//# 3 errors, 547 messages
//#
/*
    //#WeblogSharedTheme.java:1:1: class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
 * 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.themes;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.FileManager;
import org.apache.roller.weblogger.business.FileNotFoundException;
import org.apache.roller.weblogger.business.FilePathException;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.UserManager;
import org.apache.roller.weblogger.pojos.ThemeResource;
import org.apache.roller.weblogger.pojos.ThemeTemplate;
import org.apache.roller.weblogger.pojos.WeblogTheme;
import org.apache.roller.weblogger.pojos.Weblog;


/**
 * A WeblogTheme shared by many weblogs and backed by a SharedTheme.
 */
public class WeblogSharedTheme extends WeblogTheme {
    
    private static Log log = LogFactory.getLog(WeblogSharedTheme.class);
    //#WeblogSharedTheme.java:46: method: org.apache.roller.weblogger.business.themes.WeblogSharedTheme.org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init
    //#WeblogSharedTheme.java:46: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Descendant_Table[org/apache/roller/weblogger/business/themes/WeblogSharedTheme]
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getDefaultTemplate()Lorg/apache/roller/weblogger/pojos/ThemeTemplate;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getDescription()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getId()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getLastModified()Ljava/util/Date;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getName()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getResource(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeResource;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getStylesheet()Lorg/apache/roller/weblogger/pojos/ThemeTemplate;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getTemplateByAction(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeTemplate;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getTemplateByLink(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeTemplate;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getTemplateByName(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeTemplate;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getTemplates()Ljava/util/List;
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.isEnabled()Z
    //#output(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): log
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Descendant_Table[org/apache/roller/weblogger/business/themes/WeblogSharedTheme] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getDefaultTemplate()Lorg/apache/roller/weblogger/pojos/ThemeTemplate; == &getDefaultTemplate
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getDescription()Ljava/lang/String; == &getDescription
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getId()Ljava/lang/String; == &getId
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getLastModified()Ljava/util/Date; == &getLastModified
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getName()Ljava/lang/String; == &getName
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getResource(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeResource; == &getResource
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getStylesheet()Lorg/apache/roller/weblogger/pojos/ThemeTemplate; == &getStylesheet
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getTemplateByAction(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeTemplate; == &getTemplateByAction
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getTemplateByLink(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeTemplate; == &getTemplateByLink
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getTemplateByName(Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeTemplate; == &getTemplateByName
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.getTemplates()Ljava/util/List; == &getTemplates
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): __Dispatch_Table.isEnabled()Z == &isEnabled
    //#post(org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init): init'ed(log)
    //#WeblogSharedTheme.java:46: end of method: org.apache.roller.weblogger.business.themes.WeblogSharedTheme.org.apache.roller.weblogger.business.themes.WeblogSharedTheme__static_init
    
    private SharedTheme theme = null;
    
    
    public WeblogSharedTheme(Weblog weblog, SharedTheme theme) {
        super(weblog);
    //#WeblogSharedTheme.java:52: method: void org.apache.roller.weblogger.business.themes.WeblogSharedTheme.org.apache.roller.weblogger.business.themes.WeblogSharedTheme(Weblog, SharedTheme)
    //#WeblogSharedTheme.java:52: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogTheme(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: void org.apache.roller.weblogger.business.themes.WeblogSharedTheme(Weblog, SharedTheme)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogTheme(Weblog)
    //#input(void org.apache.roller.weblogger.business.themes.WeblogSharedTheme(Weblog, SharedTheme)): theme
    //#input(void org.apache.roller.weblogger.business.themes.WeblogSharedTheme(Weblog, SharedTheme)): this
    //#input(void org.apache.roller.weblogger.business.themes.WeblogSharedTheme(Weblog, SharedTheme)): weblog
    //#output(void org.apache.roller.weblogger.business.themes.WeblogSharedTheme(Weblog, SharedTheme)): this.theme
    //#post(void org.apache.roller.weblogger.business.themes.WeblogSharedTheme(Weblog, SharedTheme)): this.theme == theme
    //#post(void org.apache.roller.weblogger.business.themes.WeblogSharedTheme(Weblog, SharedTheme)): init'ed(this.theme)
        this.theme = theme;
    }
    //#WeblogSharedTheme.java:54: end of method: void org.apache.roller.weblogger.business.themes.WeblogSharedTheme.org.apache.roller.weblogger.business.themes.WeblogSharedTheme(Weblog, SharedTheme)
    
    
    public String getId() {
        return this.theme.getId();
    //#WeblogSharedTheme.java:58: method: String org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getId()
    //#WeblogSharedTheme.java:58: Warning: suspicious precondition
    //#    the precondition for this.theme.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: String getId()
    //#    suspicious precondition index: [3]
    //#input(String getId()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedThemeFromDir]
    //#input(String getId()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedTheme]
    //#input(String getId()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[others]
    //#input(String getId()): org/apache/roller/weblogger/business/themes/SharedTheme.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getId()): org/apache/roller/weblogger/business/themes/SharedThemeFromDir.__Dispatch_Table.getId()Ljava/lang/String;
    //#input(String getId()): this
    //#input(String getId()): this.theme
    //#input(String getId()): this.theme.__Tag
    //#input(String getId()): this.theme.id
    //#output(String getId()): return_value
    //#pre[2] (String getId()): this.theme != null
    //#pre[3] (String getId()): this.theme.__Tag in {org/apache/roller/weblogger/business/themes/SharedTheme, org/apache/roller/weblogger/business/themes/SharedThemeFromDir}
    //#pre[4] (String getId()): init'ed(this.theme.id)
    //#post(String getId()): return_value == this.theme.id
    //#post(String getId()): init'ed(return_value)
    //#WeblogSharedTheme.java:58: end of method: String org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getId()
    }
    
    public String getName() {
        return this.theme.getName();
    //#WeblogSharedTheme.java:62: method: String org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getName()
    //#WeblogSharedTheme.java:62: Warning: suspicious precondition
    //#    the precondition for this.theme.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: String getName()
    //#    suspicious precondition index: [3]
    //#input(String getName()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedThemeFromDir]
    //#input(String getName()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedTheme]
    //#input(String getName()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[others]
    //#input(String getName()): org/apache/roller/weblogger/business/themes/SharedTheme.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(String getName()): org/apache/roller/weblogger/business/themes/SharedThemeFromDir.__Dispatch_Table.getName()Ljava/lang/String;
    //#input(String getName()): this
    //#input(String getName()): this.theme
    //#input(String getName()): this.theme.__Tag
    //#input(String getName()): this.theme.name
    //#output(String getName()): return_value
    //#pre[2] (String getName()): this.theme != null
    //#pre[3] (String getName()): this.theme.__Tag in {org/apache/roller/weblogger/business/themes/SharedTheme, org/apache/roller/weblogger/business/themes/SharedThemeFromDir}
    //#pre[4] (String getName()): init'ed(this.theme.name)
    //#post(String getName()): return_value == this.theme.name
    //#post(String getName()): init'ed(return_value)
    //#WeblogSharedTheme.java:62: end of method: String org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getName()
    }
    
    public String getDescription() {
        return this.theme.getDescription();
    //#WeblogSharedTheme.java:66: method: String org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getDescription()
    //#WeblogSharedTheme.java:66: Warning: suspicious precondition
    //#    the precondition for this.theme.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: String getDescription()
    //#    suspicious precondition index: [3]
    //#input(String getDescription()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedThemeFromDir]
    //#input(String getDescription()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedTheme]
    //#input(String getDescription()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[others]
    //#input(String getDescription()): org/apache/roller/weblogger/business/themes/SharedTheme.__Dispatch_Table.getDescription()Ljava/lang/String;
    //#input(String getDescription()): org/apache/roller/weblogger/business/themes/SharedThemeFromDir.__Dispatch_Table.getDescription()Ljava/lang/String;
    //#input(String getDescription()): this
    //#input(String getDescription()): this.theme
    //#input(String getDescription()): this.theme.__Tag
    //#input(String getDescription()): this.theme.description
    //#output(String getDescription()): return_value
    //#pre[2] (String getDescription()): this.theme != null
    //#pre[3] (String getDescription()): this.theme.__Tag in {org/apache/roller/weblogger/business/themes/SharedTheme, org/apache/roller/weblogger/business/themes/SharedThemeFromDir}
    //#pre[4] (String getDescription()): init'ed(this.theme.description)
    //#post(String getDescription()): return_value == this.theme.description
    //#post(String getDescription()): init'ed(return_value)
    //#WeblogSharedTheme.java:66: end of method: String org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getDescription()
    }
    
    public Date getLastModified() {
        return this.theme.getLastModified();
    //#WeblogSharedTheme.java:70: method: Date org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getLastModified()
    //#WeblogSharedTheme.java:70: Warning: suspicious precondition
    //#    the precondition for this.theme.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: Date getLastModified()
    //#    suspicious precondition index: [3]
    //#input(Date getLastModified()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedThemeFromDir]
    //#input(Date getLastModified()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedTheme]
    //#input(Date getLastModified()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[others]
    //#input(Date getLastModified()): org/apache/roller/weblogger/business/themes/SharedTheme.__Dispatch_Table.getLastModified()Ljava/util/Date;
    //#input(Date getLastModified()): org/apache/roller/weblogger/business/themes/SharedThemeFromDir.__Dispatch_Table.getLastModified()Ljava/util/Date;
    //#input(Date getLastModified()): this
    //#input(Date getLastModified()): this.theme
    //#input(Date getLastModified()): this.theme.__Tag
    //#input(Date getLastModified()): this.theme.lastModified
    //#output(Date getLastModified()): return_value
    //#pre[2] (Date getLastModified()): this.theme != null
    //#pre[3] (Date getLastModified()): this.theme.__Tag in {org/apache/roller/weblogger/business/themes/SharedTheme, org/apache/roller/weblogger/business/themes/SharedThemeFromDir}
    //#pre[4] (Date getLastModified()): init'ed(this.theme.lastModified)
    //#post(Date getLastModified()): return_value == this.theme.lastModified
    //#post(Date getLastModified()): init'ed(return_value)
    //#WeblogSharedTheme.java:70: end of method: Date org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getLastModified()
    }
    
    public boolean isEnabled() {
        return this.theme.isEnabled();
    //#WeblogSharedTheme.java:74: method: bool org.apache.roller.weblogger.business.themes.WeblogSharedTheme.isEnabled()
    //#WeblogSharedTheme.java:74: Warning: suspicious precondition
    //#    the precondition for this.theme.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: bool isEnabled()
    //#    suspicious precondition index: [3]
    //#input(bool isEnabled()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedThemeFromDir]
    //#input(bool isEnabled()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[org/apache/roller/weblogger/business/themes/SharedTheme]
    //#input(bool isEnabled()): org/apache/roller/weblogger/business/themes/SharedTheme.__Descendant_Table[others]
    //#input(bool isEnabled()): org/apache/roller/weblogger/business/themes/SharedTheme.__Dispatch_Table.isEnabled()Z
    //#input(bool isEnabled()): org/apache/roller/weblogger/business/themes/SharedThemeFromDir.__Dispatch_Table.isEnabled()Z
    //#input(bool isEnabled()): this
    //#input(bool isEnabled()): this.theme
    //#input(bool isEnabled()): this.theme.__Tag
    //#input(bool isEnabled()): this.theme.enabled
    //#output(bool isEnabled()): return_value
    //#pre[2] (bool isEnabled()): this.theme != null
    //#pre[3] (bool isEnabled()): this.theme.__Tag in {org/apache/roller/weblogger/business/themes/SharedTheme, org/apache/roller/weblogger/business/themes/SharedThemeFromDir}
    //#pre[4] (bool isEnabled()): init'ed(this.theme.enabled)
    //#post(bool isEnabled()): return_value == this.theme.enabled
    //#post(bool isEnabled()): init'ed(return_value)
    //#WeblogSharedTheme.java:74: end of method: bool org.apache.roller.weblogger.business.themes.WeblogSharedTheme.isEnabled()
    }
    
    
    /**
     * Get the collection of all templates associated with this Theme.
     */
    public List getTemplates() throws WebloggerException {
        
        Map pages = new TreeMap();
    //#WeblogSharedTheme.java:83: method: List org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getTemplates()
    //#WeblogSharedTheme.java:83: 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.themes.WeblogSharedTheme
    //#    method: List getTemplates()
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(List getTemplates()): log
    //#input(List getTemplates()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(List getTemplates()): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.getPages(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#input(List getTemplates()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.__Tag
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.__Tag
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.emf
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.threadLocalEntityManager
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(List getTemplates()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(List getTemplates()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(List getTemplates()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(List getTemplates()): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getPages(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/util/List;
    //#input(List getTemplates()): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(List getTemplates()): this
    //#input(List getTemplates()): this.theme
    //#input(List getTemplates()): this.weblog
    //#output(List getTemplates()): new ArrayList(getTemplates#2) num objects
    //#output(List getTemplates()): return_value
    //#new obj(List getTemplates()): new ArrayList(getTemplates#2)
    //#pre[1] (List getTemplates()): (soft) log != null
    //#pre[2] (List getTemplates()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (List getTemplates()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[4] (List getTemplates()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[6] (List getTemplates()): (soft) this.theme != null
    //#pre[7] (List getTemplates()): (soft) this.weblog != null
    //#presumption(List getTemplates()): getWeblogger(...).__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#presumption(List getTemplates()): getWeblogger(...).userManager != null
    //#presumption(List getTemplates()): java.util.Iterator:next(...)@105 != null
    //#presumption(List getTemplates()): java.util.Iterator:next(...)@91 != null
    //#presumption(List getTemplates()): javax.persistence.Query:getResultList(...)@964 != null
    //#presumption(List getTemplates()): org.apache.roller.weblogger.business.themes.SharedTheme:getTemplates(...)@103 != null
    //#presumption(List getTemplates()): userMgr.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#presumption(List getTemplates()): userMgr.strategy != null
    //#presumption(List getTemplates()): userMgr.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#presumption(List getTemplates()): userMgr.strategy.emf != null
    //#presumption(List getTemplates()): userMgr.strategy.threadLocalEntityManager != null
    //#post(List getTemplates()): return_value == &new ArrayList(getTemplates#2)
    //#post(List getTemplates()): new ArrayList(getTemplates#2) num objects == 1
    //#unanalyzed(List getTemplates()): Effects-of-calling:getWeblogger
    //#unanalyzed(List getTemplates()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(List getTemplates()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(List getTemplates()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(List getTemplates()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(List getTemplates()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(List getTemplates()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(List getTemplates()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(List getTemplates()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(List getTemplates()): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(List getTemplates()): Effects-of-calling:javax.persistence.Query:getResultList
        
        // first get the pages from the db
        try {
            ThemeTemplate template = null;
    //#WeblogSharedTheme.java:87: Warning: unused assignment
    //#    unused assignment into template
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: List getTemplates()
    //#    Attribs:  Uncertain
            UserManager userMgr = WebloggerFactory.getWeblogger().getUserManager();
            Iterator dbPages = userMgr.getPages(this.weblog).iterator();
            while(dbPages.hasNext()) {
                template = (ThemeTemplate) dbPages.next();
                pages.put(template.getName(), template);
    //#WeblogSharedTheme.java:92: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeTemplate:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: List getTemplates()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeTemplate:getName()
            }
        } catch(Exception e) {
            // db error
            log.error(e);
    //#WeblogSharedTheme.java:96: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: List getTemplates()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
        }
        
        
        // now get theme pages if needed and put them in place of db pages
        try {
            ThemeTemplate template = null;
    //#WeblogSharedTheme.java:102: Warning: unused assignment
    //#    unused assignment into template
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: List getTemplates()
    //#    Attribs:  Uncertain
            Iterator themePages = this.theme.getTemplates().iterator();
    //#WeblogSharedTheme.java:103: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.business.themes.SharedTheme:getTemplates()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: List getTemplates()
    //#    unanalyzed callee: List org.apache.roller.weblogger.business.themes.SharedTheme:getTemplates()
            while(themePages.hasNext()) {
                template = (ThemeTemplate) themePages.next();
                
                // note that this will put theme pages over custom
                // pages in the pages list, which is what we want
                pages.put(template.getName(), template);
    //#WeblogSharedTheme.java:109: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeTemplate:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: List getTemplates()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeTemplate:getName()
            }
        } catch(Exception e) {
            // how??
            log.error(e);
    //#WeblogSharedTheme.java:113: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: List getTemplates()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
        }
        
        return new ArrayList(pages.values());
    //#WeblogSharedTheme.java:116: end of method: List org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getTemplates()
    }
    
    
    /**
     * Lookup the stylesheet template for this theme.
     * Returns null if no stylesheet can be found.
     */
    public ThemeTemplate getStylesheet() throws WebloggerException {
        // stylesheet is handled differently than other templates because with
        // the stylesheet we want to return the weblog custom version if it
        // exists, otherwise we return the shared theme version
        
        // load from theme first to see if we even support a stylesheet
        ThemeTemplate stylesheet = this.theme.getStylesheet();
    //#WeblogSharedTheme.java:130: method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getStylesheet()
    //#WeblogSharedTheme.java:130: Warning: method not available
    //#    -- call on ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getStylesheet()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getStylesheet()
    //#    unanalyzed callee: ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getStylesheet()
    //#WeblogSharedTheme.java:130: 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.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getStylesheet()
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.getPageByLink(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.__Tag
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.__Tag
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.emf
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.threadLocalEntityManager
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getPageByLink(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(ThemeTemplate getStylesheet()): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(ThemeTemplate getStylesheet()): this
    //#input(ThemeTemplate getStylesheet()): this.theme
    //#input(ThemeTemplate getStylesheet()): this.weblog
    //#output(ThemeTemplate getStylesheet()): return_value
    //#pre[5] (ThemeTemplate getStylesheet()): this.theme != null
    //#pre[1] (ThemeTemplate getStylesheet()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[2] (ThemeTemplate getStylesheet()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[3] (ThemeTemplate getStylesheet()): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[6] (ThemeTemplate getStylesheet()): (soft) this.weblog != null
    //#presumption(ThemeTemplate getStylesheet()): getWeblogger(...).__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#presumption(ThemeTemplate getStylesheet()): getWeblogger(...).userManager != null
    //#presumption(ThemeTemplate getStylesheet()): org.apache.roller.weblogger.pojos.ThemeTemplate:getLink(...)@134 != null
    //#presumption(ThemeTemplate getStylesheet()): umgr.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#presumption(ThemeTemplate getStylesheet()): umgr.strategy != null
    //#presumption(ThemeTemplate getStylesheet()): umgr.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#presumption(ThemeTemplate getStylesheet()): umgr.strategy.emf != null
    //#presumption(ThemeTemplate getStylesheet()): umgr.strategy.threadLocalEntityManager != null
    //#post(ThemeTemplate getStylesheet()): init'ed(return_value)
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:getWeblogger
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(ThemeTemplate getStylesheet()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(ThemeTemplate getStylesheet()): org.apache.roller.weblogger.business.themes.SharedTheme:getStylesheet(...)@130: Addr_Set{null}, Inverse{null}
        if(stylesheet != null) {
            // now try getting custom version from weblog
            UserManager umgr = WebloggerFactory.getWeblogger().getUserManager();
            ThemeTemplate override = umgr.getPageByLink(this.weblog, stylesheet.getLink());
    //#WeblogSharedTheme.java:134: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeTemplate:getLink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getStylesheet()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeTemplate:getLink()
            if(override != null) {
                stylesheet = override;
            }
        }
        
        return stylesheet;
    //#WeblogSharedTheme.java:140: end of method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getStylesheet()
    }
    
    
    /**
     * Lookup the default template.
     */
    public ThemeTemplate getDefaultTemplate() throws WebloggerException {
        return this.theme.getDefaultTemplate();
    //#WeblogSharedTheme.java:148: method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getDefaultTemplate()
    //#WeblogSharedTheme.java:148: Warning: method not available
    //#    -- call on ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getDefaultTemplate()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getDefaultTemplate()
    //#    unanalyzed callee: ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getDefaultTemplate()
    //#input(ThemeTemplate getDefaultTemplate()): this
    //#input(ThemeTemplate getDefaultTemplate()): this.theme
    //#output(ThemeTemplate getDefaultTemplate()): return_value
    //#pre[2] (ThemeTemplate getDefaultTemplate()): this.theme != null
    //#post(ThemeTemplate getDefaultTemplate()): init'ed(return_value)
    //#WeblogSharedTheme.java:148: end of method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getDefaultTemplate()
    }
    
    
    /**
     * Lookup the specified template by action.
     * Returns null if the template cannot be found.
     */
    public ThemeTemplate getTemplateByAction(String action) throws WebloggerException {
        
        if(action == null)
    //#WeblogSharedTheme.java:158: method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getTemplateByAction(String)
    //#input(ThemeTemplate getTemplateByAction(String)): action
    //#input(ThemeTemplate getTemplateByAction(String)): this
    //#input(ThemeTemplate getTemplateByAction(String)): this.theme
    //#output(ThemeTemplate getTemplateByAction(String)): return_value
    //#pre[3] (ThemeTemplate getTemplateByAction(String)): (soft) this.theme != null
    //#post(ThemeTemplate getTemplateByAction(String)): init'ed(return_value)
    //#test_vector(ThemeTemplate getTemplateByAction(String)): action: Inverse{null}, Addr_Set{null}
            return null;
        
        // NOTE: we specifically do *NOT* return templates by action from the
        // weblog's custom templates if the weblog is using a theme because we
        // don't want old templates to take effect when using a specific theme
        return this.theme.getTemplateByAction(action);
    //#WeblogSharedTheme.java:164: Warning: method not available
    //#    -- call on ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getTemplateByAction(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getTemplateByAction(String)
    //#    unanalyzed callee: ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getTemplateByAction(String)
    //#WeblogSharedTheme.java:164: end of method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getTemplateByAction(String)
    }
    
    
    /**
     * Lookup the specified template by name.
     * Returns null if the template cannot be found.
     */
    public ThemeTemplate getTemplateByName(String name) throws WebloggerException {
        
        if(name == null)
    //#WeblogSharedTheme.java:174: method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getTemplateByName(String)
    //#WeblogSharedTheme.java:174: 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.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getTemplateByName(String)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(ThemeTemplate getTemplateByName(String)): __Descendant_Table[org/apache/roller/weblogger/business/themes/WeblogSharedTheme]
    //#input(ThemeTemplate getTemplateByName(String)): __Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByName(String)): __Dispatch_Table.getStylesheet()Lorg/apache/roller/weblogger/pojos/ThemeTemplate;
    //#input(ThemeTemplate getTemplateByName(String)): name
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.getPageByLink(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.getPageByName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.__Tag
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.__Tag
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.threadLocalEntityManager
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getPageByLink(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getPageByName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(ThemeTemplate getTemplateByName(String)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(ThemeTemplate getTemplateByName(String)): this
    //#input(ThemeTemplate getTemplateByName(String)): this.__Tag
    //#input(ThemeTemplate getTemplateByName(String)): this.theme
    //#input(ThemeTemplate getTemplateByName(String)): this.weblog
    //#output(ThemeTemplate getTemplateByName(String)): return_value
    //#pre[2] (ThemeTemplate getTemplateByName(String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (ThemeTemplate getTemplateByName(String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[4] (ThemeTemplate getTemplateByName(String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[13] (ThemeTemplate getTemplateByName(String)): (soft) this.__Tag == org/apache/roller/weblogger/business/themes/WeblogSharedTheme
    //#pre[14] (ThemeTemplate getTemplateByName(String)): (soft) this.theme != null
    //#pre[15] (ThemeTemplate getTemplateByName(String)): (soft) this.weblog != null
    //#presumption(ThemeTemplate getTemplateByName(String)): getWeblogger(...).__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#presumption(ThemeTemplate getTemplateByName(String)): getWeblogger(...).userManager != null
    //#presumption(ThemeTemplate getTemplateByName(String)): userMgr.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#presumption(ThemeTemplate getTemplateByName(String)): userMgr.strategy != null
    //#presumption(ThemeTemplate getTemplateByName(String)): userMgr.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#presumption(ThemeTemplate getTemplateByName(String)): userMgr.strategy.emf != null
    //#presumption(ThemeTemplate getTemplateByName(String)): userMgr.strategy.threadLocalEntityManager != null
    //#post(ThemeTemplate getTemplateByName(String)): init'ed(return_value)
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:getWeblogger
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:getUserManager
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeTemplate:getLink
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:getPageByLink
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:org.apache.roller.weblogger.business.themes.SharedTheme:getStylesheet
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(ThemeTemplate getTemplateByName(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(ThemeTemplate getTemplateByName(String)): name: Inverse{null}, Addr_Set{null}
    //#test_vector(ThemeTemplate getTemplateByName(String)): java.lang.String:equals(...)@181: {0}, {1}
    //#test_vector(ThemeTemplate getTemplateByName(String)): org.apache.roller.weblogger.business.themes.SharedTheme:getTemplateByName(...)@187: Inverse{null}, Addr_Set{null}
            return null;
        
        ThemeTemplate template = null;
    //#WeblogSharedTheme.java:177: Warning: unused assignment
    //#    unused assignment into template
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getTemplateByName(String)
    //#    Attribs:  Uncertain
        
        // if name refers to the stylesheet then return result of getStylesheet()
        ThemeTemplate stylesheet = getStylesheet();
        if(stylesheet != null && name.equals(stylesheet.getName())) {
    //#WeblogSharedTheme.java:181: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeTemplate:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getTemplateByName(String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeTemplate:getName()
            return stylesheet;
        }
        
        // first check if this user has selected a theme
        // if so then return the proper theme template
        template = this.theme.getTemplateByName(name);
    //#WeblogSharedTheme.java:187: Warning: method not available
    //#    -- call on ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getTemplateByName(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getTemplateByName(String)
    //#    unanalyzed callee: ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getTemplateByName(String)
        
        // if we didn't get the Template from a theme then look in the db
        if(template == null) {
            UserManager userMgr = WebloggerFactory.getWeblogger().getUserManager();
            template = userMgr.getPageByName(this.weblog, name);
        }
        
        return template;
    //#WeblogSharedTheme.java:195: end of method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getTemplateByName(String)
    }
    
    
    /**
     * Lookup the specified template by link.
     * Returns null if the template cannot be found.
     */
    public ThemeTemplate getTemplateByLink(String link) throws WebloggerException {
        
        if(link == null)
    //#WeblogSharedTheme.java:205: method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getTemplateByLink(String)
    //#WeblogSharedTheme.java:205: 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.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getTemplateByLink(String)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(ThemeTemplate getTemplateByLink(String)): __Descendant_Table[org/apache/roller/weblogger/business/themes/WeblogSharedTheme]
    //#input(ThemeTemplate getTemplateByLink(String)): __Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByLink(String)): __Dispatch_Table.getStylesheet()Lorg/apache/roller/weblogger/pojos/ThemeTemplate;
    //#input(ThemeTemplate getTemplateByLink(String)): link
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/UserManager]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/UserManager.__Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/UserManager.__Dispatch_Table.getPageByLink(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.__Tag
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.__Tag
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.userManager.strategy.threadLocalEntityManager
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Descendant_Table[others]
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.__Dispatch_Table.getNamedQuery(Ljava/lang/String;)Ljavax/persistence/Query;
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.javax.persistence.FlushModeType.COMMIT
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.__Dispatch_Table.getPageByLink(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/WeblogTemplate;
    //#input(ThemeTemplate getTemplateByLink(String)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getUserManager()Lorg/apache/roller/weblogger/business/UserManager;
    //#input(ThemeTemplate getTemplateByLink(String)): this
    //#input(ThemeTemplate getTemplateByLink(String)): this.__Tag
    //#input(ThemeTemplate getTemplateByLink(String)): this.theme
    //#input(ThemeTemplate getTemplateByLink(String)): this.weblog
    //#output(ThemeTemplate getTemplateByLink(String)): return_value
    //#pre[2] (ThemeTemplate getTemplateByLink(String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[3] (ThemeTemplate getTemplateByLink(String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[4] (ThemeTemplate getTemplateByLink(String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[13] (ThemeTemplate getTemplateByLink(String)): (soft) this.__Tag == org/apache/roller/weblogger/business/themes/WeblogSharedTheme
    //#pre[14] (ThemeTemplate getTemplateByLink(String)): (soft) this.theme != null
    //#pre[15] (ThemeTemplate getTemplateByLink(String)): (soft) this.weblog != null
    //#presumption(ThemeTemplate getTemplateByLink(String)): getWeblogger(...).__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#presumption(ThemeTemplate getTemplateByLink(String)): getWeblogger(...).userManager != null
    //#presumption(ThemeTemplate getTemplateByLink(String)): userMgr.__Tag in {org/apache/roller/weblogger/business/UserManager, org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl}
    //#presumption(ThemeTemplate getTemplateByLink(String)): userMgr.strategy != null
    //#presumption(ThemeTemplate getTemplateByLink(String)): userMgr.strategy.__Tag == org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy
    //#presumption(ThemeTemplate getTemplateByLink(String)): userMgr.strategy.emf != null
    //#presumption(ThemeTemplate getTemplateByLink(String)): userMgr.strategy.threadLocalEntityManager != null
    //#post(ThemeTemplate getTemplateByLink(String)): init'ed(return_value)
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:getWeblogger
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:getUserManager
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeTemplate:getLink
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:getPageByLink
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:org.apache.roller.weblogger.business.themes.SharedTheme:getStylesheet
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:java.lang.ThreadLocal:get
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:javax.persistence.EntityManagerFactory:createEntityManager
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:java.lang.ThreadLocal:set
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:javax.persistence.EntityManager:getTransaction
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:javax.persistence.EntityTransaction:isActive
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:javax.persistence.EntityTransaction:begin
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:javax.persistence.EntityManager:createNamedQuery
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:javax.persistence.Query:setFlushMode
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:javax.persistence.Query:setParameter
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:javax.persistence.Query:getSingleResult
    //#unanalyzed(ThemeTemplate getTemplateByLink(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#test_vector(ThemeTemplate getTemplateByLink(String)): link: Inverse{null}, Addr_Set{null}
    //#test_vector(ThemeTemplate getTemplateByLink(String)): java.lang.String:equals(...)@212: {0}, {1}
    //#test_vector(ThemeTemplate getTemplateByLink(String)): org.apache.roller.weblogger.business.themes.SharedTheme:getTemplateByLink(...)@218: Inverse{null}, Addr_Set{null}
            return null;
        
        ThemeTemplate template = null;
    //#WeblogSharedTheme.java:208: Warning: unused assignment
    //#    unused assignment into template
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getTemplateByLink(String)
    //#    Attribs:  Uncertain
        
        // if name refers to the stylesheet then return result of getStylesheet()
        ThemeTemplate stylesheet = getStylesheet();
        if(stylesheet != null && link.equals(stylesheet.getLink())) {
    //#WeblogSharedTheme.java:212: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeTemplate:getLink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getTemplateByLink(String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeTemplate:getLink()
            return stylesheet;
        }
        
        // first check if this user has selected a theme
        // if so then return the proper theme template
        template = this.theme.getTemplateByLink(link);
    //#WeblogSharedTheme.java:218: Warning: method not available
    //#    -- call on ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getTemplateByLink(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeTemplate getTemplateByLink(String)
    //#    unanalyzed callee: ThemeTemplate org.apache.roller.weblogger.business.themes.SharedTheme:getTemplateByLink(String)
        
        // if we didn't get the Template from a theme then look in the db
        if(template == null) {
            UserManager userMgr = WebloggerFactory.getWeblogger().getUserManager();
            template = userMgr.getPageByLink(this.weblog, link);
        }
        
        return template;
    //#WeblogSharedTheme.java:226: end of method: ThemeTemplate org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getTemplateByLink(String)
    }
    
    
    /**
     * Lookup the specified resource by path.
     * Returns null if the resource cannot be found.
     */
    public ThemeResource getResource(String path) {
        
        if(path == null)
    //#WeblogSharedTheme.java:236: method: ThemeResource org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getResource(String)
    //#WeblogSharedTheme.java:236: 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.themes.WeblogSharedTheme
    //#    method: ThemeResource getResource(String)
    //#    suspicious precondition index: [2]
    //#    Attribs:  Soft
    //#input(ThemeResource getResource(String)): "Invalid path ["._tainted
    //#input(ThemeResource getResource(String)): "], "._tainted
    //#input(ThemeResource getResource(String)): "cannot read from path."._tainted
    //#input(ThemeResource getResource(String)): "directory doesn't exist."._tainted
    //#input(ThemeResource getResource(String)): "path is a directory."._tainted
    //#input(ThemeResource getResource(String)): "trying to get outside uploads dir."._tainted
    //#input(ThemeResource getResource(String)): "trying to use nested directories."._tainted
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/FileManager.__Descendant_Table[org/apache/roller/weblogger/business/FileManagerImpl]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/FileManager.__Descendant_Table[org/apache/roller/weblogger/business/FileManager]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/FileManager.__Descendant_Table[others]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/FileManager.__Dispatch_Table.getFile(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeResource;
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/FileManagerImpl.__Dispatch_Table.getFile(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/ThemeResource;
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/FileManagerImpl.java.io.File.separator
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/FileManagerImpl.java.io.File.separator._tainted
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/FileManagerImpl.java.io.File.separatorChar
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getFileManager()Lorg/apache/roller/weblogger/business/FileManager;
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.__Tag
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.fileManager
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.fileManager.__Tag
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance.fileManager.upload_dir._tainted
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getFileManager()Lorg/apache/roller/weblogger/business/FileManager;
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(ThemeResource getResource(String)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getFileManager()Lorg/apache/roller/weblogger/business/FileManager;
    //#input(ThemeResource getResource(String)): path
    //#input(ThemeResource getResource(String)): path._tainted
    //#input(ThemeResource getResource(String)): this
    //#input(ThemeResource getResource(String)): this.theme
    //#output(ThemeResource getResource(String)): new File(getRealFile#6) num objects
    //#output(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3) num objects
    //#output(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).__Tag
    //#output(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).relativePath
    //#output(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).resourceFile
    //#output(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).this$0
    //#output(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).weblog
    //#output(ThemeResource getResource(String)): return_value
    //#new obj(ThemeResource getResource(String)): new File(getRealFile#6)
    //#new obj(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3)
    //#pre[1] (ThemeResource getResource(String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
    //#pre[2] (ThemeResource getResource(String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[3] (ThemeResource getResource(String)): (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
    //#pre[10] (ThemeResource getResource(String)): (soft) this.theme != null
    //#presumption(ThemeResource getResource(String)): fileMgr.__Tag in {org/apache/roller/weblogger/business/FileManager, org/apache/roller/weblogger/business/FileManagerImpl}
    //#presumption(ThemeResource getResource(String)): getWeblogger(...).__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#post(ThemeResource getResource(String)): init'ed(return_value)
    //#post(ThemeResource getResource(String)): new File(getRealFile#6) num objects <= 1
    //#post(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3) num objects <= 1
    //#post(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).__Tag == org/apache/roller/weblogger/business/FileManagerImpl$WeblogResourceFile
    //#post(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).relativePath == path
    //#post(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).relativePath != null
    //#post(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).resourceFile == &new File(getRealFile#6)
    //#post(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).this$0 != null
    //#post(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).weblog == this.weblog
    //#post(ThemeResource getResource(String)): new FileManagerImpl$WeblogResourceFile(getFile#3).weblog != null
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:getWeblogger
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.lang.String:replace
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.io.File
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.io.File:exists
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.io.File:mkdirs
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.lang.String:lastIndexOf
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:org.apache.roller.weblogger.WebloggerException
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:org.apache.roller.RollerException
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.io.File:getAbsolutePath
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.io.File:canRead
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.io.File:getCanonicalPath
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(ThemeResource getResource(String)): Effects-of-calling:java.io.File:isDirectory
    //#test_vector(ThemeResource getResource(String)): path: Inverse{null}, Addr_Set{null}
    //#test_vector(ThemeResource getResource(String)): org.apache.roller.weblogger.business.themes.SharedTheme:getResource(...)@242: Inverse{null}, Addr_Set{null}
            return null;
        
        ThemeResource resource = null;
    //#WeblogSharedTheme.java:239: Warning: unused assignment
    //#    unused assignment into resource
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeResource getResource(String)
    //#    Attribs:  Uncertain
        
        // first check in our shared theme
        resource = this.theme.getResource(path);
    //#WeblogSharedTheme.java:242: Warning: method not available
    //#    -- call on ThemeResource org.apache.roller.weblogger.business.themes.SharedTheme:getResource(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeResource getResource(String)
    //#    unanalyzed callee: ThemeResource org.apache.roller.weblogger.business.themes.SharedTheme:getResource(String)
        
        // if we didn't find it in our theme then look in weblog uploads
        if(resource == null) {
            try {
                FileManager fileMgr = WebloggerFactory.getWeblogger().getFileManager();
                resource = fileMgr.getFile(this.weblog, path);
    //#WeblogSharedTheme.java:248: ?null dereference
    //#    fileMgr != null
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeResource getResource(String)
    //#    basic block: bb_5
    //#    assertion: fileMgr != null
    //#    VN: getWeblogger(...).fileManager
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad  Uncertain
    //#WeblogSharedTheme.java:248: ?use of default init
    //#    init'ed(this.weblog)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeResource getResource(String)
    //#    basic block: bb_5
    //#    assertion: init'ed(this.weblog)
    //#    VN: this.weblog
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#WeblogSharedTheme.java:248: ?precondition failure
    //#    org/apache/roller/weblogger/business/FileManagerImpl.getFile: weblog != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
    //#    method: ThemeResource getResource(String)
    //#    basic block: bb_5
    //#    assertion: this.weblog != null
    //#    callee: ThemeResource org/apache/roller/weblogger/business/FileManagerImpl.getFile(Weblog, String)
    //#    callee assertion: weblog != null
    //#    callee file: FileManagerImpl.java
    //#    callee precondition index: [6]
    //#    callee srcpos: 76
    //#    VN: this.weblog
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
            } catch (WebloggerException ex) {
                // ignored, resource considered not found
            }
        }
        
        return resource;
    //#WeblogSharedTheme.java:254: end of method: ThemeResource org.apache.roller.weblogger.business.themes.WeblogSharedTheme.getResource(String)
    }
    
}
    //#WeblogSharedTheme.java:: end of class: org.apache.roller.weblogger.business.themes.WeblogSharedTheme
