//# 0 errors, 137 messages
//#
/*
    //#RollerResourceLoader.java:1:1: class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
* 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.ui.rendering.velocity;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.apache.commons.collections.ExtendedProperties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.runtime.resource.Resource;
import org.apache.velocity.runtime.resource.loader.ResourceLoader;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.pojos.WeblogTemplate;


/**
 * This is a simple template file loader that loads templates
 * from the Roller instance instead of plain files.
 * 
 * RollerResourceLoader makes use of WebloggerFactory.
 * 
 * @author <a href="mailto:lance@brainopolis.com">Lance Lavandowska</a>
 * @version $Id: RollerResourceLoader.java,v 1.9 2005/01/15 03:32:49 snoopdave Exp $
 */
public class RollerResourceLoader extends ResourceLoader {
    //#RollerResourceLoader.java:43: method: void org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader()
    //#RollerResourceLoader.java:43: Warning: method not available
    //#    -- call on void org.apache.velocity.runtime.resource.loader.ResourceLoader()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: void org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader()
    //#    unanalyzed callee: void org.apache.velocity.runtime.resource.loader.ResourceLoader()
    //#input(void org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader()): this
    //#RollerResourceLoader.java:43: end of method: void org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader()
    
    private static Log mLogger = LogFactory.getLog(RollerResourceLoader.class);
    //#RollerResourceLoader.java:45: method: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init
    //#RollerResourceLoader.java:45: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/velocity/RollerResourceLoader]
    //#output(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.getLastModified(Lorg/apache/velocity/runtime/resource/Resource;)J
    //#output(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.getResourceStream(Ljava/lang/String;)Ljava/io/InputStream;
    //#output(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.init(Lorg/apache/commons/collections/ExtendedProperties;)V
    //#output(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.isSourceModified(Lorg/apache/velocity/runtime/resource/Resource;)Z
    //#output(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.readLastModified(Lorg/apache/velocity/runtime/resource/Resource;Ljava/lang/String;)J
    //#output(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): mLogger
    //#post(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/velocity/RollerResourceLoader] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.getLastModified(Lorg/apache/velocity/runtime/resource/Resource;)J == &getLastModified
    //#post(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.getResourceStream(Ljava/lang/String;)Ljava/io/InputStream; == &getResourceStream
    //#post(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.init(Lorg/apache/commons/collections/ExtendedProperties;)V == &init
    //#post(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.isSourceModified(Lorg/apache/velocity/runtime/resource/Resource;)Z == &isSourceModified
    //#post(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): __Dispatch_Table.readLastModified(Lorg/apache/velocity/runtime/resource/Resource;Ljava/lang/String;)J == &readLastModified
    //#post(org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init): init'ed(mLogger)
    //#RollerResourceLoader.java:45: end of method: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader__static_init
    
    
    public void init(ExtendedProperties configuration) {
        if (mLogger.isDebugEnabled()) {
    //#RollerResourceLoader.java:49: method: void org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.init(ExtendedProperties)
    //#RollerResourceLoader.java:49: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: void init(ExtendedProperties)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
    //#input(void init(ExtendedProperties)): configuration
    //#input(void init(ExtendedProperties)): mLogger
    //#pre[2] (void init(ExtendedProperties)): mLogger != null
    //#test_vector(void init(ExtendedProperties)): org.apache.commons.logging.Log:isDebugEnabled(...)@49: {0}, {1}
            mLogger.debug(configuration);
    //#RollerResourceLoader.java:50: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: void init(ExtendedProperties)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }
    }
    //#RollerResourceLoader.java:52: end of method: void org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.init(ExtendedProperties)
    
    
    public boolean isSourceModified(Resource resource) {
        return (resource.getLastModified() !=
    //#RollerResourceLoader.java:56: method: bool org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.isSourceModified(Resource)
    //#RollerResourceLoader.java:56: Warning: method not available
    //#    -- call on long org.apache.velocity.runtime.resource.Resource:getLastModified()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: bool isSourceModified(Resource)
    //#    unanalyzed callee: long org.apache.velocity.runtime.resource.Resource:getLastModified()
    //#input(bool isSourceModified(Resource)): " vs. page="._tainted
    //#input(bool isSourceModified(Resource)): ": resource="._tainted
    //#input(bool isSourceModified(Resource)): "Error "._tainted
    //#input(bool isSourceModified(Resource)): "checking timestamp"._tainted
    //#input(bool isSourceModified(Resource)): mLogger
    //#input(bool isSourceModified(Resource)): resource
    //#input(bool isSourceModified(Resource)): this
    //#output(bool isSourceModified(Resource)): return_value
    //#pre[1] (bool isSourceModified(Resource)): mLogger != null
    //#pre[2] (bool isSourceModified(Resource)): resource != null
    //#post(bool isSourceModified(Resource)): init'ed(return_value)
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:org.apache.velocity.runtime.resource.Resource:getName
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getPage
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:org.apache.velocity.runtime.resource.Resource:getLastModified
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogTemplate:getLastModified
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(bool isSourceModified(Resource)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#RollerResourceLoader.java:56: end of method: bool org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.isSourceModified(Resource)
                readLastModified(resource, "checking timestamp"));
    }
    
    
    public long getLastModified(Resource resource) {
        return readLastModified(resource, "getting timestamp");
    //#RollerResourceLoader.java:62: method: long org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.getLastModified(Resource)
    //#input(long getLastModified(Resource)): " vs. page="._tainted
    //#input(long getLastModified(Resource)): ": resource="._tainted
    //#input(long getLastModified(Resource)): "Error "._tainted
    //#input(long getLastModified(Resource)): "getting timestamp"._tainted
    //#input(long getLastModified(Resource)): mLogger
    //#input(long getLastModified(Resource)): resource
    //#input(long getLastModified(Resource)): this
    //#output(long getLastModified(Resource)): return_value
    //#pre[1] (long getLastModified(Resource)): mLogger != null
    //#pre[2] (long getLastModified(Resource)): resource != null
    //#post(long getLastModified(Resource)): init'ed(return_value)
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:org.apache.commons.logging.Log:isDebugEnabled
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:org.apache.velocity.runtime.resource.Resource:getName
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getPage
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:org.apache.velocity.runtime.resource.Resource:getLastModified
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogTemplate:getLastModified
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(long getLastModified(Resource)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#RollerResourceLoader.java:62: end of method: long org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.getLastModified(Resource)
    }
    
    /**
     * Get an InputStream so that the Runtime can build a
     * template with it.
     *
     * @param name name of template
     * @return InputStream containing template
     */
    public InputStream getResourceStream(String name)
            throws ResourceNotFoundException {
        
        if (name == null || name.length() == 0) {
    //#RollerResourceLoader.java:75: method: InputStream org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.getResourceStream(String)
    //#input(InputStream getResourceStream(String)): "" not found"._tainted
    //#input(InputStream getResourceStream(String)): "RollerResourceLoader Error: database problem trying to load resource "._tainted
    //#input(InputStream getResourceStream(String)): "RollerResourceLoader: page ""._tainted
    //#input(InputStream getResourceStream(String)): name
    //#input(InputStream getResourceStream(String)): name._tainted
    //#output(InputStream getResourceStream(String)): new ByteArrayInputStream(getResourceStream#3) num objects
    //#output(InputStream getResourceStream(String)): return_value
    //#new obj(InputStream getResourceStream(String)): new ByteArrayInputStream(getResourceStream#3)
    //#pre[2] (InputStream getResourceStream(String)): name != null
    //#presumption(InputStream getResourceStream(String)): java.lang.String:length(...)@75 >= 1
    //#presumption(InputStream getResourceStream(String)): org.apache.roller.weblogger.business.UserManager:getPage(...)@80 != null
    //#presumption(InputStream getResourceStream(String)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@80 != null
    //#presumption(InputStream getResourceStream(String)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@80 != null
    //#presumption(InputStream getResourceStream(String)): org.apache.roller.weblogger.pojos.WeblogTemplate:getContents(...)@88 != null
    //#post(InputStream getResourceStream(String)): return_value == &new ByteArrayInputStream(getResourceStream#3)
    //#post(InputStream getResourceStream(String)): new ByteArrayInputStream(getResourceStream#3) num objects == 1
            throw new ResourceNotFoundException("Need to specify a template name!");
        }
        
        try {
            WeblogTemplate page = 
    //#RollerResourceLoader.java:80: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: InputStream getResourceStream(String)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#RollerResourceLoader.java:80: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: InputStream getResourceStream(String)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerResourceLoader.java:80: Warning: method not available
    //#    -- call on WeblogTemplate org.apache.roller.weblogger.business.UserManager:getPage(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: InputStream getResourceStream(String)
    //#    unanalyzed callee: WeblogTemplate org.apache.roller.weblogger.business.UserManager:getPage(String)
                    WebloggerFactory.getWeblogger().getUserManager().getPage(name);
            
            if (page == null) {
                throw new ResourceNotFoundException(
                        "RollerResourceLoader: page \"" +
                        name + "\" not found");
            }
            return new ByteArrayInputStream( page.getContents().getBytes("UTF-8") );
    //#RollerResourceLoader.java:88: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogTemplate:getContents()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: InputStream getResourceStream(String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogTemplate:getContents()
        } catch (UnsupportedEncodingException uex) {
            // This should never actually happen.  We expect UTF-8 in all JRE installation.
            // This rethrows as a Runtime exception after logging.
            mLogger.error(uex);
            throw new RuntimeException(uex);
        } catch (WebloggerException re) {
            String msg = "RollerResourceLoader Error: " +
                    "database problem trying to load resource " + name;
            mLogger.error( msg, re );
            throw new ResourceNotFoundException(msg);
    //#RollerResourceLoader.java:98: end of method: InputStream org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.getResourceStream(String)
        }
    }
    
    
    /**
     * Fetches the last modification time of the resource
     *
     * @param resource Resource object we are finding timestamp of
     * @param i_operation string for logging, indicating caller's intention
     *
     * @return timestamp as long
     */
    private long readLastModified(Resource resource, String i_operation) {
        
        /*
         *  get the template name from the resource
         */
        String name = resource.getName();
    //#RollerResourceLoader.java:116: method: long org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.readLastModified(Resource, String)
    //#RollerResourceLoader.java:116: Warning: method not available
    //#    -- call on String org.apache.velocity.runtime.resource.Resource:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: String org.apache.velocity.runtime.resource.Resource:getName()
    //#input(long readLastModified(Resource, String)): " vs. page="._tainted
    //#input(long readLastModified(Resource, String)): ": resource="._tainted
    //#input(long readLastModified(Resource, String)): "Error "._tainted
    //#input(long readLastModified(Resource, String)): i_operation
    //#input(long readLastModified(Resource, String)): i_operation._tainted
    //#input(long readLastModified(Resource, String)): mLogger
    //#input(long readLastModified(Resource, String)): resource
    //#output(long readLastModified(Resource, String)): return_value
    //#pre[3] (long readLastModified(Resource, String)): mLogger != null
    //#pre[4] (long readLastModified(Resource, String)): resource != null
    //#presumption(long readLastModified(Resource, String)): org.apache.roller.weblogger.business.UserManager:getPage(...)@118 != null
    //#presumption(long readLastModified(Resource, String)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@118 != null
    //#presumption(long readLastModified(Resource, String)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@118 != null
    //#presumption(long readLastModified(Resource, String)): org.apache.roller.weblogger.pojos.WeblogTemplate:getLastModified(...)@122 != null
    //#presumption(long readLastModified(Resource, String)): org.apache.roller.weblogger.pojos.WeblogTemplate:getLastModified(...)@125 != null
    //#post(long readLastModified(Resource, String)): init'ed(return_value)
    //#test_vector(long readLastModified(Resource, String)): org.apache.commons.logging.Log:isDebugEnabled(...)@121: {0}, {1}
        try {
            WeblogTemplate page = 
    //#RollerResourceLoader.java:118: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#RollerResourceLoader.java:118: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerResourceLoader.java:118: Warning: method not available
    //#    -- call on WeblogTemplate org.apache.roller.weblogger.business.UserManager:getPage(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: WeblogTemplate org.apache.roller.weblogger.business.UserManager:getPage(String)
                    WebloggerFactory.getWeblogger().getUserManager().getPage(name);
            
            if (mLogger.isDebugEnabled()) {
    //#RollerResourceLoader.java:121: Warning: method not available
    //#    -- call on bool org.apache.commons.logging.Log:isDebugEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: bool org.apache.commons.logging.Log:isDebugEnabled()
                mLogger.debug(name + ": resource=" + resource.getLastModified() +
    //#RollerResourceLoader.java:122: Warning: method not available
    //#    -- call on long org.apache.velocity.runtime.resource.Resource:getLastModified()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: long org.apache.velocity.runtime.resource.Resource:getLastModified()
    //#RollerResourceLoader.java:122: Warning: method not available
    //#    -- call on Date org.apache.roller.weblogger.pojos.WeblogTemplate:getLastModified()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: Date org.apache.roller.weblogger.pojos.WeblogTemplate:getLastModified()
    //#RollerResourceLoader.java:122: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                        " vs. page=" + page.getLastModified().getTime());
            }
            return page.getLastModified().getTime();
    //#RollerResourceLoader.java:125: Warning: method not available
    //#    -- call on Date org.apache.roller.weblogger.pojos.WeblogTemplate:getLastModified()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: Date org.apache.roller.weblogger.pojos.WeblogTemplate:getLastModified()
        } catch (WebloggerException re) {
            mLogger.error( "Error " + i_operation, re );
    //#RollerResourceLoader.java:127: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
    //#    method: long readLastModified(Resource, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
        }
        return 0;
    //#RollerResourceLoader.java:129: end of method: long org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader.readLastModified(Resource, String)
    }
    
}
    //#RollerResourceLoader.java:: end of class: org.apache.roller.weblogger.ui.rendering.velocity.RollerResourceLoader
