//# 3 errors, 564 messages
//#
/*
    //#Resources.java:1:1: class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#Resources.java:1:1: method: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator.org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator__static_init
    //#Resources.java:1:1: class: org.apache.roller.weblogger.ui.struts2.editor.Resources
 * 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.struts2.editor;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.FileIOException;
import org.apache.roller.weblogger.business.FileNotFoundException;
import org.apache.roller.weblogger.business.FilePathException;
import org.apache.roller.weblogger.business.FileManager;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.pojos.ThemeResource;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;


/**
 * Manage user uploaded resources.
 */
public final class Resources extends UIAction {
    
    private static Log log = LogFactory.getLog(Resources.class);
    //#Resources.java:46: method: org.apache.roller.weblogger.ui.struts2.editor.Resources.org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init
    //#Resources.java:46: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/struts2/editor/Resources]
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.createSubdir()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.execute()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getDeleteIds()[Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getFiles()Ljava/util/List;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getNewDir()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getPath()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getResourceURL(Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getTotalSize()J
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getUploadedFiles()[Ljava/io/File;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getUploadedFilesContentType()[Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getUploadedFilesFileName()[Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.isOverQuota()Z
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.remove()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.requiredWeblogPermissions()S
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setDeleteIds([Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setFiles(Ljava/util/List;)V
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setNewDir(Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setOverQuota(Z)V
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setPath(Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setTotalSize(J)V
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setUploadedFiles([Ljava/io/File;)V
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setUploadedFilesContentType([Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setUploadedFilesFileName([Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.upload()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): log
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/struts2/editor/Resources] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.createSubdir()Ljava/lang/String; == &createSubdir
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.execute()Ljava/lang/String; == &execute
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getDeleteIds()[Ljava/lang/String; == &getDeleteIds
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getFiles()Ljava/util/List; == &getFiles
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getNewDir()Ljava/lang/String; == &getNewDir
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getPath()Ljava/lang/String; == &getPath
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getResourceURL(Ljava/lang/String;)Ljava/lang/String; == &getResourceURL
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getTotalSize()J == &getTotalSize
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getUploadedFiles()[Ljava/io/File; == &getUploadedFiles
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getUploadedFilesContentType()[Ljava/lang/String; == &getUploadedFilesContentType
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.getUploadedFilesFileName()[Ljava/lang/String; == &getUploadedFilesFileName
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.isOverQuota()Z == &isOverQuota
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.remove()Ljava/lang/String; == &remove
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.requiredWeblogPermissions()S == &requiredWeblogPermissions
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setDeleteIds([Ljava/lang/String;)V == &setDeleteIds
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setFiles(Ljava/util/List;)V == &setFiles
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setNewDir(Ljava/lang/String;)V == &setNewDir
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setOverQuota(Z)V == &setOverQuota
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setPath(Ljava/lang/String;)V == &setPath
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setTotalSize(J)V == &setTotalSize
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setUploadedFiles([Ljava/io/File;)V == &setUploadedFiles
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setUploadedFilesContentType([Ljava/lang/String;)V == &setUploadedFilesContentType
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.setUploadedFilesFileName([Ljava/lang/String;)V == &setUploadedFilesFileName
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): __Dispatch_Table.upload()Ljava/lang/String; == &upload
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init): init'ed(log)
    //#Resources.java:46: end of method: org.apache.roller.weblogger.ui.struts2.editor.Resources.org.apache.roller.weblogger.ui.struts2.editor.Resources__static_init
    
    // path under resources directory we are viewing
    private String path = null;
    
    // an array of files uploaded by the user, if applicable
    private File[] uploadedFiles = null;
    
    // an array of content types for upload files
    private String[] uploadedFilesContentType = null;
    
    // an array of filenames for uploaded files
    private String[] uploadedFilesFileName = null;
    
    // name of new subdir to create, if applicable
    private String newDir = null;
    
    // ids of files to delete, if applicable
    private String[] deleteIds = null;
    
    // list of files to display
    private List files = Collections.EMPTY_LIST;
    
    // is the weblog over the file quota
    private boolean overQuota = false;
    
    // total size of all files for weblog
    private long totalSize = 0;
    
    
    public Resources() {
    //#Resources.java:76: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.org.apache.roller.weblogger.ui.struts2.editor.Resources()
    //#Resources.java:76: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.util.UIAction()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: void org.apache.roller.weblogger.ui.struts2.editor.Resources()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.util.UIAction()
    //#input(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): java.util.Collections.EMPTY_LIST
    //#input(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.actionName
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.deleteIds
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.desiredMenu
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.files
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.newDir
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.overQuota
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.pageTitle
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.path
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.totalSize
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.uploadedFiles
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.uploadedFilesContentType
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.uploadedFilesFileName
    //#presumption(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): init'ed(java.util.Collections.EMPTY_LIST)
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.actionName == &"resources"
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.deleteIds == null
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.newDir == null
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.path == null
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.uploadedFiles == null
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.uploadedFilesContentType == null
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.uploadedFilesFileName == null
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.desiredMenu == &"editor"
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.files == java.util.Collections.EMPTY_LIST
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): (soft) init'ed(this.files)
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.overQuota == 0
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.totalSize == 0
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources()): this.pageTitle == &"uploadFiles.title"
        this.actionName = "resources";
        this.desiredMenu = "editor";
        this.pageTitle = "uploadFiles.title";
    }
    //#Resources.java:80: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.org.apache.roller.weblogger.ui.struts2.editor.Resources()
    
    
    // requires author role
    public short requiredWeblogPermissions() {
        return WeblogPermission.AUTHOR;
    //#Resources.java:85: method: short org.apache.roller.weblogger.ui.struts2.editor.Resources.requiredWeblogPermissions()
    //#input(short requiredWeblogPermissions()): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#output(short requiredWeblogPermissions()): return_value
    //#presumption(short requiredWeblogPermissions()): init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR)
    //#post(short requiredWeblogPermissions()): return_value == org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#post(short requiredWeblogPermissions()): (soft) init'ed(return_value)
    //#Resources.java:85: end of method: short org.apache.roller.weblogger.ui.struts2.editor.Resources.requiredWeblogPermissions()
    }
    
    
    /**
     * Display weblog resources.
     */
    public String execute()  {
        
        FileManager fmgr = WebloggerFactory.getWeblogger().getFileManager();
    //#Resources.java:94: method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.execute()
    //#Resources.java:94: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#Resources.java:94: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#input(String execute()): " files found"._tainted
    //#input(String execute()): "Error getting files list for weblog - "._tainted
    //#input(String execute()): log
    //#input(String execute()): this
    //#input(String execute()): this.path
    //#output(String execute()): new ArrayList(execute#2) num objects
    //#output(String execute()): return_value
    //#output(String execute()): this.files
    //#output(String execute()): this.overQuota
    //#output(String execute()): this.totalSize
    //#new obj(String execute()): new ArrayList(execute#2)
    //#pre[1] (String execute()): log != null
    //#pre[5] (String execute()): (soft) init'ed(this.path)
    //#presumption(String execute()): org.apache.roller.weblogger.business.FileManager:getFiles(...)@101 != null
    //#presumption(String execute()): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@94 != null
    //#presumption(String execute()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@94 != null
    //#presumption(String execute()): org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog(...)@120 != null
    //#presumption(String execute()): resources.length@101 <= 4_294_967_295
    //#post(String execute()): return_value == &"list"
    //#post(String execute()): this.files == One-of{&new ArrayList(execute#2), old this.files}
    //#post(String execute()): init'ed(this.overQuota)
    //#post(String execute()): possibly_updated(this.totalSize)
    //#post(String execute()): new ArrayList(execute#2) num objects <= 1
    //#test_vector(String execute()): this.path: Inverse{null}, Addr_Set{null}
        
        setOverQuota(fmgr.overQuota(getActionWeblog()));
    //#Resources.java:96: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#Resources.java:96: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.business.FileManager:overQuota(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: bool org.apache.roller.weblogger.business.FileManager:overQuota(Weblog)
        
        try {
            // get files, add them to the list
            long totalSize = 0;
            ThemeResource[] resources = fmgr.getFiles(getActionWeblog(), getPath());
    //#Resources.java:101: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#Resources.java:101: Warning: method not available
    //#    -- call on ThemeResource[] org.apache.roller.weblogger.business.FileManager:getFiles(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: ThemeResource[] org.apache.roller.weblogger.business.FileManager:getFiles(Weblog, String)
            log.debug(resources.length+" files found");
    //#Resources.java:102: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            for (int i=0; i<resources.length; i++) {
                totalSize += resources[i].getLength();
    //#Resources.java:104: ?use of default init
    //#    init'ed(resources[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    basic block: bb_4
    //#    assertion: init'ed(resources[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#Resources.java:104: ?null dereference
    //#    not_init'ed(resources[i])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    basic block: bb_4
    //#    assertion: not_init'ed(resources[i])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#Resources.java:104: Warning: method not available
    //#    -- call on long org.apache.roller.weblogger.pojos.ThemeResource:getLength()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: long org.apache.roller.weblogger.pojos.ThemeResource:getLength()
    //#Resources.java:104: ?overflow
    //#    totalSize + org/apache/roller/weblogger/pojos/ThemeResource:getLength(...) in -9_223_372_036_854_775_808..18_446_744_073_709_551_615
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    basic block: bb_4
    //#    assertion: totalSize + org/apache/roller/weblogger/pojos/ThemeResource:getLength(...) in -9_223_372_036_854_775_808..18_446_744_073_709_551_615
    //#    VN: org.apache.roller.weblogger.pojos.ThemeResource:getLength(...)@104 + totalSize
    //#    Expected: {-9_223_372_036_854_775_808..18_446_744_073_709_551_615, Invalid}
    //#    Bad: {-18_446_744_073_709_551_616..-9_223_372_036_854_775_809, 18_446_744_073_709_551_616..36_893_488_147_419_103_230}
    //#    Attribs:  Int  Bad < Exp  Bad > Exp
            }
            List filesList = new ArrayList(Arrays.asList(resources));
            
            if(getPath() == null) {
                ThemeResource[] dirs = fmgr.getDirectories(getActionWeblog());
    //#Resources.java:109: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#Resources.java:109: Warning: method not available
    //#    -- call on ThemeResource[] org.apache.roller.weblogger.business.FileManager:getDirectories(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: ThemeResource[] org.apache.roller.weblogger.business.FileManager:getDirectories(Weblog)
                filesList.addAll(Arrays.asList(dirs));
            }
            
            // sort 'em
            Collections.sort(filesList, new WeblogResourceComparator());
            
            setFiles(filesList);
            setTotalSize(totalSize);
            
        } catch (Exception ex) {
            log.error("Error getting files list for weblog - "+getActionWeblog().getHandle(), ex);
    //#Resources.java:120: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#Resources.java:120: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#Resources.java:120: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
            // TODO: i18n
            addError("Error getting files list");
    //#Resources.java:122: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String execute()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
        }
        
        return LIST;
    //#Resources.java:125: end of method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.execute()
    }
    
    
    /**
     * Create a subdirectory.
     */
    public String createSubdir() {
        
        String path = getPath();
    //#Resources.java:134: method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.createSubdir()
    //#input(String createSubdir()): " files found"._tainted
    //#input(String createSubdir()): "."._tainted
    //#input(String createSubdir()): "Error getting files list for weblog - "._tainted
    //#input(String createSubdir()): log
    //#input(String createSubdir()): this
    //#input(String createSubdir()): this.newDir
    //#input(String createSubdir()): this.newDir._tainted
    //#input(String createSubdir()): this.path
    //#input(String createSubdir()): this.path._tainted
    //#output(String createSubdir()): new ArrayList(execute#2) num objects
    //#output(String createSubdir()): return_value
    //#output(String createSubdir()): this.files
    //#output(String createSubdir()): this.newDir
    //#output(String createSubdir()): this.overQuota
    //#output(String createSubdir()): this.totalSize
    //#new obj(String createSubdir()): new ArrayList(execute#2)
    //#pre[1] (String createSubdir()): log != null
    //#pre[3] (String createSubdir()): init'ed(this.newDir)
    //#pre[7] (String createSubdir()): init'ed(this.path)
    //#presumption(String createSubdir()): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@149 != null
    //#presumption(String createSubdir()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@149 != null
    //#post(String createSubdir()): return_value == &"list"
    //#post(String createSubdir()): this.files == One-of{&new ArrayList(execute#2), old this.files}
    //#post(String createSubdir()): this.newDir == One-of{null, old this.newDir}
    //#post(String createSubdir()): init'ed(this.newDir)
    //#post(String createSubdir()): init'ed(this.overQuota)
    //#post(String createSubdir()): possibly_updated(this.totalSize)
    //#post(String createSubdir()): new ArrayList(execute#2) num objects <= 1
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getFileManager
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:overQuota
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:getFiles
    //#unanalyzed(String createSubdir()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String createSubdir()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String createSubdir()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLength
    //#unanalyzed(String createSubdir()): Effects-of-calling:java.util.Arrays:asList
    //#unanalyzed(String createSubdir()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:getDirectories
    //#unanalyzed(String createSubdir()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(String createSubdir()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(String createSubdir()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(String createSubdir()): Effects-of-calling:org.apache.roller.weblogger.ui.struts2.editor.Resources:addError
    //#test_vector(String createSubdir()): this.newDir: Addr_Set{null}, Inverse{null}
    //#test_vector(String createSubdir()): this.path: Addr_Set{null}, Inverse{null}
    //#test_vector(String createSubdir()): java.lang.String:indexOf(...)@136: {-2_147_483_648..-2, 0..4_294_967_295}, {-1}
    //#test_vector(String createSubdir()): java.lang.String:length(...)@136: {0}, {1..4_294_967_295}
    //#test_vector(String createSubdir()): java.lang.String:length(...)@144: {0}, {1..4_294_967_295}
        String newDir = getNewDir();
        if(newDir != null &&
                newDir.trim().length() > 0 &&
                newDir.indexOf("/") == -1 &&
                newDir.indexOf("\\") == -1 &&
                newDir.indexOf("..") == -1) {
            
            // figure the new directory path
            String newDirPath = newDir;
            if(path != null && path.trim().length() > 0) {
                newDirPath = path + "/" + newDir;
            }
            
            try {
                FileManager fmgr = WebloggerFactory.getWeblogger().getFileManager();
    //#Resources.java:149: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String createSubdir()
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#Resources.java:149: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String createSubdir()
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
                
                // add the new subdirectory
                fmgr.createDirectory(getActionWeblog(), newDirPath);
    //#Resources.java:152: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String createSubdir()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#Resources.java:152: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.FileManager:createDirectory(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String createSubdir()
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.FileManager:createDirectory(Weblog, String)
                
                addMessage("uploadFiles.createdDir", newDirPath);
    //#Resources.java:154: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addMessage(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String createSubdir()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addMessage(String, String)
                
                // reset newDir prop so it doesn't autopopulate on the form
                setNewDir(null);
                
            } catch (FilePathException ex) {
                addError("uploadFiles.error.badPath", newDirPath);
    //#Resources.java:160: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String createSubdir()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
            } catch (FileNotFoundException ex) {
                addError("uploadFiles.error.badPath", newDirPath);
    //#Resources.java:162: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String createSubdir()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
            } catch (FileIOException ex) {
                addError("uploadFiles.error.createDir", newDirPath);
    //#Resources.java:164: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String createSubdir()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
            }
        } else {
            addError("uploadFiles.error.badPath", newDir);
    //#Resources.java:167: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String createSubdir()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
        }
        
        return execute();
    //#Resources.java:170: end of method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.createSubdir()
    }
    
    
    /**
     * Upload selected file(s).
     */
    public String upload() {
        
        // make sure uploads are enabled
        if(!WebloggerRuntimeConfig.getBooleanProperty("uploads.enabled")) {
    //#Resources.java:180: method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.upload()
    //#Resources.java:180: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: bool org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(String)
    //#input(String upload()): " files found"._tainted
    //#input(String upload()): "."._tainted
    //#input(String upload()): "Error getting files list for weblog - "._tainted
    //#input(String upload()): "Error reading from uploaded file - "._tainted
    //#input(String upload()): "Error reading uploaded file - "._tainted
    //#input(String upload()): log
    //#input(String upload()): this
    //#input(String upload()): this.path
    //#input(String upload()): this.path._tainted
    //#input(String upload()): this.uploadedFiles
    //#input(String upload()): this.uploadedFiles.length
    //#input(String upload()): this.uploadedFilesContentType
    //#input(String upload()): this.uploadedFilesContentType.length
    //#input(String upload()): this.uploadedFilesContentType[0..4_294_967_295]
    //#input(String upload()): this.uploadedFilesFileName
    //#input(String upload()): this.uploadedFilesFileName.length
    //#input(String upload()): this.uploadedFilesFileName[0..4_294_967_295]
    //#input(String upload()): this.uploadedFilesFileName[0..4_294_967_295]._tainted
    //#input(String upload()): this.uploadedFiles[0..4_294_967_295]
    //#output(String upload()): new ArrayList(execute#2) num objects
    //#output(String upload()): return_value
    //#output(String upload()): this.files
    //#output(String upload()): this.overQuota
    //#output(String upload()): this.totalSize
    //#new obj(String upload()): new ArrayList(execute#2)
    //#pre[1] (String upload()): log != null
    //#pre[5] (String upload()): (soft) init'ed(this.path)
    //#pre[7] (String upload()): (soft) init'ed(this.uploadedFiles)
    //#pre[8] (String upload()): (soft) this.uploadedFiles.length <= 4_294_967_295
    //#pre[9] (String upload()): (soft) this.uploadedFilesContentType != null
    //#pre[10] (String upload()): (soft) this.uploadedFilesContentType.length >= 1
    //#pre[11] (String upload()): (soft) this.uploadedFiles.length <= this.uploadedFilesContentType.length
    //#pre[12] (String upload()): (soft) init'ed(this.uploadedFilesContentType[0..4_294_967_295])
    //#pre[13] (String upload()): (soft) this.uploadedFilesFileName != null
    //#pre[14] (String upload()): (soft) this.uploadedFilesFileName.length >= 1
    //#pre[15] (String upload()): (soft) this.uploadedFiles.length <= this.uploadedFilesFileName.length
    //#pre[16] (String upload()): (soft) this.uploadedFilesFileName[0..4_294_967_295] != null
    //#pre[18] (String upload()): (soft) init'ed(this.uploadedFiles[0..4_294_967_295])
    //#presumption(String upload()): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@185 != null
    //#presumption(String upload()): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@250 != null
    //#presumption(String upload()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@185 != null
    //#presumption(String upload()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@250 != null
    //#post(String upload()): return_value == &"list"
    //#post(String upload()): this.files == One-of{&new ArrayList(execute#2), old this.files}
    //#post(String upload()): init'ed(this.overQuota)
    //#post(String upload()): possibly_updated(this.totalSize)
    //#post(String upload()): new ArrayList(execute#2) num objects <= 1
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getFileManager
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:overQuota
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:getFiles
    //#unanalyzed(String upload()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String upload()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String upload()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLength
    //#unanalyzed(String upload()): Effects-of-calling:java.util.Arrays:asList
    //#unanalyzed(String upload()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:getDirectories
    //#unanalyzed(String upload()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(String upload()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(String upload()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(String upload()): Effects-of-calling:org.apache.roller.weblogger.ui.struts2.editor.Resources:addError
    //#test_vector(String upload()): this.path: Addr_Set{null}, Inverse{null}
    //#test_vector(String upload()): this.uploadedFiles: Addr_Set{null}, Inverse{null}
    //#test_vector(String upload()): this.uploadedFiles.length: {0}, {1..4_294_967_295}
    //#test_vector(String upload()): this.uploadedFiles[0..4_294_967_295]: Addr_Set{null}, Inverse{null}
    //#test_vector(String upload()): java.lang.String:indexOf(...)@200: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(String upload()): java.lang.String:indexOf(...)@207: {-2_147_483_648..-2, 0..4_294_967_295}, {-1}
    //#test_vector(String upload()): java.lang.String:indexOf(...)@207: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(String upload()): java.lang.String:length(...)@215: {0}, {1..4_294_967_295}
    //#test_vector(String upload()): java.util.Iterator:hasNext(...)@249: {0}, {1}
    //#test_vector(String upload()): java.util.List:size(...)@246: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(String upload()): org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getBooleanProperty(...)@180: {1}, {0}
            addError("error.upload.disabled");
    //#Resources.java:181: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
            return execute();
        }
            
        FileManager fmgr = WebloggerFactory.getWeblogger().getFileManager();
    //#Resources.java:185: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#Resources.java:185: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
        
        List<String> uploaded = new ArrayList();
        File[] uploads = getUploadedFiles();
        if (uploads != null && uploads.length > 0) {
            
            // loop over uploaded files and try saving them
            for (int i=0; i < uploads.length; i++) {
                
                // skip null files
                if (uploads[i] == null || !uploads[i].exists())
                    continue;
                
                // figure file name and path
                String fileName = getUploadedFilesFileName()[i];
                int terminated = fileName.indexOf("\000");
                if (terminated != -1) {
                    // disallow sneaky null terminated strings
                    fileName = fileName.substring(0, terminated).trim();
                }
                
                // make sure fileName is valid
                if (fileName.indexOf("/") != -1 ||
                        fileName.indexOf("\\") != -1 ||
                        fileName.indexOf("..") != -1) {
                    addError("uploadFiles.error.badPath", fileName);
    //#Resources.java:210: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
                    continue;
                }
                
                // add on the path element if needed
                if(getPath() != null && getPath().trim().length() > 0) {
                    fileName = getPath() + "/" + fileName;
                }
                
                
                try {
                    fmgr.saveFile(getActionWeblog(), 
    //#Resources.java:221: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#Resources.java:221: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.FileManager:saveFile(Weblog, String, String, long, InputStream)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.FileManager:saveFile(Weblog, String, String, long, InputStream)
                            fileName,
                            getUploadedFilesContentType()[i],
                            uploads[i].length(),
                            new FileInputStream(uploads[i]));
                    
                    uploaded.add(fileName);
                    
                    //destroy the temporary file created
                    uploads[i].delete();
                    
                } catch (FilePathException ex) {
                    addError("uploadFiles.error.badPath", fileName);
    //#Resources.java:233: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
                } catch (FileNotFoundException ex) {
                    addError("uploadFiles.error.badPath", fileName);
    //#Resources.java:235: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
                } catch (FileIOException ex) {
                    addError("uploadFiles.error.upload", fileName);
    //#Resources.java:237: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
                } catch (Exception ex) {
                    log.error("Error reading from uploaded file - "+uploads[i].getAbsolutePath(), ex);
    //#Resources.java:239: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
                    // TODO: i18n
                    addError("Error reading uploaded file - "+getUploadedFilesFileName()[i]);
    //#Resources.java:241: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
                }
            }
        }
        
        if(uploaded.size() > 0) {
            addMessage("uploadFiles.uploadedFiles");
    //#Resources.java:247: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addMessage(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addMessage(String)
            
            for(String upload : uploaded) {
                addMessage("uploadFiles.uploadedFile",
    //#Resources.java:250: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#Resources.java:250: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#Resources.java:250: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#Resources.java:250: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL(Weblog, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL(Weblog, String, bool)
    //#Resources.java:250: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addMessage(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String upload()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addMessage(String, String)
                        WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogResourceURL(getActionWeblog(), upload, true));
            }
        }
        
        return execute();
    //#Resources.java:255: end of method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.upload()
    }
    
    
    /**
     * Delete selected file(s).
     */
    public String remove() {
        
        int numDeleted = 0;
    //#Resources.java:264: method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.remove()
    //#input(String remove()): " files found"._tainted
    //#input(String remove()): " files"._tainted
    //#input(String remove()): ""._tainted
    //#input(String remove()): "Attempting to delete "._tainted
    //#input(String remove()): "Deleting file at path - "._tainted
    //#input(String remove()): "Error getting files list for weblog - "._tainted
    //#input(String remove()): "Ignoring delete path - "._tainted
    //#input(String remove()): log
    //#input(String remove()): this
    //#input(String remove()): this.deleteIds
    //#input(String remove()): this.deleteIds.length
    //#input(String remove()): this.deleteIds[0..4_294_967_295]
    //#input(String remove()): this.deleteIds[0..4_294_967_295]._tainted
    //#input(String remove()): this.path
    //#output(String remove()): new ArrayList(execute#2) num objects
    //#output(String remove()): return_value
    //#output(String remove()): this.files
    //#output(String remove()): this.overQuota
    //#output(String remove()): this.totalSize
    //#new obj(String remove()): new ArrayList(execute#2)
    //#pre[1] (String remove()): log != null
    //#pre[5] (String remove()): init'ed(this.deleteIds)
    //#pre[6] (String remove()): (soft) this.deleteIds.length <= 4_294_967_295
    //#pre[7] (String remove()): (soft) this.deleteIds[0..4_294_967_295] != null
    //#pre[9] (String remove()): (soft) init'ed(this.path)
    //#presumption(String remove()): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@269 != null
    //#presumption(String remove()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@269 != null
    //#post(String remove()): return_value == &"list"
    //#post(String remove()): this.files == One-of{&new ArrayList(execute#2), old this.files}
    //#post(String remove()): init'ed(this.overQuota)
    //#post(String remove()): possibly_updated(this.totalSize)
    //#post(String remove()): new ArrayList(execute#2) num objects <= 1
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getFileManager
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:overQuota
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:getFiles
    //#unanalyzed(String remove()): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String remove()): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String remove()): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLength
    //#unanalyzed(String remove()): Effects-of-calling:java.util.Arrays:asList
    //#unanalyzed(String remove()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:getDirectories
    //#unanalyzed(String remove()): Effects-of-calling:java.util.List:addAll
    //#unanalyzed(String remove()): Effects-of-calling:java.util.Collections:sort
    //#unanalyzed(String remove()): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(String remove()): Effects-of-calling:org.apache.roller.weblogger.ui.struts2.editor.Resources:addError
    //#test_vector(String remove()): this.deleteIds: Addr_Set{null}, Inverse{null}
    //#test_vector(String remove()): java.lang.String:indexOf(...)@271: {-1}, {-2_147_483_648..-2, 0..4_294_967_295}
    //#test_vector(String remove()): java.lang.String:startsWith(...)@271: {1}, {0}
        String[] deleteFiles = getDeleteIds();
        if(deleteFiles != null) {
            log.debug("Attempting to delete "+deleteFiles.length+" files");
    //#Resources.java:267: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            
            FileManager fmgr = WebloggerFactory.getWeblogger().getFileManager();
    //#Resources.java:269: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#Resources.java:269: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
            for (int i=0; i < deleteFiles.length; i++) {
                if (deleteFiles[i].trim().startsWith("/") ||
                        deleteFiles[i].trim().startsWith("\\") ||
                        deleteFiles[i].indexOf("..") != -1) {
                    // ignore absolute paths, or paths that contiain '..'
                    log.debug("Ignoring delete path - "+deleteFiles[i]);
    //#Resources.java:275: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                } else {
                    try {
                        log.debug("Deleting file at path - "+deleteFiles[i]);
    //#Resources.java:278: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                        fmgr.deleteFile(getActionWeblog(), deleteFiles[i]);
    //#Resources.java:279: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#Resources.java:279: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.FileManager:deleteFile(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.FileManager:deleteFile(Weblog, String)
                        numDeleted++;
                    } catch (FileNotFoundException ex) {
                        addError("uploadFiles.error.badPath");
    //#Resources.java:282: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
                    } catch (FilePathException ex) {
                        addError("uploadFiles.error.badPath");
    //#Resources.java:284: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String)
                    } catch (FileIOException ex) {
                        addError("uploadFiles.error.delete", deleteFiles[i]);
    //#Resources.java:286: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addError(String, String)
                    }
                    
                }
            }
            
            if(numDeleted > 0) {
                addMessage("uploadFiles.deletedFiles", ""+numDeleted);
    //#Resources.java:293: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.ui.struts2.editor.Resources:addMessage(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String remove()
    //#    unanalyzed callee: void org.apache.roller.weblogger.ui.struts2.editor.Resources:addMessage(String, String)
            }
        }
        
        return execute();
    //#Resources.java:297: end of method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.remove()
    }
    
    
    public String getResourceURL(String path) {
        return WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogResourceURL(getActionWeblog(), path, false);
    //#Resources.java:302: method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.getResourceURL(String)
    //#Resources.java:302: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String getResourceURL(String)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#Resources.java:302: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String getResourceURL(String)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#Resources.java:302: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String getResourceURL(String)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.ui.struts2.editor.Resources:getActionWeblog()
    //#Resources.java:302: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL(Weblog, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources
    //#    method: String getResourceURL(String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL(Weblog, String, bool)
    //#input(String getResourceURL(String)): path
    //#input(String getResourceURL(String)): this
    //#output(String getResourceURL(String)): return_value
    //#presumption(String getResourceURL(String)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@302 != null
    //#presumption(String getResourceURL(String)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@302 != null
    //#post(String getResourceURL(String)): init'ed(return_value)
    //#Resources.java:302: end of method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.getResourceURL(String)
    }
    
    
    public String getPath() {
        return path;
    //#Resources.java:307: method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.getPath()
    //#input(String getPath()): this
    //#input(String getPath()): this.path
    //#output(String getPath()): return_value
    //#pre[2] (String getPath()): init'ed(this.path)
    //#post(String getPath()): return_value == this.path
    //#post(String getPath()): init'ed(return_value)
    //#Resources.java:307: end of method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.getPath()
    }

    public void setPath(String path) {
        if(path != null && 
    //#Resources.java:311: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setPath(String)
    //#input(void setPath(String)): path
    //#input(void setPath(String)): this
    //#output(void setPath(String)): this.path
    //#post(void setPath(String)): this.path == One-of{old this.path, path}
    //#test_vector(void setPath(String)): path: Addr_Set{null}, Inverse{null}
    //#test_vector(void setPath(String)): java.lang.String:equals(...)@311: {1}, {0}
    //#test_vector(void setPath(String)): java.lang.String:length(...)@311: {0}, {1..4_294_967_295}
                path.trim().length() != 0 && 
                !path.trim().equals("/")) {
            this.path = path;
        }
    }
    //#Resources.java:316: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setPath(String)

    public String getNewDir() {
        return newDir;
    //#Resources.java:319: method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.getNewDir()
    //#input(String getNewDir()): this
    //#input(String getNewDir()): this.newDir
    //#output(String getNewDir()): return_value
    //#pre[2] (String getNewDir()): init'ed(this.newDir)
    //#post(String getNewDir()): return_value == this.newDir
    //#post(String getNewDir()): init'ed(return_value)
    //#Resources.java:319: end of method: String org.apache.roller.weblogger.ui.struts2.editor.Resources.getNewDir()
    }

    public void setNewDir(String newDir) {
        this.newDir = newDir;
    //#Resources.java:323: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setNewDir(String)
    //#input(void setNewDir(String)): newDir
    //#input(void setNewDir(String)): this
    //#output(void setNewDir(String)): this.newDir
    //#post(void setNewDir(String)): this.newDir == newDir
    //#post(void setNewDir(String)): init'ed(this.newDir)
    }
    //#Resources.java:324: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setNewDir(String)

    public String[] getDeleteIds() {
        return deleteIds;
    //#Resources.java:327: method: String[] org.apache.roller.weblogger.ui.struts2.editor.Resources.getDeleteIds()
    //#input(String[] getDeleteIds()): this
    //#input(String[] getDeleteIds()): this.deleteIds
    //#output(String[] getDeleteIds()): return_value
    //#pre[2] (String[] getDeleteIds()): init'ed(this.deleteIds)
    //#post(String[] getDeleteIds()): return_value == this.deleteIds
    //#post(String[] getDeleteIds()): init'ed(return_value)
    //#Resources.java:327: end of method: String[] org.apache.roller.weblogger.ui.struts2.editor.Resources.getDeleteIds()
    }

    public void setDeleteIds(String[] deleteIds) {
        this.deleteIds = deleteIds;
    //#Resources.java:331: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setDeleteIds(String[])
    //#input(void setDeleteIds(String[])): deleteIds
    //#input(void setDeleteIds(String[])): this
    //#output(void setDeleteIds(String[])): this.deleteIds
    //#post(void setDeleteIds(String[])): this.deleteIds == deleteIds
    //#post(void setDeleteIds(String[])): init'ed(this.deleteIds)
    }
    //#Resources.java:332: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setDeleteIds(String[])

    public List getFiles() {
        return files;
    //#Resources.java:335: method: List org.apache.roller.weblogger.ui.struts2.editor.Resources.getFiles()
    //#input(List getFiles()): this
    //#input(List getFiles()): this.files
    //#output(List getFiles()): return_value
    //#pre[2] (List getFiles()): init'ed(this.files)
    //#post(List getFiles()): return_value == this.files
    //#post(List getFiles()): init'ed(return_value)
    //#Resources.java:335: end of method: List org.apache.roller.weblogger.ui.struts2.editor.Resources.getFiles()
    }

    public void setFiles(List files) {
        this.files = files;
    //#Resources.java:339: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setFiles(List)
    //#input(void setFiles(List)): files
    //#input(void setFiles(List)): this
    //#output(void setFiles(List)): this.files
    //#post(void setFiles(List)): this.files == files
    //#post(void setFiles(List)): init'ed(this.files)
    }
    //#Resources.java:340: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setFiles(List)

    public boolean isOverQuota() {
        return overQuota;
    //#Resources.java:343: method: bool org.apache.roller.weblogger.ui.struts2.editor.Resources.isOverQuota()
    //#input(bool isOverQuota()): this
    //#input(bool isOverQuota()): this.overQuota
    //#output(bool isOverQuota()): return_value
    //#pre[2] (bool isOverQuota()): init'ed(this.overQuota)
    //#post(bool isOverQuota()): return_value == this.overQuota
    //#post(bool isOverQuota()): init'ed(return_value)
    //#Resources.java:343: end of method: bool org.apache.roller.weblogger.ui.struts2.editor.Resources.isOverQuota()
    }

    public void setOverQuota(boolean overQuota) {
        this.overQuota = overQuota;
    //#Resources.java:347: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setOverQuota(bool)
    //#input(void setOverQuota(bool)): overQuota
    //#input(void setOverQuota(bool)): this
    //#output(void setOverQuota(bool)): this.overQuota
    //#post(void setOverQuota(bool)): this.overQuota == overQuota
    //#post(void setOverQuota(bool)): init'ed(this.overQuota)
    }
    //#Resources.java:348: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setOverQuota(bool)

    public long getTotalSize() {
        return totalSize;
    //#Resources.java:351: method: long org.apache.roller.weblogger.ui.struts2.editor.Resources.getTotalSize()
    //#input(long getTotalSize()): this
    //#input(long getTotalSize()): this.totalSize
    //#output(long getTotalSize()): return_value
    //#pre[2] (long getTotalSize()): init'ed(this.totalSize)
    //#post(long getTotalSize()): return_value == this.totalSize
    //#post(long getTotalSize()): init'ed(return_value)
    //#Resources.java:351: end of method: long org.apache.roller.weblogger.ui.struts2.editor.Resources.getTotalSize()
    }

    public void setTotalSize(long totalSize) {
        this.totalSize = totalSize;
    //#Resources.java:355: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setTotalSize(long)
    //#input(void setTotalSize(long)): this
    //#input(void setTotalSize(long)): totalSize
    //#output(void setTotalSize(long)): this.totalSize
    //#post(void setTotalSize(long)): this.totalSize == totalSize
    //#post(void setTotalSize(long)): init'ed(this.totalSize)
    }
    //#Resources.java:356: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setTotalSize(long)

    public File[] getUploadedFiles() {
        return uploadedFiles;
    //#Resources.java:359: method: File[] org.apache.roller.weblogger.ui.struts2.editor.Resources.getUploadedFiles()
    //#input(File[] getUploadedFiles()): this
    //#input(File[] getUploadedFiles()): this.uploadedFiles
    //#output(File[] getUploadedFiles()): return_value
    //#pre[2] (File[] getUploadedFiles()): init'ed(this.uploadedFiles)
    //#post(File[] getUploadedFiles()): return_value == this.uploadedFiles
    //#post(File[] getUploadedFiles()): init'ed(return_value)
    //#Resources.java:359: end of method: File[] org.apache.roller.weblogger.ui.struts2.editor.Resources.getUploadedFiles()
    }

    public void setUploadedFiles(File[] uploadedFiles) {
        this.uploadedFiles = uploadedFiles;
    //#Resources.java:363: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setUploadedFiles(File[])
    //#input(void setUploadedFiles(File[])): this
    //#input(void setUploadedFiles(File[])): uploadedFiles
    //#output(void setUploadedFiles(File[])): this.uploadedFiles
    //#post(void setUploadedFiles(File[])): this.uploadedFiles == uploadedFiles
    //#post(void setUploadedFiles(File[])): init'ed(this.uploadedFiles)
    }
    //#Resources.java:364: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setUploadedFiles(File[])

    public String[] getUploadedFilesContentType() {
        return uploadedFilesContentType;
    //#Resources.java:367: method: String[] org.apache.roller.weblogger.ui.struts2.editor.Resources.getUploadedFilesContentType()
    //#input(String[] getUploadedFilesContentType()): this
    //#input(String[] getUploadedFilesContentType()): this.uploadedFilesContentType
    //#output(String[] getUploadedFilesContentType()): return_value
    //#pre[2] (String[] getUploadedFilesContentType()): init'ed(this.uploadedFilesContentType)
    //#post(String[] getUploadedFilesContentType()): return_value == this.uploadedFilesContentType
    //#post(String[] getUploadedFilesContentType()): init'ed(return_value)
    //#Resources.java:367: end of method: String[] org.apache.roller.weblogger.ui.struts2.editor.Resources.getUploadedFilesContentType()
    }

    public void setUploadedFilesContentType(String[] uploadedFilesContentType) {
        this.uploadedFilesContentType = uploadedFilesContentType;
    //#Resources.java:371: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setUploadedFilesContentType(String[])
    //#input(void setUploadedFilesContentType(String[])): this
    //#input(void setUploadedFilesContentType(String[])): uploadedFilesContentType
    //#output(void setUploadedFilesContentType(String[])): this.uploadedFilesContentType
    //#post(void setUploadedFilesContentType(String[])): this.uploadedFilesContentType == uploadedFilesContentType
    //#post(void setUploadedFilesContentType(String[])): init'ed(this.uploadedFilesContentType)
    }
    //#Resources.java:372: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setUploadedFilesContentType(String[])

    public String[] getUploadedFilesFileName() {
        return uploadedFilesFileName;
    //#Resources.java:375: method: String[] org.apache.roller.weblogger.ui.struts2.editor.Resources.getUploadedFilesFileName()
    //#input(String[] getUploadedFilesFileName()): this
    //#input(String[] getUploadedFilesFileName()): this.uploadedFilesFileName
    //#output(String[] getUploadedFilesFileName()): return_value
    //#pre[2] (String[] getUploadedFilesFileName()): init'ed(this.uploadedFilesFileName)
    //#post(String[] getUploadedFilesFileName()): return_value == this.uploadedFilesFileName
    //#post(String[] getUploadedFilesFileName()): init'ed(return_value)
    //#Resources.java:375: end of method: String[] org.apache.roller.weblogger.ui.struts2.editor.Resources.getUploadedFilesFileName()
    }

    public void setUploadedFilesFileName(String[] uploadedFilesFileName) {
        this.uploadedFilesFileName = uploadedFilesFileName;
    //#Resources.java:379: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setUploadedFilesFileName(String[])
    //#input(void setUploadedFilesFileName(String[])): this
    //#input(void setUploadedFilesFileName(String[])): uploadedFilesFileName
    //#output(void setUploadedFilesFileName(String[])): this.uploadedFilesFileName
    //#post(void setUploadedFilesFileName(String[])): this.uploadedFilesFileName == uploadedFilesFileName
    //#post(void setUploadedFilesFileName(String[])): init'ed(this.uploadedFilesFileName)
    }
    //#Resources.java:380: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources.setUploadedFilesFileName(String[])
    
    
    public class WeblogResourceComparator implements Comparator {
    //#Resources.java:383: method: void org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator.org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator(Resources)
    //#input(void org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator(Resources)): Param_1
    //#input(void org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator(Resources)): this
    //#output(void org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator(Resources)): this.this$0
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator(Resources)): this.this$0 == Param_1
    //#post(void org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator(Resources)): init'ed(this.this$0)
    //#Resources.java:383: end of method: void org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator.org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator(Resources)
        public int compare(Object o1, Object o2) {
            ThemeResource r1 = (ThemeResource)o1;
    //#Resources.java:385: method: int org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator.compare(Object, Object)
    //#input(int compare(Object, Object)): o1
    //#input(int compare(Object, Object)): o2
    //#output(int compare(Object, Object)): return_value
    //#pre[1] (int compare(Object, Object)): o1 != null
    //#pre[2] (int compare(Object, Object)): (soft) o2 != null
    //#presumption(int compare(Object, Object)): org.apache.roller.weblogger.pojos.ThemeResource:getPath(...)@391 != null
    //#presumption(int compare(Object, Object)): org.apache.roller.weblogger.pojos.ThemeResource:getPath(...)@400 != null
    //#post(int compare(Object, Object)): init'ed(return_value)
    //#test_vector(int compare(Object, Object)): org.apache.roller.weblogger.pojos.ThemeResource:isDirectory(...)@389: {0}, {1}
    //#test_vector(int compare(Object, Object)): org.apache.roller.weblogger.pojos.ThemeResource:isDirectory(...)@392: {0}, {1}
    //#test_vector(int compare(Object, Object)): org.apache.roller.weblogger.pojos.ThemeResource:isDirectory(...)@395: {0}, {1}
            ThemeResource r2 = (ThemeResource)o2;
            
            // consider directories so they go to the top of the list
            if(r1.isDirectory() && r2.isDirectory()) {
    //#Resources.java:389: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.ThemeResource:isDirectory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#    method: int compare(Object, Object)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.ThemeResource:isDirectory()
                // if we have 2 directories then just go by name
                return r1.getPath().compareTo(r2.getPath());
    //#Resources.java:391: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#    method: int compare(Object, Object)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
            } else if(r1.isDirectory()) {
    //#Resources.java:392: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.ThemeResource:isDirectory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#    method: int compare(Object, Object)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.ThemeResource:isDirectory()
                // directories go before files
                return -1;
            } else if(r2.isDirectory()) {
    //#Resources.java:395: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.ThemeResource:isDirectory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#    method: int compare(Object, Object)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.ThemeResource:isDirectory()
                // directories go before files
                return 1;
            } else {
                // if we have 2 files then just go by name
                return r1.getPath().compareTo(r2.getPath());
    //#Resources.java:400: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#    method: int compare(Object, Object)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
    //#Resources.java:400: end of method: int org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator.compare(Object, Object)
            }
        }
        public boolean equals(Object o1, Object o2) {
            ThemeResource r1 = (ThemeResource)o1;
    //#Resources.java:404: method: bool org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator.equals(Object, Object)
    //#input(bool equals(Object, Object)): o1
    //#input(bool equals(Object, Object)): o2
    //#output(bool equals(Object, Object)): return_value
    //#pre[1] (bool equals(Object, Object)): o1 != null
    //#pre[2] (bool equals(Object, Object)): o2 != null
    //#presumption(bool equals(Object, Object)): org.apache.roller.weblogger.pojos.ThemeResource:getPath(...)@414 != null
    //#post(bool equals(Object, Object)): init'ed(return_value)
    //#test_vector(bool equals(Object, Object)): org.apache.roller.weblogger.pojos.ThemeResource:isDirectory(...)@408: {0}, {1}
    //#test_vector(bool equals(Object, Object)): org.apache.roller.weblogger.pojos.ThemeResource:isFile(...)@408: {0}, {1}
    //#test_vector(bool equals(Object, Object)): org.apache.roller.weblogger.pojos.ThemeResource:isFile(...)@408: {1}, {0}
            ThemeResource r2 = (ThemeResource)o2;
            
            // need to be same type to be equals, i.e both files or directories
            if((r1.isDirectory() && !r2.isDirectory()) ||
    //#Resources.java:408: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.ThemeResource:isDirectory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#    method: bool equals(Object, Object)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.ThemeResource:isDirectory()
    //#Resources.java:408: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.ThemeResource:isFile()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#    method: bool equals(Object, Object)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.ThemeResource:isFile()
                    (r1.isFile() && !r2.isFile())) {
                return false;
            }
            
            // after that it's just a matter of comparing paths
            return r1.getPath().equals(r2.getPath());
    //#Resources.java:414: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#    method: bool equals(Object, Object)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
    //#Resources.java:414: end of method: bool org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator.equals(Object, Object)
        }
    }
    
}
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/struts2/editor/Resources$WeblogResourceComparator]
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator__static_init): __Dispatch_Table.compare(Ljava/lang/Object;Ljava/lang/Object;)I
    //#output(org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator__static_init): __Dispatch_Table.equals(Ljava/lang/Object;Ljava/lang/Object;)Z
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/struts2/editor/Resources$WeblogResourceComparator] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator__static_init): __Dispatch_Table.compare(Ljava/lang/Object;Ljava/lang/Object;)I == &compare
    //#post(org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator__static_init): __Dispatch_Table.equals(Ljava/lang/Object;Ljava/lang/Object;)Z == &equals
    //#Resources.java:: end of method: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator.org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator__static_init
    //#Resources.java:: end of class: org.apache.roller.weblogger.ui.struts2.editor.Resources$WeblogResourceComparator
    //#Resources.java:: end of class: org.apache.roller.weblogger.ui.struts2.editor.Resources
