//# 1 errors, 162 messages
//#
/*
    //#WebloggerFactory.java:1:1: class: org.apache.roller.weblogger.business.WebloggerFactory
 * 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 org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.startup.WebloggerStartup;
import org.apache.roller.weblogger.config.WebloggerConfig;


/**
 * Provides access to the Weblogger instance and bootstraps the business tier.
 */
public final class WebloggerFactory {
    
    private static final Log log = LogFactory.getLog(WebloggerFactory.class);
    //#WebloggerFactory.java:32: method: org.apache.roller.weblogger.business.WebloggerFactory.org.apache.roller.weblogger.business.WebloggerFactory__static_init
    //#WebloggerFactory.java:32: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.WebloggerFactory
    //#    method: org.apache.roller.weblogger.business.WebloggerFactory__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.business.WebloggerFactory__static_init): __Descendant_Table[org/apache/roller/weblogger/business/WebloggerFactory]
    //#output(org.apache.roller.weblogger.business.WebloggerFactory__static_init): log
    //#output(org.apache.roller.weblogger.business.WebloggerFactory__static_init): webloggerProvider
    //#post(org.apache.roller.weblogger.business.WebloggerFactory__static_init): __Descendant_Table[org/apache/roller/weblogger/business/WebloggerFactory] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.business.WebloggerFactory__static_init): init'ed(log)
    //#post(org.apache.roller.weblogger.business.WebloggerFactory__static_init): webloggerProvider == null
    
    // our configured weblogger provider
    private static WebloggerProvider webloggerProvider = null;
    //#WebloggerFactory.java:35: end of method: org.apache.roller.weblogger.business.WebloggerFactory.org.apache.roller.weblogger.business.WebloggerFactory__static_init
    
    
    // non-instantiable
    private WebloggerFactory() {
    //#WebloggerFactory.java:39: method: void org.apache.roller.weblogger.business.WebloggerFactory.org.apache.roller.weblogger.business.WebloggerFactory()
        // hello all you beautiful people
    }
    //#WebloggerFactory.java:41: end of method: void org.apache.roller.weblogger.business.WebloggerFactory.org.apache.roller.weblogger.business.WebloggerFactory()
    
    
    /**
     * True if bootstrap process has been completed, False otherwise.
     */
    public static boolean isBootstrapped() {
        return (webloggerProvider != null);
    //#WebloggerFactory.java:48: method: bool org.apache.roller.weblogger.business.WebloggerFactory.isBootstrapped()
    //#input(bool isBootstrapped()): webloggerProvider
    //#output(bool isBootstrapped()): return_value
    //#pre[1] (bool isBootstrapped()): init'ed(webloggerProvider)
    //#post(bool isBootstrapped()): init'ed(return_value)
    //#WebloggerFactory.java:48: end of method: bool org.apache.roller.weblogger.business.WebloggerFactory.isBootstrapped()
    }
    
    
    /**
     * Accessor to the Weblogger Weblogger business tier.
     * 
     * @return Weblogger An instance of Weblogger.
     * @throws IllegalStateException If the app has not been properly bootstrapped yet.
     */
    public static final Weblogger getWeblogger() {
        if (webloggerProvider == null) {
    //#WebloggerFactory.java:59: method: Weblogger org.apache.roller.weblogger.business.WebloggerFactory.getWeblogger()
    //#WebloggerFactory.java:59: Warning: suspicious precondition
    //#    the precondition for webloggerProvider.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.WebloggerFactory
    //#    method: Weblogger getWeblogger()
    //#    suspicious precondition index: [2]
    //#input(Weblogger getWeblogger()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(Weblogger getWeblogger()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(Weblogger getWeblogger()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(Weblogger getWeblogger()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(Weblogger getWeblogger()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(Weblogger getWeblogger()): webloggerProvider
    //#input(Weblogger getWeblogger()): webloggerProvider.__Tag
    //#input(Weblogger getWeblogger()): webloggerProvider.webloggerInstance
    //#output(Weblogger getWeblogger()): return_value
    //#pre[1] (Weblogger getWeblogger()): webloggerProvider != null
    //#pre[2] (Weblogger getWeblogger()): webloggerProvider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[3] (Weblogger getWeblogger()): init'ed(webloggerProvider.webloggerInstance)
    //#post(Weblogger getWeblogger()): return_value == webloggerProvider.webloggerInstance
    //#post(Weblogger getWeblogger()): init'ed(return_value)
            throw new IllegalStateException("Roller Weblogger has not been bootstrapped yet");
        }
        
        return webloggerProvider.getWeblogger();
    //#WebloggerFactory.java:63: end of method: Weblogger org.apache.roller.weblogger.business.WebloggerFactory.getWeblogger()
    }
    
    
    /**
     * Bootstrap the Roller Weblogger business tier, uses default WebloggerProvider.
     *
     * Bootstrapping the application effectively instantiates all the necessary
     * pieces of the business tier and wires them together so that the app is 
     * ready to run.
     *
     * @throws IllegalStateException If the app has not been properly prepared yet.
     * @throws BootstrapException If an error happens during the bootstrap process.
     */
    public static final void bootstrap() throws BootstrapException {
        
        // if the app hasn't been properly started so far then bail
        if (!WebloggerStartup.isPrepared()) {
    //#WebloggerFactory.java:80: method: void org.apache.roller.weblogger.business.WebloggerFactory.bootstrap()
    //#input(void bootstrap()): "   Revision: "._tainted
    //#input(void bootstrap()): "   Version: "._tainted
    //#input(void bootstrap()): "="._tainted
    //#input(void bootstrap()): "Error instantiating default provider: "._tainted
    //#input(void bootstrap()): "Fetching property ["._tainted
    //#input(void bootstrap()): "Weblogger Provider = "._tainted
    //#input(void bootstrap()): "]"._tainted
    //#input(void bootstrap()): "weblogger.provider.class"._tainted
    //#input(void bootstrap()): log
    //#input(void bootstrap()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.bootstrap()V
    //#input(void bootstrap()): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void bootstrap()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void bootstrap()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void bootstrap()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void bootstrap()): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void bootstrap()): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getRevision()Ljava/lang/String;
    //#input(void bootstrap()): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getVersion()Ljava/lang/String;
    //#input(void bootstrap()): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getRevision()Ljava/lang/String;
    //#input(void bootstrap()): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getVersion()Ljava/lang/String;
    //#input(void bootstrap()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void bootstrap()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void bootstrap()): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void bootstrap()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.bootstrap()V
    //#input(void bootstrap()): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void bootstrap()): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getRevision()Ljava/lang/String;
    //#input(void bootstrap()): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getVersion()Ljava/lang/String;
    //#input(void bootstrap()): org/apache/roller/weblogger/business/startup/WebloggerStartup.prepared
    //#input(void bootstrap()): org/apache/roller/weblogger/config/WebloggerConfig.config
    //#input(void bootstrap()): org/apache/roller/weblogger/config/WebloggerConfig.log
    //#input(void bootstrap()): webloggerProvider.__Tag
    //#input(void bootstrap()): webloggerProvider.injector
    //#input(void bootstrap()): webloggerProvider.webloggerInstance.__Tag
    //#input(void bootstrap()): webloggerProvider.webloggerInstance.revision
    //#input(void bootstrap()): webloggerProvider.webloggerInstance.revision._tainted
    //#input(void bootstrap()): webloggerProvider.webloggerInstance.version
    //#input(void bootstrap()): webloggerProvider.webloggerInstance.version._tainted
    //#output(void bootstrap()): webloggerProvider
    //#output(void bootstrap()): webloggerProvider.webloggerInstance
    //#pre[2] (void bootstrap()): org/apache/roller/weblogger/business/startup/WebloggerStartup.prepared == 1
    //#pre[3] (void bootstrap()): org/apache/roller/weblogger/config/WebloggerConfig.config != null
    //#pre[4] (void bootstrap()): org/apache/roller/weblogger/config/WebloggerConfig.log != null
    //#presumption(void bootstrap()): defaultProvider.injector@90 != null
    //#presumption(void bootstrap()): java.lang.Class:forName(...)@89 != null
    //#presumption(void bootstrap()): java.lang.Class:newInstance(...).__Tag@90 in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#post(void bootstrap()): webloggerProvider != null
    //#post(void bootstrap()): webloggerProvider.webloggerInstance != null
    //#unanalyzed(void bootstrap()): Effects-of-calling:getWeblogger
    //#unanalyzed(void bootstrap()): Effects-of-calling:org.apache.commons.logging.Log:info
    //#unanalyzed(void bootstrap()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void bootstrap()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void bootstrap()): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(void bootstrap()): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(void bootstrap()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void bootstrap()): Effects-of-calling:com.google.inject.Injector:getInstance
    //#unanalyzed(void bootstrap()): Effects-of-calling:bootstrap
    //#unanalyzed(void bootstrap()): Effects-of-calling:getVersion
    //#unanalyzed(void bootstrap()): Effects-of-calling:getRevision
    //#unanalyzed(void bootstrap()): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void bootstrap()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void bootstrap()): Effects-of-calling:java.util.Properties:getProperty
    //#unanalyzed(void bootstrap()): Effects-of-calling:org.apache.roller.weblogger.WebloggerException
    //#unanalyzed(void bootstrap()): Effects-of-calling:org.apache.roller.RollerException
            throw new IllegalStateException("Cannot bootstrap until application has been properly prepared");
        }
        
        // lookup our default provider and instantiate it
        WebloggerProvider defaultProvider;
        String providerClassname = WebloggerConfig.getProperty("weblogger.provider.class");
        if(providerClassname != null) {
    //#WebloggerFactory.java:87: ?NullPointerException check
    //#    providerClassname != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.business.WebloggerFactory
    //#    method: void bootstrap()
    //#    basic block: Entry_BB_1
    //#    assertion: providerClassname != null
    //#    VN: getProperty(...) == null
    //#    Expected: {-Inf..0, 2..+Inf}
    //#    Bad: {1}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
            try {
                Class providerClass = Class.forName(providerClassname);
                defaultProvider = (WebloggerProvider) providerClass.newInstance();
            } catch (Exception ex) {
                throw new BootstrapException("Error instantiating default provider: "+providerClassname, ex);
            }
        } else {
            throw new NullPointerException("No provider specified in config property 'weblogger.provider.class'");
        }

        // now just bootstrap using our default provider
        bootstrap(defaultProvider);
    }
    //#WebloggerFactory.java:100: end of method: void org.apache.roller.weblogger.business.WebloggerFactory.bootstrap()
    
    
    /**
     * Bootstrap the Roller Weblogger business tier, uses specified WebloggerProvider.
     *
     * Bootstrapping the application effectively instantiates all the necessary
     * pieces of the business tier and wires them together so that the app is 
     * ready to run.
     *
     * @param provider A WebloggerProvider to use for bootstrapping.
     * @throws IllegalStateException If the app has not been properly prepared yet.
     * @throws BootstrapException If an error happens during the bootstrap process.
     */
    public static final void bootstrap(WebloggerProvider provider) 
            throws BootstrapException {
        
        // if the app hasn't been properly started so far then bail
        if (!WebloggerStartup.isPrepared()) {
    //#WebloggerFactory.java:118: method: void org.apache.roller.weblogger.business.WebloggerFactory.bootstrap(WebloggerProvider)
    //#WebloggerFactory.java:118: Warning: suspicious precondition
    //#    the precondition for provider.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.business.WebloggerFactory
    //#    method: void bootstrap(WebloggerProvider)
    //#    suspicious precondition index: [5]
    //#input(void bootstrap(WebloggerProvider)): "   Revision: "._tainted
    //#input(void bootstrap(WebloggerProvider)): "   Version: "._tainted
    //#input(void bootstrap(WebloggerProvider)): "Weblogger Provider = "._tainted
    //#input(void bootstrap(WebloggerProvider)): log
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.bootstrap()V
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/GuiceWebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerImpl]
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/Weblogger]
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl]
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/Weblogger.__Descendant_Table[others]
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getRevision()Ljava/lang/String;
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/Weblogger.__Dispatch_Table.getVersion()Ljava/lang/String;
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getRevision()Ljava/lang/String;
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/WebloggerImpl.__Dispatch_Table.getVersion()Ljava/lang/String;
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/GuiceWebloggerProvider]
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[org/apache/roller/weblogger/business/WebloggerProvider]
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/WebloggerProvider.__Descendant_Table[others]
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.bootstrap()V
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/WebloggerProvider.__Dispatch_Table.getWeblogger()Lorg/apache/roller/weblogger/business/Weblogger;
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getRevision()Ljava/lang/String;
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.__Dispatch_Table.getVersion()Ljava/lang/String;
    //#input(void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/startup/WebloggerStartup.prepared
    //#input(void bootstrap(WebloggerProvider)): provider
    //#input(void bootstrap(WebloggerProvider)): provider.__Tag
    //#input(void bootstrap(WebloggerProvider)): provider.injector
    //#input(void bootstrap(WebloggerProvider)): provider.webloggerInstance.__Tag
    //#input(void bootstrap(WebloggerProvider)): provider.webloggerInstance.revision
    //#input(void bootstrap(WebloggerProvider)): provider.webloggerInstance.revision._tainted
    //#input(void bootstrap(WebloggerProvider)): provider.webloggerInstance.version
    //#input(void bootstrap(WebloggerProvider)): provider.webloggerInstance.version._tainted
    //#input(void bootstrap(WebloggerProvider)): webloggerProvider.__Tag
    //#input(void bootstrap(WebloggerProvider)): webloggerProvider.injector
    //#input(void bootstrap(WebloggerProvider)): webloggerProvider.webloggerInstance.__Tag
    //#input(void bootstrap(WebloggerProvider)): webloggerProvider.webloggerInstance.revision
    //#input(void bootstrap(WebloggerProvider)): webloggerProvider.webloggerInstance.revision._tainted
    //#input(void bootstrap(WebloggerProvider)): webloggerProvider.webloggerInstance.version
    //#input(void bootstrap(WebloggerProvider)): webloggerProvider.webloggerInstance.version._tainted
    //#output(void bootstrap(WebloggerProvider)): provider.webloggerInstance
    //#output(void bootstrap(WebloggerProvider)): webloggerProvider
    //#output(void bootstrap(WebloggerProvider)): webloggerProvider.webloggerInstance
    //#pre[3] (void bootstrap(WebloggerProvider)): org/apache/roller/weblogger/business/startup/WebloggerStartup.prepared == 1
    //#pre[4] (void bootstrap(WebloggerProvider)): provider != null
    //#pre[5] (void bootstrap(WebloggerProvider)): provider.__Tag in {org/apache/roller/weblogger/business/GuiceWebloggerProvider, org/apache/roller/weblogger/business/WebloggerProvider}
    //#pre[6] (void bootstrap(WebloggerProvider)): provider.injector != null
    //#presumption(void bootstrap(WebloggerProvider)): com.google.inject.Injector:getInstance(...)@87 != null
    //#presumption(void bootstrap(WebloggerProvider)): com.google.inject.Injector:getInstance(...)@87.__Tag in {org/apache/roller/weblogger/business/Weblogger, org/apache/roller/weblogger/business/WebloggerImpl, org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl}
    //#presumption(void bootstrap(WebloggerProvider)): java.lang.Object:getClass(...)@128 != null
    //#presumption(void bootstrap(WebloggerProvider)): org.apache.commons.logging.LogFactory:getLog(...)@32 != null
    //#post(void bootstrap(WebloggerProvider)): (soft) provider.webloggerInstance != null
    //#post(void bootstrap(WebloggerProvider)): webloggerProvider.webloggerInstance == provider.webloggerInstance
    //#post(void bootstrap(WebloggerProvider)): webloggerProvider == provider
    //#post(void bootstrap(WebloggerProvider)): webloggerProvider != null
    //#unanalyzed(void bootstrap(WebloggerProvider)): Effects-of-calling:com.google.inject.Injector:getInstance
            throw new IllegalStateException("Cannot bootstrap until application has been properly prepared");
        }
        
        if (provider == null) {
            throw new NullPointerException("WebloggerProvider is null");
        }
        
        log.info("Bootstrapping Roller Weblogger business tier");
    //#WebloggerFactory.java:126: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.WebloggerFactory
    //#    method: void bootstrap(WebloggerProvider)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
        
        log.info("Weblogger Provider = "+provider.getClass().getName());
    //#WebloggerFactory.java:128: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.WebloggerFactory
    //#    method: void bootstrap(WebloggerProvider)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
        
        // save reference to provider
        webloggerProvider = provider;
        
        // bootstrap weblogger provider
        webloggerProvider.bootstrap();
        
        // make sure we are all set
        if(webloggerProvider.getWeblogger() == null) {
            throw new BootstrapException("Bootstrapping failed, Weblogger instance is null");
        }
        
        log.info("Roller Weblogger business tier successfully bootstrapped");
    //#WebloggerFactory.java:141: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.WebloggerFactory
    //#    method: void bootstrap(WebloggerProvider)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
        log.info("   Version: " + webloggerProvider.getWeblogger().getVersion());
    //#WebloggerFactory.java:142: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.WebloggerFactory
    //#    method: void bootstrap(WebloggerProvider)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
        log.info("   Revision: " + webloggerProvider.getWeblogger().getRevision());
    //#WebloggerFactory.java:143: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.business.WebloggerFactory
    //#    method: void bootstrap(WebloggerProvider)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
    }
    //#WebloggerFactory.java:144: end of method: void org.apache.roller.weblogger.business.WebloggerFactory.bootstrap(WebloggerProvider)
    
}
    //#WebloggerFactory.java:: end of class: org.apache.roller.weblogger.business.WebloggerFactory
