//# 39 errors, 1,988 messages
//#
/*
    //#RollerAtomHandler.java:1:1: class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1
    //#RollerAtomHandler.java:1:1: method: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1.org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1__static_init
    //#RollerAtomHandler.java:1:1: class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
* 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.webservices.atomprotocol;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Collections;
import javax.activation.MimetypesFileTypeMap;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.FileManager;
import org.apache.roller.weblogger.business.FileNotFoundException;
import org.apache.roller.weblogger.business.FilePathException;
import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.pojos.WeblogCategory;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.util.Utilities;
import org.apache.roller.weblogger.util.WSSEUtilities;
import com.sun.syndication.feed.atom.Content;
import com.sun.syndication.feed.atom.Category;
import com.sun.syndication.feed.atom.Entry;
import com.sun.syndication.feed.atom.Feed;
import com.sun.syndication.feed.atom.Link;
import com.sun.syndication.feed.atom.Person;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.UUID;
import javax.activation.FileTypeMap;
import org.apache.commons.lang.StringUtils;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.FileIOException;
import org.apache.roller.weblogger.business.URLStrategy;
import org.apache.roller.weblogger.business.UserManager;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.business.WeblogManager;
import org.apache.roller.weblogger.business.search.IndexManager;
import org.apache.roller.weblogger.pojos.RuntimeConfigProperty;
import org.apache.roller.weblogger.pojos.WeblogEntryTag;
import org.apache.roller.weblogger.pojos.ThemeResource;
import org.apache.roller.weblogger.util.cache.CacheManager;

/**
 * Weblogger's ROME-based Atom Protocol implementation.
 * 
 * Each Weblogger workspace has two collections, one that accepts entries and 
 * that accepts everything. The entries collection represents the weblog 
 * entries in a single weblog and the everything collection represents that 
 * weblog's uploaded-files. 
 * 
 * Here are the APP URIs suppored by Weblogger:
 * 
 * <pre>
 *    /roller-services/app
 *    Introspection doc
 * 
 *    /roller-services/app/[weblog-handle>/entries
 *    Entry collection for a blog
 * 
 *    /roller-services/app/[weblog-handle]/entries/[offset]
 *    Entry collection for a blog, with offset
 * 
 *    /roller-services/app/[weblog-handle]/entry/[id]
 *    Individual entry (i.e. edit URI)
 * 
 *    /roller-services/app/[weblog-handle]/resources
 *    Resource (i.e. file-uploads) collection for a blog
 * 
 *    /roller-services/app/[weblog-handle]/resources/[offset]
 *    Resource collection for a blog, with offset
 * 
 *    /roller-services/app/[weblog-handle]/resource/*.media-link[name]
 *    Individual resource metadata (i.e. edit URI)
 * 
 *    /roller-services/app/[weblog-handle]/resource/[name]
 *    Individual resource data (i.e. media-edit URI)
 * 
 * </pre>
 * 
 * @author David M Johnson
 */
public class RollerAtomHandler implements AtomHandler {
    private Weblogger roller;
    private User      user;
    private int       maxEntries = 20;
    
    private final String atomURL;
    
    private static boolean throttle = true;
    //#RollerAtomHandler.java:120: method: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler]
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.authenticateBASIC(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.authenticateWSSE(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.canEdit(Lorg/apache/roller/weblogger/pojos/Weblog;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.canEdit(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.canView(Lorg/apache/roller/weblogger/pojos/Weblog;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.canView(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.copyToRollerEntry(Lcom/sun/syndication/feed/atom/Entry;Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.createAtomEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.createAtomResourceEntry(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/ThemeResource;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.createFileName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.deleteEntry([Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.filePathFromPathInfo([Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getAcceptedContentTypeRange()Ljava/util/List;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getAuthenticatedUsername()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getCollection([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getCollectionOfEntries([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getCollectionOfResources([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getEntry([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getIntrospection()Lorg/apache/roller/weblogger/webservices/atomprotocol/AtomService;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getMediaResource([Ljava/lang/String;)Lorg/apache/roller/weblogger/webservices/atomprotocol/AtomMediaResource;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getWeblogCategoryScheme(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.isCollectionURI([Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.isEntryURI([Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.isIntrospectionURI([Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.isMediaEditURI([Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.oneSecondThrottle()V
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.postEntry([Ljava/lang/String;Lcom/sun/syndication/feed/atom/Entry;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.postMedia([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.putEntry([Ljava/lang/String;Lcom/sun/syndication/feed/atom/Entry;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.putMedia([Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.reindexEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): log
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): org/apache/roller/weblogger/webservices/atomprotocol/AtomHandler.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler]
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): throttle
    //#presumption(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): org.apache.commons.logging.LogFactory:getFactory(...)@122 != null
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): org/apache/roller/weblogger/webservices/atomprotocol/AtomHandler.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.authenticateBASIC(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String; == &authenticateBASIC
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.authenticateWSSE(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String; == &authenticateWSSE
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.canEdit(Lorg/apache/roller/weblogger/pojos/Weblog;)Z == &canEdit
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.canEdit(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Z == &canEdit
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.canView(Lorg/apache/roller/weblogger/pojos/Weblog;)Z == &canView
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.canView(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Z == &canView
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.copyToRollerEntry(Lcom/sun/syndication/feed/atom/Entry;Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V == &copyToRollerEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.createAtomEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)Lcom/sun/syndication/feed/atom/Entry; == &createAtomEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.createAtomResourceEntry(Lorg/apache/roller/weblogger/pojos/Weblog;Lorg/apache/roller/weblogger/pojos/ThemeResource;)Lcom/sun/syndication/feed/atom/Entry; == &createAtomResourceEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.createFileName(Lorg/apache/roller/weblogger/pojos/Weblog;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; == &createFileName
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.deleteEntry([Ljava/lang/String;)V == &deleteEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.filePathFromPathInfo([Ljava/lang/String;)Ljava/lang/String; == &filePathFromPathInfo
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getAcceptedContentTypeRange()Ljava/util/List; == &getAcceptedContentTypeRange
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getAuthenticatedUsername()Ljava/lang/String; == &getAuthenticatedUsername
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getCollection([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed; == &getCollection
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getCollectionOfEntries([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed; == &getCollectionOfEntries
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getCollectionOfResources([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed; == &getCollectionOfResources
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getEntry([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Entry; == &getEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getIntrospection()Lorg/apache/roller/weblogger/webservices/atomprotocol/AtomService; == &getIntrospection
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getMediaResource([Ljava/lang/String;)Lorg/apache/roller/weblogger/webservices/atomprotocol/AtomMediaResource; == &getMediaResource
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.getWeblogCategoryScheme(Lorg/apache/roller/weblogger/pojos/Weblog;)Ljava/lang/String; == &getWeblogCategoryScheme
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.isCollectionURI([Ljava/lang/String;)Z == &isCollectionURI
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.isEntryURI([Ljava/lang/String;)Z == &isEntryURI
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.isIntrospectionURI([Ljava/lang/String;)Z == &isIntrospectionURI
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.isMediaEditURI([Ljava/lang/String;)Z == &isMediaEditURI
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.oneSecondThrottle()V == &oneSecondThrottle
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.postEntry([Ljava/lang/String;Lcom/sun/syndication/feed/atom/Entry;)Lcom/sun/syndication/feed/atom/Entry; == &postEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.postMedia([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/sun/syndication/feed/atom/Entry; == &postMedia
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.putEntry([Ljava/lang/String;Lcom/sun/syndication/feed/atom/Entry;)Lcom/sun/syndication/feed/atom/Entry; == &putEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.putMedia([Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/sun/syndication/feed/atom/Entry; == &putMedia
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): __Dispatch_Table.reindexEntry(Lorg/apache/roller/weblogger/pojos/WeblogEntry;)V == &reindexEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): init'ed(log)
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init): init'ed(throttle)
    
    private static Log log =
    //#RollerAtomHandler.java:122: Warning: method not available
    //#    -- call on LogFactory org.apache.commons.logging.LogFactory:getFactory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init
    //#    unanalyzed callee: LogFactory org.apache.commons.logging.LogFactory:getFactory()
    //#RollerAtomHandler.java:122: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getInstance(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getInstance(Class)
            LogFactory.getFactory().getInstance(RollerAtomHandler.class);
    
    static {
        throttle = WebloggerConfig
    //#RollerAtomHandler.java:126: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.config.WebloggerConfig:getBooleanProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init
    //#    unanalyzed callee: bool org.apache.roller.weblogger.config.WebloggerConfig:getBooleanProperty(String)
            .getBooleanProperty("webservices.atomprotocol.oneSecondThrottle");
    }
    //#RollerAtomHandler.java:128: end of method: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler__static_init
    
    //---------------------------------------------------------------- construction
    
    /**
     * Create Atom handler for a request and attempt to authenticate user.
     * If user is authenticated, then getAuthenticatedUsername() will return
     * then user's name, otherwise it will return null.
     */
    public RollerAtomHandler(HttpServletRequest request) {
    //#RollerAtomHandler.java:137: method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)
    //#input(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): __Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler]
    //#input(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): __Descendant_Table[others]
    //#input(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): __Dispatch_Table.authenticateBASIC(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String;
    //#input(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): log
    //#input(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): request
    //#input(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): this
    //#input(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): this.__Tag
    //#output(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): this.atomURL
    //#output(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): this.maxEntries
    //#output(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): this.roller
    //#output(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): this.user
    //#pre[4] (void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): this.__Tag == org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler
    //#pre[1] (void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): (soft) log != null
    //#pre[2] (void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): (soft) request != null
    //#presumption(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@151 != null
    //#presumption(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@145 != null
    //#presumption(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@138 != null
    //#presumption(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@151 != null
    //#post(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): init'ed(this.atomURL)
    //#post(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): this.maxEntries == 20
    //#post(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): (soft) this.roller != null
    //#post(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): init'ed(this.user)
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:javax.servlet.http.HttpServletRequest:getHeader
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.util.StringTokenizer
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.util.StringTokenizer:hasMoreTokens
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.util.StringTokenizer:nextToken
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.lang.String:getBytes
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:org.apache.commons.codec.binary.Base64:decodeBase64
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.lang.String
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getUserByUserName
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getProperty
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:encodePassword
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPassword
    //#unanalyzed(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)): Effects-of-calling:org.apache.commons.logging.Log:debug
        roller = WebloggerFactory.getWeblogger();
    //#RollerAtomHandler.java:138: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
        
        // TODO: decide what to do about authentication, is WSSE going to fly?
        //String userName = authenticateWSSE(request);
        String userName = authenticateBASIC(request);
        if (userName != null) {
            try {
                this.user = roller.getUserManager().getUserByUserName(userName);
    //#RollerAtomHandler.java:145: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerAtomHandler.java:145: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.business.UserManager:getUserByUserName(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)
    //#    unanalyzed callee: User org.apache.roller.weblogger.business.UserManager:getUserByUserName(String)
            } catch (Exception neverHappen) {
                log.debug("Getting user", neverHappen);
    //#RollerAtomHandler.java:147: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object, Throwable)
            } 
        }
        
        atomURL = WebloggerFactory.getWeblogger().getUrlStrategy().getAtomProtocolURL(true);
    //#RollerAtomHandler.java:151: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#RollerAtomHandler.java:151: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#RollerAtomHandler.java:151: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getAtomProtocolURL(bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getAtomProtocolURL(bool)
    }
    //#RollerAtomHandler.java:152: end of method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler(HttpServletRequest)
    
    /**
     * Return weblogHandle of authenticated user or null if there is none.
     */
    public String getAuthenticatedUsername() {
        String ret = null;
    //#RollerAtomHandler.java:158: method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getAuthenticatedUsername()
    //#input(String getAuthenticatedUsername()): this
    //#input(String getAuthenticatedUsername()): this.user
    //#output(String getAuthenticatedUsername()): return_value
    //#pre[2] (String getAuthenticatedUsername()): init'ed(this.user)
    //#post(String getAuthenticatedUsername()): init'ed(return_value)
    //#test_vector(String getAuthenticatedUsername()): this.user: Addr_Set{null}, Inverse{null}
        if (this.user != null) {
            ret = user.getUserName();
    //#RollerAtomHandler.java:160: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String getAuthenticatedUsername()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
        }
        return ret;
    //#RollerAtomHandler.java:162: end of method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getAuthenticatedUsername()
    }
    
    //---------------------------------------------------------------- introspection
    
    /**
     * Return Atom service document for site, getting blog-name from pathInfo.
     * The workspace will contain collections for entries, categories and resources.
     */
    public AtomService getIntrospection() throws AtomException {
        log.debug("Entering");
    //#RollerAtomHandler.java:172: method: AtomService org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getIntrospection()
    //#RollerAtomHandler.java:172: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(AtomService getIntrospection()): "."._tainted
    //#input(AtomService getIntrospection()): ".entries"._tainted
    //#input(AtomService getIntrospection()): ".resources."._tainted
    //#input(AtomService getIntrospection()): "Media Files: "._tainted
    //#input(AtomService getIntrospection()): java.lang.Boolean.TRUE
    //#input(AtomService getIntrospection()): log
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/AtomService.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AtomService]
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/AtomService.__Dispatch_Table.addWorkspace(Lorg/apache/roller/weblogger/webservices/atomprotocol/Workspace;)V
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Categories.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/Categories]
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Categories.__Dispatch_Table.addCategory(Lcom/sun/syndication/feed/atom/Category;)V
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Categories.__Dispatch_Table.setFixed(Z)V
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Categories.__Dispatch_Table.setScheme(Ljava/lang/String;)V
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Collection.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/Collection]
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Collection.__Dispatch_Table.addAccept(Ljava/lang/String;)V
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Collection.__Dispatch_Table.addCategories(Lorg/apache/roller/weblogger/webservices/atomprotocol/Categories;)V
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Collection.__Dispatch_Table.setAccepts(Ljava/util/List;)V
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Workspace.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/Workspace]
    //#input(AtomService getIntrospection()): org/apache/roller/weblogger/webservices/atomprotocol/Workspace.__Dispatch_Table.addCollection(Lorg/apache/roller/weblogger/webservices/atomprotocol/Collection;)V
    //#input(AtomService getIntrospection()): this
    //#input(AtomService getIntrospection()): this.atomURL
    //#input(AtomService getIntrospection()): this.atomURL._tainted
    //#input(AtomService getIntrospection()): this.roller
    //#input(AtomService getIntrospection()): this.user
    //#output(AtomService getIntrospection()): new ArrayList(AtomService#1) num objects
    //#output(AtomService getIntrospection()): new AtomService(getIntrospection#1) num objects
    //#output(AtomService getIntrospection()): new AtomService(getIntrospection#1).__Tag
    //#output(AtomService getIntrospection()): new AtomService(getIntrospection#1).workspaces
    //#output(AtomService getIntrospection()): return_value
    //#new obj(AtomService getIntrospection()): new ArrayList(AtomService#1)
    //#new obj(AtomService getIntrospection()): new AtomService(getIntrospection#1)
    //#pre[1] (AtomService getIntrospection()): log != null
    //#pre[5] (AtomService getIntrospection()): this.roller != null
    //#pre[6] (AtomService getIntrospection()): init'ed(this.user)
    //#presumption(AtomService getIntrospection()): dirs.length@239 <= 4_294_967_295
    //#presumption(AtomService getIntrospection()): java.lang.Boolean.TRUE != null
    //#presumption(AtomService getIntrospection()): java.util.Iterator:next(...)@188 != null
    //#presumption(AtomService getIntrospection()): java.util.Iterator:next(...)@211 != null
    //#presumption(AtomService getIntrospection()): org.apache.roller.weblogger.business.FileManager:getDirectories(...)@239 != null
    //#presumption(AtomService getIntrospection()): org.apache.roller.weblogger.business.WeblogManager:getWeblogCategories(...)@209 != null
    //#presumption(AtomService getIntrospection()): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@239 != null
    //#presumption(AtomService getIntrospection()): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@176 != null
    //#presumption(AtomService getIntrospection()): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@209 != null
    //#presumption(AtomService getIntrospection()): org.apache.roller.weblogger.pojos.WeblogCategory:getPath(...)@213 != null
    //#presumption(AtomService getIntrospection()): org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite(...)@191 != null
    //#presumption(AtomService getIntrospection()): org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite(...)@194 != null
    //#presumption(AtomService getIntrospection()): org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite(...)@199 != null
    //#post(AtomService getIntrospection()): return_value == &new AtomService(getIntrospection#1)
    //#post(AtomService getIntrospection()): new ArrayList(AtomService#1) num objects == 1
    //#post(AtomService getIntrospection()): new AtomService(getIntrospection#1) num objects == 1
    //#post(AtomService getIntrospection()): new AtomService(getIntrospection#1).__Tag == org/apache/roller/weblogger/webservices/atomprotocol/AtomService
    //#post(AtomService getIntrospection()): new AtomService(getIntrospection#1).workspaces == &new ArrayList(AtomService#1)
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogURL
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getPropertiesManager
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:org.apache.roller.weblogger.business.PropertiesManager:getProperties
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:java.util.Map:get
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:org.apache.commons.lang.StringUtils:deleteWhitespace
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:org.apache.commons.lang.StringUtils:split
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:java.util.List:add
    //#unanalyzed(AtomService getIntrospection()): Effects-of-calling:java.lang.Exception
    //#test_vector(AtomService getIntrospection()): java.lang.Boolean:equals(...)@191: {1}, {0}
    //#test_vector(AtomService getIntrospection()): java.util.Iterator:hasNext(...)@187: {0}, {1}
    //#test_vector(AtomService getIntrospection()): java.util.Iterator:hasNext(...)@210: {0}, {1}
    //#test_vector(AtomService getIntrospection()): org.apache.roller.weblogger.business.UserManager:getAllPermissions(...)@176: Addr_Set{null}, Inverse{null}
        AtomService service = new AtomService();
        List perms = null;
    //#RollerAtomHandler.java:174: Warning: unused assignment
    //#    unused assignment into perms
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    Attribs:  Uncertain
        try {
            perms = roller.getUserManager().getAllPermissions(user);
    //#RollerAtomHandler.java:176: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerAtomHandler.java:176: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.business.UserManager:getAllPermissions(User)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: List org.apache.roller.weblogger.business.UserManager:getAllPermissions(User)
        } catch (WebloggerException re) {
            throw new AtomException("Getting user's weblogs", re);
        }
        List uploadAccepts = new ArrayList();
    //#RollerAtomHandler.java:180: Warning: unused assignment
    //#    unused assignment into uploadAccepts
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
        try {           
            uploadAccepts = getAcceptedContentTypeRange();
        } catch (WebloggerException re) {
            throw new AtomException("Getting site's accept range", re);
        }
        if (perms != null) {
            for (Iterator iter=perms.iterator(); iter.hasNext();) {
                WeblogPermission perm = (WeblogPermission)iter.next();
                
                // only include weblog's that have client API support enabled
                if (!Boolean.TRUE.equals(perm.getWebsite().getEnableBloggerApi())) continue;
    //#RollerAtomHandler.java:191: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#RollerAtomHandler.java:191: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi()
                                
                // Create workspace to represent weblog
                Workspace workspace = new Workspace(
    //#RollerAtomHandler.java:194: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#RollerAtomHandler.java:194: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#RollerAtomHandler.java:194: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.Utilities:removeHTML(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.Utilities:removeHTML(String)
                    Utilities.removeHTML(perm.getWebsite().getName()), "text");
                service.addWorkspace(workspace);
                
                // Create collection for entries within that workspace
                String handle = perm.getWebsite().getHandle();
    //#RollerAtomHandler.java:199: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#RollerAtomHandler.java:199: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                Collection entryCol = new Collection("Weblog Entries", "text", 
                    atomURL+"/"+handle+"/entries");
                entryCol.addAccept("application/atom+xml;type=entry");
                try {  
                    // Add fixed categories using scheme that points to 
                    // weblog because categories are weblog specific
                    Categories cats = new Categories();
                    cats.setFixed(true);
                    cats.setScheme(getWeblogCategoryScheme(perm.getWebsite()));
    //#RollerAtomHandler.java:208: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
                    List rollerCats = roller.getWeblogManager().getWeblogCategories(perm.getWebsite(), false);
    //#RollerAtomHandler.java:209: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#RollerAtomHandler.java:209: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#RollerAtomHandler.java:209: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.business.WeblogManager:getWeblogCategories(Weblog, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: List org.apache.roller.weblogger.business.WeblogManager:getWeblogCategories(Weblog, bool)
                    for (Iterator it = rollerCats.iterator(); it.hasNext();) {
                        WeblogCategory rollerCat = (WeblogCategory)it.next();
                        Category cat = new Category();
    //#RollerAtomHandler.java:212: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Category()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Category()
                        cat.setTerm(rollerCat.getPath().substring(1));
    //#RollerAtomHandler.java:213: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#RollerAtomHandler.java:213: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Category:setTerm(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Category:setTerm(String)
                        cat.setLabel(rollerCat.getName());
    //#RollerAtomHandler.java:214: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getName()
    //#RollerAtomHandler.java:214: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Category:setLabel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Category:setLabel(String)
                        cats.addCategory(cat);
                    } 
                    entryCol.addCategories(cats);
                    
                    // Add tags as free-form categories using scheme that points
                    // to site because tags can be considered site-wide
                    Categories tags = new Categories();
                    tags.setFixed(false);
                    entryCol.addCategories(tags);
                    
                } catch (Exception e) {
                    throw new AtomException("Fetching weblog categories");
                }                               
                workspace.addCollection(entryCol);

                // Add media collection for upload dir
                Collection uploadCol = new Collection("Media Files", "text", 
                    atomURL+"/"+handle+"/resources/");
                uploadCol.setAccepts(uploadAccepts);
                workspace.addCollection(uploadCol);

                // And add one media collection for each of weblog's upload sub-directories
                ThemeResource[] dirs;
                try {
                    dirs = roller.getFileManager().getDirectories(perm.getWebsite());
    //#RollerAtomHandler.java:239: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#RollerAtomHandler.java:239: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogPermission:getWebsite()
    //#RollerAtomHandler.java:239: Warning: method not available
    //#    -- call on ThemeResource[] org.apache.roller.weblogger.business.FileManager:getDirectories(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: ThemeResource[] org.apache.roller.weblogger.business.FileManager:getDirectories(Weblog)
                    for (int i=0; i<dirs.length; i++) {
                        Collection uploadSubCol = new Collection(
    //#RollerAtomHandler.java:241: ?use of default init
    //#    init'ed(dirs[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    basic block: bb_21
    //#    assertion: init'ed(dirs[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#RollerAtomHandler.java:241: ?null dereference
    //#    not_init'ed(dirs[i])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    basic block: bb_21
    //#    assertion: not_init'ed(dirs[i])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#RollerAtomHandler.java:241: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
                            "Media Files: " + dirs[i].getPath(), "text",
                            atomURL+"/"+handle+"/resources/" + dirs[i].getPath());
                        uploadSubCol.setAccepts(uploadAccepts);
                        workspace.addCollection(uploadSubCol);
                    }
                } catch (FilePathException fpe) {
                    throw new AtomException("Getting uploads directories information", fpe);
                } catch (FileNotFoundException fnfe) {
                    throw new AtomException("Getting uploads directories information", fnfe);
                }

            }
        }
        log.debug("Exiting");
    //#RollerAtomHandler.java:255: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomService getIntrospection()
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        return service;
    //#RollerAtomHandler.java:256: end of method: AtomService org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getIntrospection()
    }
    
    /**
     * Build accept range by taking things that appear to be content-type rules 
     * from site's file-upload allowed extensions.
     */
    private List getAcceptedContentTypeRange() throws WebloggerException {
        List accepts = new ArrayList();
    //#RollerAtomHandler.java:264: method: List org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getAcceptedContentTypeRange()
    //#output(List getAcceptedContentTypeRange()): new ArrayList(getAcceptedContentTypeRange#1) num objects
    //#output(List getAcceptedContentTypeRange()): return_value
    //#new obj(List getAcceptedContentTypeRange()): new ArrayList(getAcceptedContentTypeRange#1)
    //#presumption(List getAcceptedContentTypeRange()): java.util.Map:get(...)@267 != null
    //#presumption(List getAcceptedContentTypeRange()): org.apache.commons.lang.StringUtils:split(...)@268 != null
    //#presumption(List getAcceptedContentTypeRange()): org.apache.roller.weblogger.business.PropertiesManager:getProperties(...)@266 != null
    //#presumption(List getAcceptedContentTypeRange()): org.apache.roller.weblogger.business.Weblogger:getPropertiesManager(...)@266 != null
    //#presumption(List getAcceptedContentTypeRange()): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@265 != null
    //#presumption(List getAcceptedContentTypeRange()): rules.length@268 <= 4_294_967_295
    //#post(List getAcceptedContentTypeRange()): return_value == &new ArrayList(getAcceptedContentTypeRange#1)
    //#post(List getAcceptedContentTypeRange()): new ArrayList(getAcceptedContentTypeRange#1) num objects == 1
        Weblogger roller = WebloggerFactory.getWeblogger();
    //#RollerAtomHandler.java:265: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: List getAcceptedContentTypeRange()
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
        Map config = roller.getPropertiesManager().getProperties();        
    //#RollerAtomHandler.java:266: Warning: method not available
    //#    -- call on PropertiesManager org.apache.roller.weblogger.business.Weblogger:getPropertiesManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: List getAcceptedContentTypeRange()
    //#    unanalyzed callee: PropertiesManager org.apache.roller.weblogger.business.Weblogger:getPropertiesManager()
    //#RollerAtomHandler.java:266: Warning: method not available
    //#    -- call on Map org.apache.roller.weblogger.business.PropertiesManager:getProperties()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: List getAcceptedContentTypeRange()
    //#    unanalyzed callee: Map org.apache.roller.weblogger.business.PropertiesManager:getProperties()
        String allows = ((RuntimeConfigProperty)config.get("uploads.types.allowed")).getValue();
    //#RollerAtomHandler.java:267: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: List getAcceptedContentTypeRange()
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.RuntimeConfigProperty:getValue()
        String[] rules = StringUtils.split(StringUtils.deleteWhitespace(allows), ",");
    //#RollerAtomHandler.java:268: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringUtils:deleteWhitespace(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: List getAcceptedContentTypeRange()
    //#    unanalyzed callee: String org.apache.commons.lang.StringUtils:deleteWhitespace(String)
    //#RollerAtomHandler.java:268: Warning: method not available
    //#    -- call on String[] org.apache.commons.lang.StringUtils:split(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: List getAcceptedContentTypeRange()
    //#    unanalyzed callee: String[] org.apache.commons.lang.StringUtils:split(String, String)
        for (int i=0; i<rules.length; i++) {
            if (rules[i].indexOf("/") == -1) continue;
    //#RollerAtomHandler.java:270: ?use of default init
    //#    init'ed(rules[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: List getAcceptedContentTypeRange()
    //#    basic block: bb_3
    //#    assertion: init'ed(rules[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#RollerAtomHandler.java:270: ?null dereference
    //#    not_init'ed(rules[i])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: List getAcceptedContentTypeRange()
    //#    basic block: bb_3
    //#    assertion: not_init'ed(rules[i])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
            accepts.add(rules[i]);
    //#RollerAtomHandler.java:271: ?use of default init
    //#    init'ed(rules[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: List getAcceptedContentTypeRange()
    //#    basic block: bb_5
    //#    assertion: init'ed(rules[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
        }
        return accepts;             
    //#RollerAtomHandler.java:273: end of method: List org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getAcceptedContentTypeRange()
    }   
    
    //----------------------------------------------------------------- collections
    
    /**
     * Return collection specified by pathinfo.
     * <pre>
     * Supports these URI forms:
     *    /<blog-name>/entries
     *    /<blog-name>/entries/offset
     *    /<blog-name>/resources
     *    /<blog-name>/resources/offset
     * </pre>
     */
    public Feed getCollection(String[] pathInfo) throws AtomException {
        if (pathInfo.length > 0 && pathInfo[1].equals("entries")) {
    //#RollerAtomHandler.java:289: method: Feed org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getCollection(String[])
    //#input(Feed getCollection(String[])): ""._tainted
    //#input(Feed getCollection(String[])): "."._tainted
    //#input(Feed getCollection(String[])): ".entries."._tainted
    //#input(Feed getCollection(String[])): ".entry."._tainted
    //#input(Feed getCollection(String[])): ".media-link"._tainted
    //#input(Feed getCollection(String[])): ".resource."._tainted
    //#input(Feed getCollection(String[])): ".resources."._tainted
    //#input(Feed getCollection(String[])): "Cannot find weblog: "._tainted
    //#input(Feed getCollection(String[])): "Not authorized to access website: "._tainted
    //#input(Feed getCollection(String[])): "Unparsable range: "._tainted
    //#input(Feed getCollection(String[])): __Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler]
    //#input(Feed getCollection(String[])): __Descendant_Table[others]
    //#input(Feed getCollection(String[])): __Dispatch_Table.getCollectionOfEntries([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed;
    //#input(Feed getCollection(String[])): __Dispatch_Table.getCollectionOfResources([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed;
    //#input(Feed getCollection(String[])): java.io.File.separator
    //#input(Feed getCollection(String[])): java.io.File.separator._tainted
    //#input(Feed getCollection(String[])): log
    //#input(Feed getCollection(String[])): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(Feed getCollection(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Feed getCollection(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Feed getCollection(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Feed getCollection(String[])): pathInfo
    //#input(Feed getCollection(String[])): pathInfo.length
    //#input(Feed getCollection(String[])): pathInfo[0]
    //#input(Feed getCollection(String[])): pathInfo[0]._tainted
    //#input(Feed getCollection(String[])): pathInfo[1]
    //#input(Feed getCollection(String[])): pathInfo[2]
    //#input(Feed getCollection(String[])): pathInfo[2]._tainted
    //#input(Feed getCollection(String[])): pathInfo[3..4_294_967_295]
    //#input(Feed getCollection(String[])): pathInfo[3..4_294_967_295]._tainted
    //#input(Feed getCollection(String[])): this
    //#input(Feed getCollection(String[])): this.__Tag
    //#input(Feed getCollection(String[])): this.atomURL
    //#input(Feed getCollection(String[])): this.atomURL._tainted
    //#input(Feed getCollection(String[])): this.maxEntries
    //#input(Feed getCollection(String[])): this.roller
    //#input(Feed getCollection(String[])): this.user
    //#output(Feed getCollection(String[])): new Feed(getCollectionOfEntries#4) num objects
    //#output(Feed getCollection(String[])): new Feed(getCollectionOfResources#5) num objects
    //#output(Feed getCollection(String[])): pathInfo[1]
    //#output(Feed getCollection(String[])): pathInfo[2]
    //#output(Feed getCollection(String[])): pathInfo[3..4_294_967_295]
    //#output(Feed getCollection(String[])): return_value
    //#new obj(Feed getCollection(String[])): new Feed(getCollectionOfEntries#4)
    //#new obj(Feed getCollection(String[])): new Feed(getCollectionOfResources#5)
    //#pre[1] (Feed getCollection(String[])): log != null
    //#pre[2] (Feed getCollection(String[])): pathInfo[1] != null
    //#pre[6] (Feed getCollection(String[])): pathInfo != null
    //#pre[13] (Feed getCollection(String[])): this.__Tag == org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler
    //#pre[17] (Feed getCollection(String[])): this.roller != null
    //#pre[3] (Feed getCollection(String[])): (soft) pathInfo[2] != null
    //#pre[5] (Feed getCollection(String[])): (soft) init'ed(pathInfo[3..4_294_967_295])
    //#pre[7] (Feed getCollection(String[])): (soft) pathInfo.length in 2..4_294_967_295
    //#pre[8] (Feed getCollection(String[])): (soft) init'ed(pathInfo[0])
    //#pre[16] (Feed getCollection(String[])): (soft) this.maxEntries <= 4_294_967_294
    //#pre[18] (Feed getCollection(String[])): (soft) init'ed(this.user)
    //#presumption(Feed getCollection(String[])): java.lang.String:equals(...)@291 == 1
    //#post(Feed getCollection(String[])): init'ed(pathInfo[1])
    //#post(Feed getCollection(String[])): init'ed(pathInfo[2])
    //#post(Feed getCollection(String[])): (soft) init'ed(pathInfo[3..4_294_967_295])
    //#post(Feed getCollection(String[])): return_value in Addr_Set{&new Feed(getCollectionOfEntries#4),&new Feed(getCollectionOfResources#5)}
    //#post(Feed getCollection(String[])): new Feed(getCollectionOfEntries#4) num objects <= 1
    //#post(Feed getCollection(String[])): new Feed(getCollectionOfResources#5) num objects <= 1
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogURL
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.List:add
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getUserName
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getFileManager
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.webservices.atomprotocol.AtomException
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.Exception
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getWeblogManager
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:createAtomResourceEntry
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.lang.Integer:parseInt
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.commons.logging.Log:warn
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogEntries
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Feed
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Feed:setId
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getName
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Feed:setTitle
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link:setHref
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link:setRel
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link:setType
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.Collections:singletonList
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Feed:setAlternateLinks
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.List:iterator
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:createAtomEntry
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getUpdated
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Feed:setUpdated
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.List:size
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Feed:setOtherLinks
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Feed:setEntries
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Category
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Category:setTerm
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getPath
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.FileManager:getFiles
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.TreeSet
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.SortedSet:add
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.SortedSet:size
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.SortedSet:toArray
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:javax.activation.FileTypeMap:getDefaultFileTypeMap
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:javax.activation.MimetypesFileTypeMap:instanceof
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:javax.activation.MimetypesFileTypeMap:addMimeTypes
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getName
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:javax.activation.FileTypeMap:getContentType
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setId
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setTitle
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLastModified
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.Date
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setUpdated
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setOtherLinks
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setSrc
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setType
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setContents
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setModules
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTitle
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setPublished
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getUpdateTime
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getText
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setValue
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getSummary
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.commons.lang.StringUtils:isNotEmpty
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setSummary
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCreator
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Person
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Person:setName
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEmailAddress
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Person:setEmail
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAuthors
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Category:setScheme
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCategory
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTags
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTag:getName
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setCategories
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAlternateLinks
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(Feed getCollection(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getStatus
    //#test_vector(Feed getCollection(String[])): java.lang.String:equals(...)@289: {0}, {1}
            return getCollectionOfEntries(pathInfo);
        } else if (pathInfo.length > 0 && pathInfo[1].equals("resources")) {
            return getCollectionOfResources(pathInfo);
        }
        throw new AtomNotFoundException("Cannot find collection specified");
    //#RollerAtomHandler.java:294: end of method: Feed org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getCollection(String[])
    }
    
    /**
     * Helper method that returns collection of entries, called by getCollection().
     */
    public Feed getCollectionOfEntries(String[] pathInfo) throws AtomException {
        log.debug("Entering");
    //#RollerAtomHandler.java:301: method: Feed org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getCollectionOfEntries(String[])
    //#RollerAtomHandler.java:301: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Feed getCollectionOfEntries(String[])): "."._tainted
    //#input(Feed getCollectionOfEntries(String[])): ".entries."._tainted
    //#input(Feed getCollectionOfEntries(String[])): ".entry."._tainted
    //#input(Feed getCollectionOfEntries(String[])): "Not authorized to access website: "._tainted
    //#input(Feed getCollectionOfEntries(String[])): "Unparsable range: "._tainted
    //#input(Feed getCollectionOfEntries(String[])): log
    //#input(Feed getCollectionOfEntries(String[])): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(Feed getCollectionOfEntries(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Feed getCollectionOfEntries(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Feed getCollectionOfEntries(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Feed getCollectionOfEntries(String[])): pathInfo
    //#input(Feed getCollectionOfEntries(String[])): pathInfo.length
    //#input(Feed getCollectionOfEntries(String[])): pathInfo[0]
    //#input(Feed getCollectionOfEntries(String[])): pathInfo[0]._tainted
    //#input(Feed getCollectionOfEntries(String[])): pathInfo[2]
    //#input(Feed getCollectionOfEntries(String[])): pathInfo[2]._tainted
    //#input(Feed getCollectionOfEntries(String[])): this
    //#input(Feed getCollectionOfEntries(String[])): this.atomURL
    //#input(Feed getCollectionOfEntries(String[])): this.atomURL._tainted
    //#input(Feed getCollectionOfEntries(String[])): this.maxEntries
    //#input(Feed getCollectionOfEntries(String[])): this.roller
    //#input(Feed getCollectionOfEntries(String[])): this.user
    //#output(Feed getCollectionOfEntries(String[])): new Feed(getCollectionOfEntries#4) num objects
    //#output(Feed getCollectionOfEntries(String[])): return_value
    //#new obj(Feed getCollectionOfEntries(String[])): new Feed(getCollectionOfEntries#4)
    //#pre[1] (Feed getCollectionOfEntries(String[])): log != null
    //#pre[2] (Feed getCollectionOfEntries(String[])): pathInfo != null
    //#pre[3] (Feed getCollectionOfEntries(String[])): pathInfo.length >= 1
    //#pre[4] (Feed getCollectionOfEntries(String[])): init'ed(pathInfo[0])
    //#pre[11] (Feed getCollectionOfEntries(String[])): this.maxEntries <= 4_294_967_294
    //#pre[12] (Feed getCollectionOfEntries(String[])): this.roller != null
    //#pre[6] (Feed getCollectionOfEntries(String[])): (soft) pathInfo[2] != null
    //#pre[13] (Feed getCollectionOfEntries(String[])): (soft) init'ed(this.user)
    //#presumption(Feed getCollectionOfEntries(String[])): java.util.Iterator:next(...)@350 != null
    //#presumption(Feed getCollectionOfEntries(String[])): org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(...)@315 != null
    //#presumption(Feed getCollectionOfEntries(String[])): org.apache.roller.weblogger.business.WeblogManager:getWeblogEntries(...)@322 != null
    //#presumption(Feed getCollectionOfEntries(String[])): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@315 != null
    //#presumption(Feed getCollectionOfEntries(String[])): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@322 != null
    //#post(Feed getCollectionOfEntries(String[])): return_value == &new Feed(getCollectionOfEntries#4)
    //#post(Feed getCollectionOfEntries(String[])): new Feed(getCollectionOfEntries#4) num objects == 1
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogURL
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.util.List:add
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getUserName
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.webservices.atomprotocol.AtomException
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.lang.Exception
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link:setHref
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link:setRel
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.util.Collections:singletonList
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Category
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Category:setTerm
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setId
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setTitle
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setUpdated
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setOtherLinks
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setType
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setContents
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setModules
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTitle
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setPublished
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getUpdateTime
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getText
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setValue
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getSummary
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.commons.lang.StringUtils:isNotEmpty
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setSummary
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCreator
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Person
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Person:setName
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEmailAddress
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Person:setEmail
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAuthors
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Category:setScheme
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCategory
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTags
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTag:getName
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setCategories
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAlternateLinks
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(Feed getCollectionOfEntries(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getStatus
    //#test_vector(Feed getCollectionOfEntries(String[])): pathInfo.length: {1,2}, {3..+Inf}
    //#test_vector(Feed getCollectionOfEntries(String[])): java.util.Iterator:hasNext(...)@349: {0}, {1}
    //#test_vector(Feed getCollectionOfEntries(String[])): java.util.List:size(...)@377: {-2_147_483_648..0}, {1..4_294_967_295}
        try {
            int start = 0;
            int max = maxEntries;
            if (pathInfo.length > 2) {
                try {
                    String s = pathInfo[2].trim();
                    start = Integer.parseInt(s);
                } catch (Throwable t) {
                    log.warn("Unparsable range: " + pathInfo[2]);
    //#RollerAtomHandler.java:310: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
                }
            }        
            String handle = pathInfo[0];
            String absUrl = WebloggerRuntimeConfig.getAbsoluteContextURL();
    //#RollerAtomHandler.java:314: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
            Weblog website = roller.getUserManager().getWebsiteByHandle(handle);
    //#RollerAtomHandler.java:315: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerAtomHandler.java:315: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
            if (website == null) {
                throw new AtomNotFoundException("Cannot find specified weblog");
            }
            if (!canView(website)) {
                throw new AtomNotAuthorizedException("Not authorized to access website: " + handle);
    //#RollerAtomHandler.java:320: ?conditional throw
    //#    canView(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    basic block: bb_6
    //#    assertion: canView(...) != 0
    //#    VN: canView(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
            }
            List entries = roller.getWeblogManager().getWeblogEntries( 
    //#RollerAtomHandler.java:322: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#RollerAtomHandler.java:322: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.business.WeblogManager:getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: List org.apache.roller.weblogger.business.WeblogManager:getWeblogEntries(Weblog, User, Date, Date, String, List, String, String, String, String, String, int, int)
                    website,           // website
                    null,              // user
                    null,              // startDate
                    null,              // endDate
                    null,              // catName
                    null,              // tags
                    null,              // status
                    null,              // text
                    "updateTime",      // sortby
                    null,
                    null,              // locale
                    start,             // offset (for range paging)
                    max + 1);          // maxEntries
            Feed feed = new Feed();
    //#RollerAtomHandler.java:336: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed()
            feed.setId(atomURL
    //#RollerAtomHandler.java:337: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#RollerAtomHandler.java:337: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setId(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setId(String)
                +"/"+website.getHandle() + "/entries/" + start);
            feed.setTitle(website.getName());
    //#RollerAtomHandler.java:339: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#RollerAtomHandler.java:339: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setTitle(String)

            Link link = new Link();
    //#RollerAtomHandler.java:341: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
            link.setHref(absUrl + "/" + website.getHandle());
    //#RollerAtomHandler.java:342: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#RollerAtomHandler.java:342: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
            link.setRel("alternate");
    //#RollerAtomHandler.java:343: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
            link.setType("text/html");
    //#RollerAtomHandler.java:344: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setType(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setType(String)
            feed.setAlternateLinks(Collections.singletonList(link));
    //#RollerAtomHandler.java:345: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setAlternateLinks(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setAlternateLinks(List)

            List atomEntries = new ArrayList();
            int count = 0;
            for (Iterator iter = entries.iterator(); iter.hasNext() && count < maxEntries; count++) {
                WeblogEntry rollerEntry = (WeblogEntry)iter.next();
                Entry entry = createAtomEntry(rollerEntry);
                atomEntries.add(entry);
                if (count == 0) {
                    // first entry is most recent
                    feed.setUpdated(entry.getUpdated());
    //#RollerAtomHandler.java:355: Warning: method not available
    //#    -- call on Date com.sun.syndication.feed.atom.Entry:getUpdated()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: Date com.sun.syndication.feed.atom.Entry:getUpdated()
    //#RollerAtomHandler.java:355: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setUpdated(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setUpdated(Date)
                }
            }
            List links = new ArrayList();
            if (entries.size() > max) { // add next link
                int nextOffset = start + max;
    //#RollerAtomHandler.java:360: ?overflow
    //#    start + max in -2_147_483_648..4_294_967_295
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    basic block: bb_15
    //#    assertion: start + max in -2_147_483_648..4_294_967_295
    //#    VN: this.maxEntries + start
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {-4_294_967_296..-2_147_483_649, 4_294_967_296..8_589_934_589}
    //#    Attribs:  Int  Bad < Exp  Bad > Exp
                String url = atomURL+"/"
    //#RollerAtomHandler.java:361: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                        + website.getHandle() + "/entries/" + nextOffset;
                Link nextLink = new Link();
    //#RollerAtomHandler.java:363: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
                nextLink.setRel("next");
    //#RollerAtomHandler.java:364: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
                nextLink.setHref(url);
    //#RollerAtomHandler.java:365: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
                links.add(nextLink);
            }
            if (start > 0) { // add previous link
                int prevOffset = start > max ? start - max : 0;
    //#RollerAtomHandler.java:369: ?overflow
    //#    start - max in -2_147_483_648..4_294_967_295
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    basic block: bb_18
    //#    assertion: start - max in -2_147_483_648..4_294_967_295
    //#    VN: start - this.maxEntries
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296..6_442_450_943}
    //#    Attribs:  Int  Bad > Exp
                String url = atomURL+"/"
    //#RollerAtomHandler.java:370: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                        +website.getHandle() + "/entries/" + prevOffset;
                Link prevLink = new Link();
    //#RollerAtomHandler.java:372: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
                prevLink.setRel("previous");
    //#RollerAtomHandler.java:373: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
                prevLink.setHref(url);
    //#RollerAtomHandler.java:374: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
                links.add(prevLink);
            }
            if (links.size() > 0) feed.setOtherLinks(links);
    //#RollerAtomHandler.java:377: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setOtherLinks(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setOtherLinks(List)
            // Use collection URI as id
            feed.setEntries(atomEntries);
    //#RollerAtomHandler.java:379: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setEntries(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setEntries(List)
            
            log.debug("Exiting");
    //#RollerAtomHandler.java:381: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfEntries(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            return feed;
        
        } catch (WebloggerException re) {
            throw new AtomException("Getting entry collection");
    //#RollerAtomHandler.java:385: end of method: Feed org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getCollectionOfEntries(String[])
        }
    }
    
    /**
     * Helper method that returns collection of resources, called by getCollection().
     *   /handle/resources/offset
     *   /handle/resources/path/offset
     */
    public Feed getCollectionOfResources(String[] rawPathInfo) throws AtomException {
        log.debug("Entering");
    //#RollerAtomHandler.java:395: method: Feed org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getCollectionOfResources(String[])
    //#RollerAtomHandler.java:395: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Feed getCollectionOfResources(String[])): ""._tainted
    //#input(Feed getCollectionOfResources(String[])): "."._tainted
    //#input(Feed getCollectionOfResources(String[])): ".media-link"._tainted
    //#input(Feed getCollectionOfResources(String[])): ".resource."._tainted
    //#input(Feed getCollectionOfResources(String[])): ".resources."._tainted
    //#input(Feed getCollectionOfResources(String[])): "Cannot find weblog: "._tainted
    //#input(Feed getCollectionOfResources(String[])): java.io.File.separator
    //#input(Feed getCollectionOfResources(String[])): java.io.File.separator._tainted
    //#input(Feed getCollectionOfResources(String[])): log
    //#input(Feed getCollectionOfResources(String[])): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(Feed getCollectionOfResources(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Feed getCollectionOfResources(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Feed getCollectionOfResources(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Feed getCollectionOfResources(String[])): rawPathInfo
    //#input(Feed getCollectionOfResources(String[])): rawPathInfo.length
    //#input(Feed getCollectionOfResources(String[])): rawPathInfo[0]
    //#input(Feed getCollectionOfResources(String[])): rawPathInfo[0]._tainted
    //#input(Feed getCollectionOfResources(String[])): rawPathInfo[1..4_294_967_295]
    //#input(Feed getCollectionOfResources(String[])): rawPathInfo[1..4_294_967_295]._tainted
    //#input(Feed getCollectionOfResources(String[])): this
    //#input(Feed getCollectionOfResources(String[])): this.atomURL
    //#input(Feed getCollectionOfResources(String[])): this.atomURL._tainted
    //#input(Feed getCollectionOfResources(String[])): this.maxEntries
    //#input(Feed getCollectionOfResources(String[])): this.roller
    //#input(Feed getCollectionOfResources(String[])): this.user
    //#output(Feed getCollectionOfResources(String[])): new Feed(getCollectionOfResources#5) num objects
    //#output(Feed getCollectionOfResources(String[])): rawPathInfo[1..4_294_967_295]
    //#output(Feed getCollectionOfResources(String[])): return_value
    //#new obj(Feed getCollectionOfResources(String[])): new Feed(getCollectionOfResources#5)
    //#pre[1] (Feed getCollectionOfResources(String[])): log != null
    //#pre[3] (Feed getCollectionOfResources(String[])): rawPathInfo != null
    //#pre[11] (Feed getCollectionOfResources(String[])): init'ed(this.maxEntries)
    //#pre[12] (Feed getCollectionOfResources(String[])): this.roller != null
    //#pre[2] (Feed getCollectionOfResources(String[])): (soft) init'ed(rawPathInfo[1..4_294_967_295])
    //#pre[4] (Feed getCollectionOfResources(String[])): (soft) rawPathInfo.length in 1..4_294_967_295
    //#pre[5] (Feed getCollectionOfResources(String[])): (soft) init'ed(rawPathInfo[0])
    //#pre[13] (Feed getCollectionOfResources(String[])): (soft) init'ed(this.user)
    //#presumption(Feed getCollectionOfResources(String[])): files.length@434 <= 4_294_967_295
    //#presumption(Feed getCollectionOfResources(String[])): init'ed(java.io.File.separator)
    //#presumption(Feed getCollectionOfResources(String[])): java.lang.Integer:parseInt(...)@402 >= 0
    //#presumption(Feed getCollectionOfResources(String[])): java.util.SortedSet:size(...)@451 >= 0
    //#presumption(Feed getCollectionOfResources(String[])): java.util.SortedSet:toArray(...)@451 != null
    //#presumption(Feed getCollectionOfResources(String[])): org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(...)@414 != null
    //#presumption(Feed getCollectionOfResources(String[])): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@433 != null
    //#presumption(Feed getCollectionOfResources(String[])): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@414 != null
    //#post(Feed getCollectionOfResources(String[])): (soft) init'ed(rawPathInfo[1..4_294_967_295])
    //#post(Feed getCollectionOfResources(String[])): return_value == &new Feed(getCollectionOfResources#5)
    //#post(Feed getCollectionOfResources(String[])): new Feed(getCollectionOfResources#5) num objects == 1
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.util.List:add
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.webservices.atomprotocol.AtomException
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.lang.Exception
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link:setHref
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link:setRel
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getUpdated
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getPath
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:javax.activation.FileTypeMap:getDefaultFileTypeMap
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:javax.activation.MimetypesFileTypeMap:instanceof
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:javax.activation.MimetypesFileTypeMap:addMimeTypes
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getName
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:javax.activation.FileTypeMap:getContentType
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setId
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setTitle
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLastModified
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:java.util.Date
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setUpdated
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setOtherLinks
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setSrc
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setType
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setContents
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#unanalyzed(Feed getCollectionOfResources(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setModules
    //#test_vector(Feed getCollectionOfResources(String[])): rawPathInfo.length: {1,2}, {3..4_294_967_295}
    //#test_vector(Feed getCollectionOfResources(String[])): java.lang.String:equals(...)@410: {1}, {0}
    //#test_vector(Feed getCollectionOfResources(String[])): org.apache.roller.weblogger.business.FileManager:getFiles(...)@434: Addr_Set{null}, Inverse{null}
        try {
            int start = 0;
            int max = maxEntries;
            String[] pathInfo = rawPathInfo;
            if (rawPathInfo.length > 2) {
                try {
                    start = Integer.parseInt(rawPathInfo[rawPathInfo.length - 1]);
                    pathInfo = new String[rawPathInfo.length - 1];
                    for (int i=0; i<rawPathInfo.length - 1; i++) {
                        pathInfo[i] = rawPathInfo[i];
                    }
                } catch (Exception ingored) {}
            }
            String path = filePathFromPathInfo(pathInfo);
    //#RollerAtomHandler.java:409: ?precondition failure
    //#    org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.filePathFromPathInfo: (soft) init'ed(pathInfo[2..4_294_967_295])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_9
    //#    assertion: (soft) init'ed(pathInfo[2..4_294_967_295])
    //#    callee: String org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.filePathFromPathInfo(String[])
    //#    callee assertion: (soft) init'ed(pathInfo[2..4_294_967_295])
    //#    callee file: RollerAtomHandler.java
    //#    callee precondition index: [3]
    //#    callee srcpos: 1274
    //#    VN: pathInfo[2..4_294_967_295]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Soft  Bad only invalid
            if (!path.equals("")) path = path + File.separator;
    //#RollerAtomHandler.java:410: ?null dereference
    //#    path != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_9
    //#    assertion: path != null
    //#    VN: filePathFromPathInfo(...)
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
            
            String handle = pathInfo[0];
            String absUrl = WebloggerRuntimeConfig.getAbsoluteContextURL();
    //#RollerAtomHandler.java:413: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
            Weblog website = roller.getUserManager().getWebsiteByHandle(handle);
    //#RollerAtomHandler.java:414: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerAtomHandler.java:414: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
            if (website == null) {
                throw new AtomNotFoundException("Cannot find weblog: " + handle);
            }
            if (!canView(website)) {
    //#RollerAtomHandler.java:418: ?org/apache/roller/weblogger/webservices/atomprotocol/AtomNotAuthorizedException check
    //#    canView(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_13
    //#    assertion: canView(...) != 0
    //#    VN: canView(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
                throw new AtomNotAuthorizedException("Not authorized to access website");
            }
                        
            Feed feed = new Feed();
    //#RollerAtomHandler.java:422: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed()
            feed.setId(atomURL
    //#RollerAtomHandler.java:423: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#RollerAtomHandler.java:423: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setId(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setId(String)
                +"/"+website.getHandle() + "/resources/" + path + start);                
            feed.setTitle(website.getName());
    //#RollerAtomHandler.java:425: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getName()
    //#RollerAtomHandler.java:425: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setTitle(String)

            Link link = new Link();
    //#RollerAtomHandler.java:427: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
            link.setHref(absUrl + "/" + website.getHandle());
    //#RollerAtomHandler.java:428: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#RollerAtomHandler.java:428: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
            link.setRel("alternate");
    //#RollerAtomHandler.java:429: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
            link.setType("text/html");
    //#RollerAtomHandler.java:430: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setType(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setType(String)
            feed.setAlternateLinks(Collections.singletonList(link));
    //#RollerAtomHandler.java:431: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setAlternateLinks(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setAlternateLinks(List)

            FileManager fmgr = roller.getFileManager();
    //#RollerAtomHandler.java:433: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
            ThemeResource[] files = fmgr.getFiles(website, path);
    //#RollerAtomHandler.java:434: Warning: method not available
    //#    -- call on ThemeResource[] org.apache.roller.weblogger.business.FileManager:getFiles(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: ThemeResource[] org.apache.roller.weblogger.business.FileManager:getFiles(Weblog, String)

            SortedSet sortedSet = new TreeSet(new Comparator() {
    //#RollerAtomHandler.java:436: method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1.org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1(RollerAtomHandler)
    //#input(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1(RollerAtomHandler)): Param_1
    //#input(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1(RollerAtomHandler)): this
    //#output(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1(RollerAtomHandler)): this.this$0
    //#post(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1(RollerAtomHandler)): this.this$0 == Param_1
    //#post(void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1(RollerAtomHandler)): init'ed(this.this$0)
    //#RollerAtomHandler.java:436: end of method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1.org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1(RollerAtomHandler)
                public int compare(Object o1, Object o2) {
                    ThemeResource f1 = (ThemeResource)o1;
    //#RollerAtomHandler.java:438: method: int org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1.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)): o2 != null
    //#post(int compare(Object, Object)): return_value in -1..1
                    ThemeResource f2 = (ThemeResource)o2;
                    if (f1.getLastModified() < f2.getLastModified()) return 1;
    //#RollerAtomHandler.java:440: Warning: method not available
    //#    -- call on long org.apache.roller.weblogger.pojos.ThemeResource:getLastModified()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1
    //#    method: int compare(Object, Object)
    //#    unanalyzed callee: long org.apache.roller.weblogger.pojos.ThemeResource:getLastModified()
                    else if (f1.getLastModified() == f2.getLastModified()) return 0;
    //#RollerAtomHandler.java:441: Warning: method not available
    //#    -- call on long org.apache.roller.weblogger.pojos.ThemeResource:getLastModified()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1
    //#    method: int compare(Object, Object)
    //#    unanalyzed callee: long org.apache.roller.weblogger.pojos.ThemeResource:getLastModified()
                    else return -1;
    //#RollerAtomHandler.java:442: end of method: int org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1.compare(Object, Object)
                }
            });
                                    
            if (files != null && start < files.length) {  
                for (int j=0; j<files.length; j++) {
                    sortedSet.add(files[j]);
    //#RollerAtomHandler.java:448: ?use of default init
    //#    init'ed(files[j])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_17
    //#    assertion: init'ed(files[j])
    //#    VN: files[j]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
                }
                int count = 0;
                ThemeResource[] sortedResources = 
                   (ThemeResource[])sortedSet.toArray(new ThemeResource[sortedSet.size()]);
                List atomEntries = new ArrayList();
                for (int i=start; i<(start + max) && i<(sortedResources.length); i++) {
    //#RollerAtomHandler.java:454: ?overflow
    //#    i in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_23
    //#    assertion: i in -2_147_483_649..4_294_967_294
    //#    VN: i + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
                    Entry entry = createAtomResourceEntry(website, sortedResources[i]);
    //#RollerAtomHandler.java:455: ?use of default init
    //#    init'ed(sortedResources[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_21
    //#    assertion: init'ed(sortedResources[i])
    //#    VN: sortedResources[i]
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#RollerAtomHandler.java:455: ?precondition failure
    //#    org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.createAtomResourceEntry: file != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_21
    //#    assertion: sortedResources[i] != null
    //#    callee: Entry org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.createAtomResourceEntry(Weblog, ThemeResource)
    //#    callee assertion: file != null
    //#    callee file: RollerAtomHandler.java
    //#    callee precondition index: [1]
    //#    callee srcpos: 1138
    //#    VN: sortedResources[i]
    //#    Expected: Inverse{null}
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
                    atomEntries.add(entry);
                    if (count == 0) {
                        // first entry is most recent
                        feed.setUpdated(entry.getUpdated());
    //#RollerAtomHandler.java:459: Warning: method not available
    //#    -- call on Date com.sun.syndication.feed.atom.Entry:getUpdated()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: Date com.sun.syndication.feed.atom.Entry:getUpdated()
    //#RollerAtomHandler.java:459: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setUpdated(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setUpdated(Date)
                    }
                    count++;
    //#RollerAtomHandler.java:461: ?overflow
    //#    count in -2_147_483_649..4_294_967_294
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_23
    //#    assertion: count in -2_147_483_649..4_294_967_294
    //#    VN: count + 1
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296}
    //#    Attribs:  Int  Bad singleton  Bad > Exp
                }

                List otherLinks = new ArrayList();
                if (start + count < files.length) { // add next link
                    int nextOffset = start + max;
    //#RollerAtomHandler.java:466: ?overflow
    //#    start + max in -2_147_483_648..4_294_967_295
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_25
    //#    assertion: start + max in -2_147_483_648..4_294_967_295
    //#    VN: this.maxEntries + start
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296..8_589_934_589}
    //#    Attribs:  Int  Bad > Exp
                    String url = atomURL
    //#RollerAtomHandler.java:467: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                        +"/"+ website.getHandle() + "/resources/" + path + nextOffset;
                    Link nextLink = new Link();
    //#RollerAtomHandler.java:469: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
                    nextLink.setRel("next");
    //#RollerAtomHandler.java:470: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
                    nextLink.setHref(url);
    //#RollerAtomHandler.java:471: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
                    otherLinks.add(nextLink);
                }
                if (start > 0) { // add previous link
                    int prevOffset = start > max ? start - max : 0;
    //#RollerAtomHandler.java:475: ?overflow
    //#    start - max in -2_147_483_648..4_294_967_295
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    basic block: bb_28
    //#    assertion: start - max in -2_147_483_648..4_294_967_295
    //#    VN: start - this.maxEntries
    //#    Expected: {-2_147_483_648..4_294_967_295, Invalid}
    //#    Bad: {4_294_967_296..6_442_450_942}
    //#    Attribs:  Int  Bad > Exp
                    String url = atomURL
    //#RollerAtomHandler.java:476: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                        +"/"+website.getHandle() + "/resources/" + path + prevOffset;
                    Link prevLink = new Link();
    //#RollerAtomHandler.java:478: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
                    prevLink.setRel("previous");
    //#RollerAtomHandler.java:479: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
                    prevLink.setHref(url);
    //#RollerAtomHandler.java:480: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
                    otherLinks.add(prevLink);
                }
                feed.setOtherLinks(otherLinks);
    //#RollerAtomHandler.java:483: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setOtherLinks(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setOtherLinks(List)
                feed.setEntries(atomEntries);
    //#RollerAtomHandler.java:484: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Feed:setEntries(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Feed:setEntries(List)
            }
            
            log.debug("Existing");
    //#RollerAtomHandler.java:487: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Feed getCollectionOfResources(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            return feed;
       
        } catch (WebloggerException re) {
            throw new AtomException("Getting resource collection");
    //#RollerAtomHandler.java:491: end of method: Feed org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getCollectionOfResources(String[])
        }
    }
    
    //--------------------------------------------------------------------- entries

    /**
     * Create entry in the entry collection (a Weblogger blog has only one).
     */
    public Entry postEntry(String[] pathInfo, Entry entry) throws AtomException {
        log.debug("Entering");
    //#RollerAtomHandler.java:501: method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.postEntry(String[], Entry)
    //#RollerAtomHandler.java:501: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Entry postEntry(String[], Entry)): " "._tainted
    //#input(Entry postEntry(String[], Entry)): ""._tainted
    //#input(Entry postEntry(String[], Entry)): "."._tainted
    //#input(Entry postEntry(String[], Entry)): ".entry."._tainted
    //#input(Entry postEntry(String[], Entry)): "Cannot find weblog: "._tainted
    //#input(Entry postEntry(String[], Entry)): "Not authorized to access website: "._tainted
    //#input(Entry postEntry(String[], Entry)): entry
    //#input(Entry postEntry(String[], Entry)): log
    //#input(Entry postEntry(String[], Entry)): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(Entry postEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Entry postEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModule]
    //#input(Entry postEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[others]
    //#input(Entry postEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Dispatch_Table.getDraft()Z
    //#input(Entry postEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.getDraft()Z
    //#input(Entry postEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Entry postEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Entry postEntry(String[], Entry)): pathInfo
    //#input(Entry postEntry(String[], Entry)): pathInfo.length
    //#input(Entry postEntry(String[], Entry)): pathInfo[0]
    //#input(Entry postEntry(String[], Entry)): pathInfo[0]._tainted
    //#input(Entry postEntry(String[], Entry)): this
    //#input(Entry postEntry(String[], Entry)): this.atomURL
    //#input(Entry postEntry(String[], Entry)): this.atomURL._tainted
    //#input(Entry postEntry(String[], Entry)): this.roller
    //#input(Entry postEntry(String[], Entry)): this.user
    //#input(Entry postEntry(String[], Entry)): throttle
    //#output(Entry postEntry(String[], Entry)): new Entry(createAtomEntry#1) num objects
    //#output(Entry postEntry(String[], Entry)): return_value
    //#new obj(Entry postEntry(String[], Entry)): new Entry(createAtomEntry#1)
    //#pre[1] (Entry postEntry(String[], Entry)): entry != null
    //#pre[2] (Entry postEntry(String[], Entry)): log != null
    //#pre[3] (Entry postEntry(String[], Entry)): pathInfo != null
    //#pre[4] (Entry postEntry(String[], Entry)): pathInfo.length >= 1
    //#pre[5] (Entry postEntry(String[], Entry)): init'ed(pathInfo[0])
    //#pre[10] (Entry postEntry(String[], Entry)): this.roller != null
    //#pre[12] (Entry postEntry(String[], Entry)): init'ed(throttle)
    //#pre[11] (Entry postEntry(String[], Entry)): (soft) init'ed(this.user)
    //#presumption(Entry postEntry(String[], Entry)): org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(...)@505 != null
    //#presumption(Entry postEntry(String[], Entry)): org.apache.roller.weblogger.business.Weblogger:getIndexManager(...)@527 != null
    //#presumption(Entry postEntry(String[], Entry)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@505 != null
    //#presumption(Entry postEntry(String[], Entry)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@517 != null
    //#post(Entry postEntry(String[], Entry)): return_value == &new Entry(createAtomEntry#1)
    //#post(Entry postEntry(String[], Entry)): new Entry(createAtomEntry#1) num objects == 1
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.Thread:sleep
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogURL
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getUserName
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.webservices.atomprotocol.AtomException
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.Exception
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getWeblogManager
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Link
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Link:setHref
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Link:setRel
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.util.Collections:singletonList
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getUpdated
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.util.List:size
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category:setTerm
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setId
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setTitle
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setUpdated
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setOtherLinks
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Content
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Content:setType
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setContents
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setModules
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTitle
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setPublished
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getUpdateTime
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getText
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Content:setValue
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getSummary
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.commons.lang.StringUtils:isNotEmpty
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setSummary
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCreator
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Person
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Person:setName
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEmailAddress
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Person:setEmail
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAuthors
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category:setScheme
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCategory
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTags
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTag:getName
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setCategories
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAlternateLinks
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getStatus
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.lang.System:currentTimeMillis
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getPublished
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getTitle
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setTitle
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getContents
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:java.util.List:get
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Content:getValue
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setText
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getSummary
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setSummary
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getModule
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:getDraft
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setStatus
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getCategories
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category:getScheme
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category:getTerm
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setCategory
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory
    //#unanalyzed(Entry postEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setTagsAsString
    //#test_vector(Entry postEntry(String[], Entry)): throttle: {0}, {1}
    //#test_vector(Entry postEntry(String[], Entry)): org.apache.roller.weblogger.pojos.WeblogEntry:isPublished(...)@526: {0}, {1}
        try {
            // authenticated client posted a weblog entry
            String handle = pathInfo[0];
            Weblog website = 
    //#RollerAtomHandler.java:505: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerAtomHandler.java:505: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
                roller.getUserManager().getWebsiteByHandle(handle);
            if (website == null) {
                throw new AtomNotFoundException("Cannot find weblog: " + handle);
            }
            if (!canEdit(website)) {
                throw new AtomNotAuthorizedException("Not authorized to access website: " + handle);
    //#RollerAtomHandler.java:511: ?conditional throw
    //#    canEdit(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    basic block: bb_4
    //#    assertion: canEdit(...) != 0
    //#    VN: canEdit(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
            }
            
            if (throttle) oneSecondThrottle();
            
            // Save it and commit it
            WeblogManager mgr = roller.getWeblogManager();
    //#RollerAtomHandler.java:517: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
            WeblogEntry rollerEntry = new WeblogEntry();
    //#RollerAtomHandler.java:518: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry()
            rollerEntry.setWebsite(website);
    //#RollerAtomHandler.java:519: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setWebsite(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setWebsite(Weblog)
            rollerEntry.setCreator(this.user);
    //#RollerAtomHandler.java:520: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setCreator(User)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setCreator(User)
            copyToRollerEntry(entry, rollerEntry);
            mgr.saveWeblogEntry(rollerEntry);
    //#RollerAtomHandler.java:522: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry(WeblogEntry)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry(WeblogEntry)
            roller.flush();
    //#RollerAtomHandler.java:523: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.Weblogger:flush()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.Weblogger:flush()

            CacheManager.invalidate(website);
    //#RollerAtomHandler.java:525: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.util.cache.CacheManager:invalidate(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.util.cache.CacheManager:invalidate(Weblog)
            if (rollerEntry.isPublished()) {
    //#RollerAtomHandler.java:526: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
                roller.getIndexManager().addEntryReIndexOperation(rollerEntry);
    //#RollerAtomHandler.java:527: Warning: method not available
    //#    -- call on IndexManager org.apache.roller.weblogger.business.Weblogger:getIndexManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: IndexManager org.apache.roller.weblogger.business.Weblogger:getIndexManager()
    //#RollerAtomHandler.java:527: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.search.IndexManager:addEntryReIndexOperation(WeblogEntry)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.search.IndexManager:addEntryReIndexOperation(WeblogEntry)
            }
            
            log.debug("Exiting");
    //#RollerAtomHandler.java:530: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            return createAtomEntry(rollerEntry);

        } catch (WebloggerException re) {
            throw new AtomException("Posting entry", re);
    //#RollerAtomHandler.java:534: end of method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.postEntry(String[], Entry)
        }
    }
    
    /**
     * Retrieve entry, URI like this /blog-name/entry/id
     */
    public Entry getEntry(String[] pathInfo) throws AtomException {
        log.debug("Entering");
    //#RollerAtomHandler.java:542: method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getEntry(String[])
    //#RollerAtomHandler.java:542: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Entry getEntry(String[])): ""._tainted
    //#input(Entry getEntry(String[])): "."._tainted
    //#input(Entry getEntry(String[])): ".entry."._tainted
    //#input(Entry getEntry(String[])): ".media-link"._tainted
    //#input(Entry getEntry(String[])): ".resource."._tainted
    //#input(Entry getEntry(String[])): java.io.File.separator
    //#input(Entry getEntry(String[])): java.io.File.separator._tainted
    //#input(Entry getEntry(String[])): log
    //#input(Entry getEntry(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Entry getEntry(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Entry getEntry(String[])): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Entry getEntry(String[])): pathInfo
    //#input(Entry getEntry(String[])): pathInfo.length
    //#input(Entry getEntry(String[])): pathInfo[0]
    //#input(Entry getEntry(String[])): pathInfo[1]
    //#input(Entry getEntry(String[])): pathInfo[2]
    //#input(Entry getEntry(String[])): pathInfo[3..4_294_967_295]
    //#input(Entry getEntry(String[])): pathInfo[3..4_294_967_295]._tainted
    //#input(Entry getEntry(String[])): this
    //#input(Entry getEntry(String[])): this.atomURL
    //#input(Entry getEntry(String[])): this.atomURL._tainted
    //#input(Entry getEntry(String[])): this.roller
    //#input(Entry getEntry(String[])): this.user
    //#output(Entry getEntry(String[])): new Entry(createAtomEntry#1) num objects
    //#output(Entry getEntry(String[])): new Entry(createAtomResourceEntry#3) num objects
    //#output(Entry getEntry(String[])): return_value
    //#new obj(Entry getEntry(String[])): new Entry(createAtomEntry#1)
    //#new obj(Entry getEntry(String[])): new Entry(createAtomResourceEntry#3)
    //#pre[1] (Entry getEntry(String[])): log != null
    //#pre[2] (Entry getEntry(String[])): pathInfo != null
    //#pre[5] (Entry getEntry(String[])): pathInfo[1] != null
    //#pre[12] (Entry getEntry(String[])): this.roller != null
    //#pre[3] (Entry getEntry(String[])): (soft) pathInfo.length in 3..4_294_967_295
    //#pre[4] (Entry getEntry(String[])): (soft) init'ed(pathInfo[0])
    //#pre[6] (Entry getEntry(String[])): (soft) pathInfo[2] != null
    //#pre[7] (Entry getEntry(String[])): (soft) pathInfo[3..4_294_967_295] != null
    //#pre[13] (Entry getEntry(String[])): (soft) init'ed(this.user)
    //#presumption(Entry getEntry(String[])): java.lang.String:endsWith(...)@557 == 1
    //#presumption(Entry getEntry(String[])): java.lang.String:equals(...)@557 == 1
    //#presumption(Entry getEntry(String[])): java.lang.String:length(...)@559 - java.lang.String:length(...)@559 in -4_294_967_295..2_147_483_648
    //#presumption(Entry getEntry(String[])): org.apache.roller.weblogger.business.FileManager:getFile(...)@563 != null
    //#presumption(Entry getEntry(String[])): org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(...)@561 != null
    //#presumption(Entry getEntry(String[])): org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(...)@547 != null
    //#presumption(Entry getEntry(String[])): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@563 != null
    //#presumption(Entry getEntry(String[])): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@561 != null
    //#presumption(Entry getEntry(String[])): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@547 != null
    //#post(Entry getEntry(String[])): return_value in Addr_Set{&new Entry(createAtomResourceEntry#3),&new Entry(createAtomEntry#1)}
    //#post(Entry getEntry(String[])): new Entry(createAtomEntry#1) num objects <= 1
    //#post(Entry getEntry(String[])): new Entry(createAtomResourceEntry#3) num objects <= 1
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:hasWritePermissions
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogURL
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.util.List:add
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getUserName
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link:setHref
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Link:setRel
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.util.Collections:singletonList
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getUpdated
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Category
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Category:setTerm
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getPath
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:javax.activation.FileTypeMap:getDefaultFileTypeMap
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:javax.activation.MimetypesFileTypeMap:instanceof
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:javax.activation.MimetypesFileTypeMap:addMimeTypes
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getName
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:javax.activation.FileTypeMap:getContentType
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setId
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setTitle
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLastModified
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.util.Date
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setUpdated
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setOtherLinks
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setSrc
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setType
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setContents
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setModules
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTitle
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setPublished
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getUpdateTime
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getText
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Content:setValue
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getSummary
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.commons.lang.StringUtils:isNotEmpty
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setSummary
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCreator
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Person
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Person:setName
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEmailAddress
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Person:setEmail
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAuthors
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Category:setScheme
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCategory
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTags
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTag:getName
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setCategories
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAlternateLinks
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(Entry getEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getStatus
    //#test_vector(Entry getEntry(String[])): java.lang.String:equals(...)@546: {0}, {1}
        try {
            if (pathInfo.length > 2) // URI is /blogname/entries/entryid
            {
                if (pathInfo[1].equals("entry")) {
                    WeblogEntry entry = 
    //#RollerAtomHandler.java:547: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#RollerAtomHandler.java:547: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
                        roller.getWeblogManager().getWeblogEntry(pathInfo[2]);
                    if (entry == null) {
                        throw new AtomNotFoundException("Cannot find specified entry/resource");
                    }
                    if (!canView(entry)) {
    //#RollerAtomHandler.java:552: ?org/apache/roller/weblogger/webservices/atomprotocol/AtomNotAuthorizedException check
    //#    canView(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    basic block: bb_3
    //#    assertion: canView(...) != 0
    //#    VN: canView(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
                        throw new AtomNotAuthorizedException("Not authorized to view entry");
                    } else {
                        return createAtomEntry(entry);
                    }
                } else if (pathInfo[1].equals("resource") && pathInfo[pathInfo.length - 1].endsWith(".media-link")) {
                    String filePath = filePathFromPathInfo(pathInfo);
                    filePath = filePath.substring(0, filePath.length() - ".media-link".length());
    //#RollerAtomHandler.java:559: ?null dereference
    //#    filePath != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    basic block: bb_5
    //#    assertion: filePath != null
    //#    VN: filePathFromPathInfo(...)
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
                    String handle = pathInfo[0];
                    Weblog website = 
    //#RollerAtomHandler.java:561: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerAtomHandler.java:561: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
                        roller.getUserManager().getWebsiteByHandle(handle);                    
                    ThemeResource resource = 
    //#RollerAtomHandler.java:563: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#RollerAtomHandler.java:563: Warning: method not available
    //#    -- call on ThemeResource org.apache.roller.weblogger.business.FileManager:getFile(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    unanalyzed callee: ThemeResource org.apache.roller.weblogger.business.FileManager:getFile(Weblog, String)
                        roller.getFileManager().getFile(website, filePath);
                    
                    log.debug("Exiting");
    //#RollerAtomHandler.java:566: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry getEntry(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    if (resource != null) return createAtomResourceEntry(website, resource);
                }
            }
            throw new AtomNotFoundException("Cannot find specified entry/resource");
        } catch (WebloggerException re) {
            throw new AtomException("Getting entry");
    //#RollerAtomHandler.java:572: end of method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getEntry(String[])
        }
    }
    
    /**
     * Expects pathInfo of form /blog-name/resource/path/name
     */
    public AtomMediaResource getMediaResource(String[] pathInfo) throws AtomException {
        log.debug("Entering");
    //#RollerAtomHandler.java:580: method: AtomMediaResource org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getMediaResource(String[])
    //#RollerAtomHandler.java:580: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomMediaResource getMediaResource(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(AtomMediaResource getMediaResource(String[])): "Not authorized to edit weblog: "._tainted
    //#input(AtomMediaResource getMediaResource(String[])): java.io.File.separator
    //#input(AtomMediaResource getMediaResource(String[])): java.io.File.separator._tainted
    //#input(AtomMediaResource getMediaResource(String[])): log
    //#input(AtomMediaResource getMediaResource(String[])): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(AtomMediaResource getMediaResource(String[])): pathInfo
    //#input(AtomMediaResource getMediaResource(String[])): pathInfo.length
    //#input(AtomMediaResource getMediaResource(String[])): pathInfo[0]
    //#input(AtomMediaResource getMediaResource(String[])): pathInfo[0]._tainted
    //#input(AtomMediaResource getMediaResource(String[])): pathInfo[2..4_294_967_295]
    //#input(AtomMediaResource getMediaResource(String[])): pathInfo[2..4_294_967_295]._tainted
    //#input(AtomMediaResource getMediaResource(String[])): this
    //#input(AtomMediaResource getMediaResource(String[])): this.roller
    //#input(AtomMediaResource getMediaResource(String[])): this.user
    //#output(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3) num objects
    //#output(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3).__Tag
    //#output(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3).contentLength
    //#output(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3).contentType
    //#output(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3).inputStream
    //#output(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3).lastModified
    //#output(AtomMediaResource getMediaResource(String[])): new Date(AtomMediaResource#1) num objects
    //#output(AtomMediaResource getMediaResource(String[])): return_value
    //#new obj(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3)
    //#new obj(AtomMediaResource getMediaResource(String[])): new Date(AtomMediaResource#1)
    //#pre[1] (AtomMediaResource getMediaResource(String[])): log != null
    //#pre[2] (AtomMediaResource getMediaResource(String[])): pathInfo != null
    //#pre[3] (AtomMediaResource getMediaResource(String[])): pathInfo.length in 2..4_294_967_295
    //#pre[4] (AtomMediaResource getMediaResource(String[])): init'ed(pathInfo[0])
    //#pre[9] (AtomMediaResource getMediaResource(String[])): this.roller != null
    //#pre[6] (AtomMediaResource getMediaResource(String[])): (soft) init'ed(pathInfo[2..4_294_967_295])
    //#pre[10] (AtomMediaResource getMediaResource(String[])): (soft) init'ed(this.user)
    //#presumption(AtomMediaResource getMediaResource(String[])): org.apache.roller.weblogger.business.FileManager:getFile(...)@595 != null
    //#presumption(AtomMediaResource getMediaResource(String[])): org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(...)@587 != null
    //#presumption(AtomMediaResource getMediaResource(String[])): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@585 != null
    //#presumption(AtomMediaResource getMediaResource(String[])): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@586 != null
    //#post(AtomMediaResource getMediaResource(String[])): return_value == &new AtomMediaResource(getMediaResource#3)
    //#post(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3) num objects == 1
    //#post(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3).__Tag == org/apache/roller/weblogger/webservices/atomprotocol/AtomMediaResource
    //#post(AtomMediaResource getMediaResource(String[])): init'ed(new AtomMediaResource(getMediaResource#3).contentLength)
    //#post(AtomMediaResource getMediaResource(String[])): init'ed(new AtomMediaResource(getMediaResource#3).contentType)
    //#post(AtomMediaResource getMediaResource(String[])): init'ed(new AtomMediaResource(getMediaResource#3).inputStream)
    //#post(AtomMediaResource getMediaResource(String[])): new AtomMediaResource(getMediaResource#3).lastModified == &new Date(AtomMediaResource#1)
    //#post(AtomMediaResource getMediaResource(String[])): new Date(AtomMediaResource#1) num objects == 1
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:java.lang.String:length
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:org.apache.roller.weblogger.webservices.atomprotocol.AtomException
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:java.lang.Exception
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:javax.activation.FileTypeMap:getDefaultFileTypeMap
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:javax.activation.MimetypesFileTypeMap:instanceof
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:javax.activation.MimetypesFileTypeMap:addMimeTypes
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getName
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:javax.activation.FileTypeMap:getContentType
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLength
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLastModified
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:java.util.Date
    //#unanalyzed(AtomMediaResource getMediaResource(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getInputStream
        try {
            // authenticated client posted a weblog entry
            File tempFile = null;
    //#RollerAtomHandler.java:583: Warning: unused assignment
    //#    unused assignment into tempFile
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomMediaResource getMediaResource(String[])
    //#    Attribs:  Uncertain
            String handle = pathInfo[0];
            FileManager fmgr = roller.getFileManager();
    //#RollerAtomHandler.java:585: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomMediaResource getMediaResource(String[])
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
            UserManager umgr = roller.getUserManager();
    //#RollerAtomHandler.java:586: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomMediaResource getMediaResource(String[])
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
            Weblog website = umgr.getWebsiteByHandle(handle);
    //#RollerAtomHandler.java:587: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomMediaResource getMediaResource(String[])
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
            if (!canEdit(website)) {
                throw new AtomNotAuthorizedException("Not authorized to edit weblog: " + handle);
    //#RollerAtomHandler.java:589: ?conditional throw
    //#    canEdit(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomMediaResource getMediaResource(String[])
    //#    basic block: bb_2
    //#    assertion: canEdit(...) != 0
    //#    VN: canEdit(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
            }
            if (pathInfo.length > 1) {
                try {                                        
                    // Parse pathinfo to determine file path
                    String filePath = filePathFromPathInfo(pathInfo);
                    ThemeResource resource = fmgr.getFile(website, filePath);                    
    //#RollerAtomHandler.java:595: Warning: method not available
    //#    -- call on ThemeResource org.apache.roller.weblogger.business.FileManager:getFile(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: AtomMediaResource getMediaResource(String[])
    //#    unanalyzed callee: ThemeResource org.apache.roller.weblogger.business.FileManager:getFile(Weblog, String)
                    return new AtomMediaResource(resource);
                } catch (Exception e) {
                    throw new AtomException(
                        "Unexpected error during file upload", e);
                }
            }
            throw new AtomException("Incorrect path information");
        
        } catch (WebloggerException re) {
            throw new AtomException("Posting media");
    //#RollerAtomHandler.java:605: end of method: AtomMediaResource org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getMediaResource(String[])
        }
    }
    
    /**
     * Update entry, URI like this /blog-name/entry/id
     */
    public Entry putEntry(String[] pathInfo, Entry entry) throws AtomException {
        log.debug("Entering");
    //#RollerAtomHandler.java:613: method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.putEntry(String[], Entry)
    //#RollerAtomHandler.java:613: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Entry putEntry(String[], Entry)): " "._tainted
    //#input(Entry putEntry(String[], Entry)): ""._tainted
    //#input(Entry putEntry(String[], Entry)): "."._tainted
    //#input(Entry putEntry(String[], Entry)): ".entry."._tainted
    //#input(Entry putEntry(String[], Entry)): entry
    //#input(Entry putEntry(String[], Entry)): log
    //#input(Entry putEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Entry putEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModule]
    //#input(Entry putEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[others]
    //#input(Entry putEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Dispatch_Table.getDraft()Z
    //#input(Entry putEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.getDraft()Z
    //#input(Entry putEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Entry putEntry(String[], Entry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Entry putEntry(String[], Entry)): pathInfo
    //#input(Entry putEntry(String[], Entry)): pathInfo.length
    //#input(Entry putEntry(String[], Entry)): pathInfo[2]
    //#input(Entry putEntry(String[], Entry)): this
    //#input(Entry putEntry(String[], Entry)): this.atomURL
    //#input(Entry putEntry(String[], Entry)): this.atomURL._tainted
    //#input(Entry putEntry(String[], Entry)): this.roller
    //#input(Entry putEntry(String[], Entry)): this.user
    //#input(Entry putEntry(String[], Entry)): throttle
    //#output(Entry putEntry(String[], Entry)): new Entry(createAtomEntry#1) num objects
    //#output(Entry putEntry(String[], Entry)): return_value
    //#new obj(Entry putEntry(String[], Entry)): new Entry(createAtomEntry#1)
    //#pre[1] (Entry putEntry(String[], Entry)): entry != null
    //#pre[2] (Entry putEntry(String[], Entry)): log != null
    //#pre[3] (Entry putEntry(String[], Entry)): pathInfo != null
    //#pre[4] (Entry putEntry(String[], Entry)): pathInfo.length == 3
    //#pre[5] (Entry putEntry(String[], Entry)): init'ed(pathInfo[2])
    //#pre[9] (Entry putEntry(String[], Entry)): this.roller != null
    //#pre[11] (Entry putEntry(String[], Entry)): init'ed(throttle)
    //#pre[10] (Entry putEntry(String[], Entry)): (soft) init'ed(this.user)
    //#presumption(Entry putEntry(String[], Entry)): org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(...)@617 != null
    //#presumption(Entry putEntry(String[], Entry)): org.apache.roller.weblogger.business.Weblogger:getIndexManager(...)@635 != null
    //#presumption(Entry putEntry(String[], Entry)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@617 != null
    //#presumption(Entry putEntry(String[], Entry)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@627 != null
    //#post(Entry putEntry(String[], Entry)): return_value == &new Entry(createAtomEntry#1)
    //#post(Entry putEntry(String[], Entry)): new Entry(createAtomEntry#1) num objects == 1
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:hasWritePermissions
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.lang.Thread:sleep
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogURL
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getUserName
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getWeblogManager
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Link
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Link:setHref
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Link:setRel
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.util.Collections:singletonList
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.util.Iterator:hasNext
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.util.Iterator:next
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getUpdated
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.util.List:size
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category:setTerm
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setId
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setTitle
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setUpdated
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setOtherLinks
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Content
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Content:setType
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setContents
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setModules
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTitle
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setPublished
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getUpdateTime
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getText
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Content:setValue
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getSummary
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.commons.lang.StringUtils:isNotEmpty
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setSummary
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCreator
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Person
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Person:setName
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEmailAddress
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Person:setEmail
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAuthors
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category:setScheme
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCategory
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTags
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.util.Set:iterator
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntryTag:getName
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setCategories
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setAlternateLinks
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getStatus
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.lang.System:currentTimeMillis
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getPublished
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getTitle
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setTitle
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getContents
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:java.util.List:get
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Content:getValue
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setText
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getSummary
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setSummary
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getModule
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:getDraft
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setStatus
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getCategories
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category:getScheme
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:com.sun.syndication.feed.atom.Category:getTerm
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setCategory
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory
    //#unanalyzed(Entry putEntry(String[], Entry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setTagsAsString
    //#test_vector(Entry putEntry(String[], Entry)): throttle: {0}, {1}
    //#test_vector(Entry putEntry(String[], Entry)): org.apache.roller.weblogger.pojos.WeblogEntry:isPublished(...)@634: {0}, {1}
        try {
            if (pathInfo.length == 3) // URI is /blogname/entries/entryid
            {
                WeblogEntry rollerEntry =
    //#RollerAtomHandler.java:617: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#RollerAtomHandler.java:617: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
                    roller.getWeblogManager().getWeblogEntry(pathInfo[2]);
                if (rollerEntry == null) {
                    throw new AtomNotFoundException(
                        "Cannot find specified entry/resource");  
                }
                if (canEdit(rollerEntry)) {
    //#RollerAtomHandler.java:623: ?org/apache/roller/weblogger/webservices/atomprotocol/AtomNotAuthorizedException check
    //#    canEdit(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    basic block: bb_2
    //#    assertion: canEdit(...) != 0
    //#    VN: canEdit(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
            
                    if (throttle) oneSecondThrottle();
                    
                    WeblogManager mgr = roller.getWeblogManager();
    //#RollerAtomHandler.java:627: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
                    copyToRollerEntry(entry, rollerEntry);
                    rollerEntry.setUpdateTime(new Timestamp(new Date().getTime()));
    //#RollerAtomHandler.java:629: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
                    mgr.saveWeblogEntry(rollerEntry);
    //#RollerAtomHandler.java:630: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry(WeblogEntry)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry(WeblogEntry)
                    roller.flush();
    //#RollerAtomHandler.java:631: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.Weblogger:flush()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.Weblogger:flush()
                    
                    CacheManager.invalidate(rollerEntry.getWebsite());
    //#RollerAtomHandler.java:633: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#RollerAtomHandler.java:633: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.util.cache.CacheManager:invalidate(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.util.cache.CacheManager:invalidate(Weblog)
                    if (rollerEntry.isPublished()) {
    //#RollerAtomHandler.java:634: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
                        roller.getIndexManager().addEntryReIndexOperation(rollerEntry);
    //#RollerAtomHandler.java:635: Warning: method not available
    //#    -- call on IndexManager org.apache.roller.weblogger.business.Weblogger:getIndexManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: IndexManager org.apache.roller.weblogger.business.Weblogger:getIndexManager()
    //#RollerAtomHandler.java:635: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.search.IndexManager:addEntryReIndexOperation(WeblogEntry)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.search.IndexManager:addEntryReIndexOperation(WeblogEntry)
                    }
                    log.debug("Exiting");
    //#RollerAtomHandler.java:637: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putEntry(String[], Entry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    return createAtomEntry(rollerEntry);
                }
                throw new AtomNotAuthorizedException("ERROR not authorized to update entry");
            }
            throw new AtomNotFoundException("Cannot find specified entry/resource");
            
        } catch (WebloggerException re) {
            throw new AtomException("Updating entry");
    //#RollerAtomHandler.java:645: end of method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.putEntry(String[], Entry)
        }
    }
    
    /**
     * Delete entry, URI like this /blog-name/entry/id
     */
    public void deleteEntry(String[] pathInfo) throws AtomException {
        log.debug("Entering");
    //#RollerAtomHandler.java:653: method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.deleteEntry(String[])
    //#RollerAtomHandler.java:653: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(void deleteEntry(String[])): ""._tainted
    //#input(void deleteEntry(String[])): "Deleted entry:"._tainted
    //#input(void deleteEntry(String[])): "Deleted resource: "._tainted
    //#input(void deleteEntry(String[])): java.io.File.separator
    //#input(void deleteEntry(String[])): java.io.File.separator._tainted
    //#input(void deleteEntry(String[])): log
    //#input(void deleteEntry(String[])): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(void deleteEntry(String[])): pathInfo
    //#input(void deleteEntry(String[])): pathInfo.length
    //#input(void deleteEntry(String[])): pathInfo[0]
    //#input(void deleteEntry(String[])): pathInfo[1]
    //#input(void deleteEntry(String[])): pathInfo[2]
    //#input(void deleteEntry(String[])): pathInfo[3..4_294_967_295]
    //#input(void deleteEntry(String[])): pathInfo[3..4_294_967_295]._tainted
    //#input(void deleteEntry(String[])): this
    //#input(void deleteEntry(String[])): this.roller
    //#input(void deleteEntry(String[])): this.user
    //#pre[1] (void deleteEntry(String[])): log != null
    //#pre[2] (void deleteEntry(String[])): pathInfo != null
    //#pre[5] (void deleteEntry(String[])): pathInfo[1] != null
    //#pre[10] (void deleteEntry(String[])): this.roller != null
    //#pre[3] (void deleteEntry(String[])): (soft) pathInfo.length in 3..4_294_967_295
    //#pre[4] (void deleteEntry(String[])): (soft) init'ed(pathInfo[0])
    //#pre[6] (void deleteEntry(String[])): (soft) init'ed(pathInfo[2])
    //#pre[7] (void deleteEntry(String[])): (soft) init'ed(pathInfo[3..4_294_967_295])
    //#pre[11] (void deleteEntry(String[])): (soft) init'ed(this.user)
    //#presumption(void deleteEntry(String[])): java.lang.String:equals(...)@671 == 1
    //#presumption(void deleteEntry(String[])): java.lang.String:length(...)@680 - java.lang.String:length(...)@680 in -4_294_967_295..2_147_483_648
    //#presumption(void deleteEntry(String[])): org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(...)@673 != null
    //#presumption(void deleteEntry(String[])): org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(...)@658 != null
    //#presumption(void deleteEntry(String[])): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@681 != null
    //#presumption(void deleteEntry(String[])): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@673 != null
    //#presumption(void deleteEntry(String[])): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@658 != null
    //#presumption(void deleteEntry(String[])): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@663 != null
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:hasWritePermissions
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getIndexManager
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:isPublished
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:org.apache.roller.weblogger.business.search.IndexManager:addEntryReIndexOperation
    //#unanalyzed(void deleteEntry(String[])): Effects-of-calling:java.lang.Exception
    //#test_vector(void deleteEntry(String[])): java.lang.String:equals(...)@656: {0}, {1}
        try {
            if (pathInfo.length > 2) {
                if (pathInfo[1].equals("entry")) // URI is /blogname/entry/entryid
                {                    
                    WeblogEntry rollerEntry = roller.getWeblogManager().getWeblogEntry(pathInfo[2]);
    //#RollerAtomHandler.java:658: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#RollerAtomHandler.java:658: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
                    if (rollerEntry == null) {
                        throw new AtomNotFoundException("cannot find specified entry/resource");
                    }
                    if (canEdit(rollerEntry)) {
                        WeblogManager mgr = roller.getWeblogManager();                                                
    //#RollerAtomHandler.java:663: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
                        CacheManager.invalidate(rollerEntry.getWebsite());                        
    //#RollerAtomHandler.java:664: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#RollerAtomHandler.java:664: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.util.cache.CacheManager:invalidate(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: void org.apache.roller.weblogger.util.cache.CacheManager:invalidate(Weblog)
                        reindexEntry(rollerEntry);
                        mgr.removeWeblogEntry(rollerEntry);
    //#RollerAtomHandler.java:666: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.WeblogManager:removeWeblogEntry(WeblogEntry)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.WeblogManager:removeWeblogEntry(WeblogEntry)
                        log.debug("Deleted entry:" + rollerEntry.getAnchor());
    //#RollerAtomHandler.java:667: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#RollerAtomHandler.java:667: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                        roller.flush();
    //#RollerAtomHandler.java:668: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.Weblogger:flush()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.Weblogger:flush()
                        return;
                    } 
                } else if (pathInfo[1].equals("resource")) {
                    String handle = pathInfo[0];
                    Weblog website = roller.getUserManager().getWebsiteByHandle(handle);
    //#RollerAtomHandler.java:673: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerAtomHandler.java:673: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
                    if (website == null) {
                        throw new AtomNotFoundException("cannot find specified weblog");
                    }
                    if (canEdit(website) && pathInfo.length > 1) {
    //#RollerAtomHandler.java:677: ?org/apache/roller/weblogger/webservices/atomprotocol/AtomNotAuthorizedException check
    //#    canEdit(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    basic block: bb_7
    //#    assertion: canEdit(...) != 0
    //#    VN: canEdit(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
                        try {                            
                            String path = filePathFromPathInfo(pathInfo);
                            String fileName = path.substring(0, path.length() - ".media-link".length());
    //#RollerAtomHandler.java:680: ?null dereference
    //#    path != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    basic block: bb_8
    //#    assertion: path != null
    //#    VN: filePathFromPathInfo(...)
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
                            FileManager fmgr = roller.getFileManager();
    //#RollerAtomHandler.java:681: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
                            fmgr.deleteFile(website, fileName);
    //#RollerAtomHandler.java:682: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.FileManager:deleteFile(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.FileManager:deleteFile(Weblog, String)
                            log.debug("Deleted resource: " + fileName);
    //#RollerAtomHandler.java:683: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                        } catch (Exception e) {
                            String msg = "ERROR in atom.deleteResource";
                            log.error(msg,e);
                            throw new AtomException(msg);
                        }
                        return;
                    }               
                }
                throw new AtomNotAuthorizedException("ERROR not authorized to delete entry");
    //#RollerAtomHandler.java:692: ?conditional throw
    //#    canEdit(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void deleteEntry(String[])
    //#    basic block: bb_3
    //#    assertion: canEdit(...) != 0
    //#    VN: canEdit(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
            }
            throw new AtomNotFoundException("cannot find specified entry/resource");
            
        } catch (WebloggerException re) {
            throw new AtomException("deleting entry");
    //#RollerAtomHandler.java:697: end of method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.deleteEntry(String[])
        }
    }
    
    //-------------------------------------------------------------------- resources
    
    /**
     * Create new resource in generic collection (a Weblogger blog has only one).
     * TODO: can we avoid saving temporary file?
     * TODO: do we need to handle mutli-part MIME uploads?
     * TODO: use Jakarta Commons File-upload?
     */
    public Entry postMedia(String[] pathInfo,
            String title, String slug, String contentType, InputStream is)
            throws AtomException {
        log.debug("Entering");
    //#RollerAtomHandler.java:712: method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.postMedia(String[], String, String, String, InputStream)
    //#RollerAtomHandler.java:712: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Entry postMedia(String[], String, String, String, InputStream)): ""._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): "-"._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): "."._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): ".media-link"._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): ".resource."._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): "Not authorized to edit weblog: "._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): "_"._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): contentType
    //#input(Entry postMedia(String[], String, String, String, InputStream)): contentType._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): is
    //#input(Entry postMedia(String[], String, String, String, InputStream)): java.io.File.separator
    //#input(Entry postMedia(String[], String, String, String, InputStream)): java.io.File.separator._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): log
    //#input(Entry postMedia(String[], String, String, String, InputStream)): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(Entry postMedia(String[], String, String, String, InputStream)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Entry postMedia(String[], String, String, String, InputStream)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Entry postMedia(String[], String, String, String, InputStream)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Entry postMedia(String[], String, String, String, InputStream)): pathInfo
    //#input(Entry postMedia(String[], String, String, String, InputStream)): pathInfo.length
    //#input(Entry postMedia(String[], String, String, String, InputStream)): pathInfo[0]
    //#input(Entry postMedia(String[], String, String, String, InputStream)): pathInfo[0]._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): pathInfo[2..4_294_967_295]
    //#input(Entry postMedia(String[], String, String, String, InputStream)): pathInfo[2..4_294_967_295]._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): slug
    //#input(Entry postMedia(String[], String, String, String, InputStream)): slug._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): this
    //#input(Entry postMedia(String[], String, String, String, InputStream)): this.atomURL
    //#input(Entry postMedia(String[], String, String, String, InputStream)): this.atomURL._tainted
    //#input(Entry postMedia(String[], String, String, String, InputStream)): this.roller
    //#input(Entry postMedia(String[], String, String, String, InputStream)): this.user
    //#input(Entry postMedia(String[], String, String, String, InputStream)): title
    //#output(Entry postMedia(String[], String, String, String, InputStream)): new Entry(createAtomResourceEntry#3) num objects
    //#output(Entry postMedia(String[], String, String, String, InputStream)): return_value
    //#new obj(Entry postMedia(String[], String, String, String, InputStream)): new Entry(createAtomResourceEntry#3)
    //#pre[4] (Entry postMedia(String[], String, String, String, InputStream)): log != null
    //#pre[5] (Entry postMedia(String[], String, String, String, InputStream)): pathInfo != null
    //#pre[6] (Entry postMedia(String[], String, String, String, InputStream)): pathInfo.length in 2..4_294_967_295
    //#pre[7] (Entry postMedia(String[], String, String, String, InputStream)): init'ed(pathInfo[0])
    //#pre[16] (Entry postMedia(String[], String, String, String, InputStream)): this.roller != null
    //#pre[1] (Entry postMedia(String[], String, String, String, InputStream)): (soft) contentType != null
    //#pre[9] (Entry postMedia(String[], String, String, String, InputStream)): (soft) init'ed(pathInfo[2..4_294_967_295])
    //#pre[17] (Entry postMedia(String[], String, String, String, InputStream)): (soft) init'ed(this.user)
    //#presumption(Entry postMedia(String[], String, String, String, InputStream)): init'ed(java.io.File.separator)
    //#presumption(Entry postMedia(String[], String, String, String, InputStream)): java.io.File:createTempFile(...)@728 != null
    //#presumption(Entry postMedia(String[], String, String, String, InputStream)): org.apache.roller.weblogger.business.FileManager:getFile(...)@741 != null
    //#presumption(Entry postMedia(String[], String, String, String, InputStream)): org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(...)@719 != null
    //#presumption(Entry postMedia(String[], String, String, String, InputStream)): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@717 != null
    //#presumption(Entry postMedia(String[], String, String, String, InputStream)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@718 != null
    //#post(Entry postMedia(String[], String, String, String, InputStream)): return_value == &new Entry(createAtomResourceEntry#3)
    //#post(Entry postMedia(String[], String, String, String, InputStream)): new Entry(createAtomResourceEntry#3) num objects == 1
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.util.StringTokenizer
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.util.StringTokenizer:hasMoreTokens
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.util.StringTokenizer:nextToken
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.String:toLowerCase
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.String:endsWith
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.text.SimpleDateFormat
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.text.SimpleDateFormat:applyPattern
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.util.Date
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.text.SimpleDateFormat:format
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.webservices.atomprotocol.AtomException
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:java.lang.Exception
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Link
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Link:setHref
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Link:setRel
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getUpdated
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getPath
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:javax.activation.FileTypeMap:getDefaultFileTypeMap
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:javax.activation.MimetypesFileTypeMap:instanceof
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:javax.activation.MimetypesFileTypeMap:addMimeTypes
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getName
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:javax.activation.FileTypeMap:getContentType
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setId
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setTitle
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLastModified
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setUpdated
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setOtherLinks
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Content
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Content:setSrc
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Content:setType
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setContents
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#unanalyzed(Entry postMedia(String[], String, String, String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setModules
    //#test_vector(Entry postMedia(String[], String, String, String, InputStream)): java.lang.String:length(...)@736: {0}, {1..4_294_967_295}
        try {
            // authenticated client posted a weblog entry
            File tempFile = null;
            String handle = pathInfo[0];
            FileManager fmgr = roller.getFileManager();
    //#RollerAtomHandler.java:717: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
            UserManager umgr = roller.getUserManager();
    //#RollerAtomHandler.java:718: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
            Weblog website = umgr.getWebsiteByHandle(handle);
    //#RollerAtomHandler.java:719: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
            if (!canEdit(website)) {
                throw new AtomNotAuthorizedException("Not authorized to edit weblog: " + handle);
    //#RollerAtomHandler.java:721: ?conditional throw
    //#    canEdit(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    basic block: bb_2
    //#    assertion: canEdit(...) != 0
    //#    VN: canEdit(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
            }
            if (pathInfo.length > 1) {
                // Save to temp file
                String fileName = createFileName(website, 
    //#RollerAtomHandler.java:725: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.Utilities:replaceNonAlphanumeric(String, char)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.Utilities:replaceNonAlphanumeric(String, char)
                    (slug != null) ? slug : Utilities.replaceNonAlphanumeric(title,' '), contentType);
                try {
                    tempFile = File.createTempFile(fileName, "tmp");
                    FileOutputStream fos = new FileOutputStream(tempFile);
                    Utilities.copyInputToOutput(is, fos);
    //#RollerAtomHandler.java:730: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.util.Utilities:copyInputToOutput(InputStream, OutputStream)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    unanalyzed callee: void org.apache.roller.weblogger.util.Utilities:copyInputToOutput(InputStream, OutputStream)
                    fos.close();
                                        
                    // Parse pathinfo to determine file path
                    String path = filePathFromPathInfo(pathInfo);
                    
                    if (path.length() > 0) path = path + File.separator;
    //#RollerAtomHandler.java:736: ?null dereference
    //#    path != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    basic block: bb_8
    //#    assertion: path != null
    //#    VN: filePathFromPathInfo(...)
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
                    FileInputStream fis = new FileInputStream(tempFile);  
                    fmgr.saveFile(website, path + fileName, contentType, tempFile.length(), fis);
    //#RollerAtomHandler.java:738: 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.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.FileManager:saveFile(Weblog, String, String, long, InputStream)
                    fis.close();
                    
                    ThemeResource resource = fmgr.getFile(website, path + fileName);
    //#RollerAtomHandler.java:741: Warning: method not available
    //#    -- call on ThemeResource org.apache.roller.weblogger.business.FileManager:getFile(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    unanalyzed callee: ThemeResource org.apache.roller.weblogger.business.FileManager:getFile(Weblog, String)
                    
                    log.debug("Exiting");
    //#RollerAtomHandler.java:743: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry postMedia(String[], String, String, String, InputStream)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    return createAtomResourceEntry(website, resource);

                } catch (FileIOException fie) {
                    throw new AtomException(
                        "File upload disabled, over-quota or other error", fie);
                } catch (Exception e) {
                    throw new AtomException(
                        "Unexpected error during file upload", e);
                } finally {
                    if (tempFile != null) tempFile.delete();
                }
            }
            throw new AtomException("Incorrect path information");
        
        } catch (WebloggerException re) {
            throw new AtomException("Posting media");
    //#RollerAtomHandler.java:759: end of method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.postMedia(String[], String, String, String, InputStream)
        }
    }
    
    /**
     * Creates a file name for a file based on a weblog, title string and a 
     * content-type. 
     * 
     * @param weblog      Weblog for which file name is being created
     * @param title       Title to be used as basis for file name (or null)
     * @param contentType Content type of file (must not be null)
     * 
     * If a title is specified, the method will apply the same create-anchor 
     * logic we use for weblog entries to create a file name based on the title.
     *
     * If title is null, the base file name will be the weblog handle plus a 
     * YYYYMMDDHHSS timestamp. 
     *
     * The extension will be formed by using the part of content type that
     * comes after he slash. 
     *
     * For example:
     *    weblog.handle = "daveblog"
     *    title         = "Port Antonio"
     *    content-type  = "image/jpg"
     * Would result in port_antonio.jpg
     *
     * Another example:
     *    weblog.handle = "daveblog"
     *    title         = null
     *    content-type  = "image/jpg"
     * Might result in daveblog-200608201034.jpg
     */
    private String createFileName(Weblog weblog, String slug, String contentType) {
        
        if (weblog == null) throw new IllegalArgumentException("weblog cannot be null");
    //#RollerAtomHandler.java:794: method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.createFileName(Weblog, String, String)
    //#input(String createFileName(Weblog, String, String)): "-"._tainted
    //#input(String createFileName(Weblog, String, String)): "."._tainted
    //#input(String createFileName(Weblog, String, String)): "_"._tainted
    //#input(String createFileName(Weblog, String, String)): contentType
    //#input(String createFileName(Weblog, String, String)): contentType._tainted
    //#input(String createFileName(Weblog, String, String)): slug
    //#input(String createFileName(Weblog, String, String)): slug._tainted
    //#input(String createFileName(Weblog, String, String)): weblog
    //#output(String createFileName(Weblog, String, String)): java.lang.StringBuilder:toString(...)._tainted
    //#output(String createFileName(Weblog, String, String)): java.util.StringTokenizer:nextToken(...)._tainted
    //#output(String createFileName(Weblog, String, String)): return_value
    //#new obj(String createFileName(Weblog, String, String)): java.lang.StringBuilder:toString(...)
    //#new obj(String createFileName(Weblog, String, String)): java.util.StringTokenizer:nextToken(...)
    //#pre[1] (String createFileName(Weblog, String, String)): (soft) contentType != null
    //#pre[5] (String createFileName(Weblog, String, String)): (soft) weblog != null
    //#post(String createFileName(Weblog, String, String)): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String createFileName(Weblog, String, String)): java.lang.StringBuilder:toString(...)._tainted == 0
    //#post(String createFileName(Weblog, String, String)): init'ed(java.util.StringTokenizer:nextToken(...)._tainted)
    //#post(String createFileName(Weblog, String, String)): return_value != null
    //#test_vector(String createFileName(Weblog, String, String)): slug: Addr_Set{null}, Inverse{null}
    //#test_vector(String createFileName(Weblog, String, String)): java.lang.String:endsWith(...)@817: {1}, {0}
    //#test_vector(String createFileName(Weblog, String, String)): java.lang.String:equals(...)@806: {1}, {0}
    //#test_vector(String createFileName(Weblog, String, String)): java.util.StringTokenizer:hasMoreTokens(...)@811: {0}, {1}
        if (contentType == null) throw new IllegalArgumentException("contentType cannot be null");
        
        String fileName = null;
    //#RollerAtomHandler.java:797: Warning: unused assignment
    //#    unused assignment into fileName
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String createFileName(Weblog, String, String)
    //#    Attribs:  Uncertain
        
        // Determine the extension based on the contentType. This is a hack.
        // The info we need to map from contentType to file extension is in 
        // JRE/lib/content-type.properties, but Java Activation doesn't provide 
        // a way to do a reverse mapping or to get at the data.
        String[] typeTokens = contentType.split("/");
        String ext = typeTokens[1];
    //#RollerAtomHandler.java:804: ?use of default init
    //#    init'ed(typeTokens.length)
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String createFileName(Weblog, String, String)
    //#    basic block: Entry_BB_1
    //#    assertion: init'ed(typeTokens.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#RollerAtomHandler.java:804: ?!array index out of bounds
    //#    typeTokens.length >= 2
    //#    severity: HIGH
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String createFileName(Weblog, String, String)
    //#    basic block: Entry_BB_1
    //#    assertion: typeTokens.length >= 2
    //#    VN: undefined - 1
    //#    Expected: {1..+Inf}
    //#    Bad: {-1}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad < Exp
    //#RollerAtomHandler.java:804: ?use of default init
    //#    init'ed(typeTokens[1])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String createFileName(Weblog, String, String)
    //#    basic block: Entry_BB_1
    //#    assertion: init'ed(typeTokens[1])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
        
        if (slug != null && !slug.trim().equals("")) {              
            // We've got a title, so use it to build file name
            StringTokenizer toker = new StringTokenizer(slug);
            String tmp = null;
            int count = 0;
            while (toker.hasMoreTokens() && count < 5) {
                String s = toker.nextToken();
                s = s.toLowerCase();
                tmp = (tmp == null) ? s : tmp + "_" + s;
                count++;
            }
            if (!tmp.endsWith("." + ext)) {
    //#RollerAtomHandler.java:817: ?use of default init
    //#    init'ed(ext)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String createFileName(Weblog, String, String)
    //#    basic block: bb_10
    //#    assertion: init'ed(ext)
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#RollerAtomHandler.java:817: ?null dereference
    //#    tmp != null
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String createFileName(Weblog, String, String)
    //#    basic block: bb_10
    //#    assertion: tmp != null
    //#    VN: tmp
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
                fileName = tmp + "." + ext;
    //#RollerAtomHandler.java:818: ?use of default init
    //#    init'ed(ext)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String createFileName(Weblog, String, String)
    //#    basic block: bb_11
    //#    assertion: init'ed(ext)
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
            } else {
                fileName = tmp;
            }            
        } else {            
            // No title or text, so instead we'll use the item's date
            // in YYYYMMDD format to form the file name
            SimpleDateFormat sdf = new SimpleDateFormat();
    //#RollerAtomHandler.java:825: ?check always fails: String createFileName(Weblog, String, String) fails for all possible inputs
            sdf.applyPattern("yyyyMMddHHSS");
            fileName = weblog.getHandle()+"-"+sdf.format(new Date())+"."+ext;
    //#RollerAtomHandler.java:827: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String createFileName(Weblog, String, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#RollerAtomHandler.java:827: ?use of default init
    //#    init'ed(ext)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String createFileName(Weblog, String, String)
    //#    basic block: bb_14
    //#    assertion: init'ed(ext)
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
        }
        
        return fileName;
    //#RollerAtomHandler.java:830: end of method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.createFileName(Weblog, String, String)
    }
    
    
    /**
     * Update resource specified by pathInfo using data from input stream.
     * Expects pathInfo of form /blog-name/resource/path/name
     */
    public Entry putMedia(String[] pathInfo,
            String contentType, InputStream is) throws AtomException {
        try {
            // authenticated client posted a weblog entry
            File tempFile = null;
    //#RollerAtomHandler.java:842: method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.putMedia(String[], String, InputStream)
    //#input(Entry putMedia(String[], String, InputStream)): "."._tainted
    //#input(Entry putMedia(String[], String, InputStream)): ".media-link"._tainted
    //#input(Entry putMedia(String[], String, InputStream)): ".resource."._tainted
    //#input(Entry putMedia(String[], String, InputStream)): "Not authorized to edit weblog: "._tainted
    //#input(Entry putMedia(String[], String, InputStream)): contentType
    //#input(Entry putMedia(String[], String, InputStream)): is
    //#input(Entry putMedia(String[], String, InputStream)): java.io.File.separator
    //#input(Entry putMedia(String[], String, InputStream)): java.io.File.separator._tainted
    //#input(Entry putMedia(String[], String, InputStream)): log
    //#input(Entry putMedia(String[], String, InputStream)): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(Entry putMedia(String[], String, InputStream)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Entry putMedia(String[], String, InputStream)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Entry putMedia(String[], String, InputStream)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Entry putMedia(String[], String, InputStream)): pathInfo
    //#input(Entry putMedia(String[], String, InputStream)): pathInfo.length
    //#input(Entry putMedia(String[], String, InputStream)): pathInfo[0]
    //#input(Entry putMedia(String[], String, InputStream)): pathInfo[0]._tainted
    //#input(Entry putMedia(String[], String, InputStream)): pathInfo[2..4_294_967_295]
    //#input(Entry putMedia(String[], String, InputStream)): pathInfo[2..4_294_967_295]._tainted
    //#input(Entry putMedia(String[], String, InputStream)): this
    //#input(Entry putMedia(String[], String, InputStream)): this.atomURL
    //#input(Entry putMedia(String[], String, InputStream)): this.atomURL._tainted
    //#input(Entry putMedia(String[], String, InputStream)): this.roller
    //#input(Entry putMedia(String[], String, InputStream)): this.user
    //#output(Entry putMedia(String[], String, InputStream)): new Entry(createAtomResourceEntry#3) num objects
    //#output(Entry putMedia(String[], String, InputStream)): return_value
    //#new obj(Entry putMedia(String[], String, InputStream)): new Entry(createAtomResourceEntry#3)
    //#pre[4] (Entry putMedia(String[], String, InputStream)): pathInfo != null
    //#pre[5] (Entry putMedia(String[], String, InputStream)): pathInfo.length in 2..4_294_967_295
    //#pre[6] (Entry putMedia(String[], String, InputStream)): init'ed(pathInfo[0])
    //#pre[13] (Entry putMedia(String[], String, InputStream)): this.roller != null
    //#pre[3] (Entry putMedia(String[], String, InputStream)): (soft) log != null
    //#pre[8] (Entry putMedia(String[], String, InputStream)): (soft) init'ed(pathInfo[2..4_294_967_295])
    //#pre[14] (Entry putMedia(String[], String, InputStream)): (soft) init'ed(this.user)
    //#presumption(Entry putMedia(String[], String, InputStream)): java.io.File:createTempFile(...)@853 != null
    //#presumption(Entry putMedia(String[], String, InputStream)): java.util.UUID:randomUUID(...)@853 != null
    //#presumption(Entry putMedia(String[], String, InputStream)): org.apache.roller.weblogger.business.FileManager:getFile(...)@862 != null
    //#presumption(Entry putMedia(String[], String, InputStream)): org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(...)@846 != null
    //#presumption(Entry putMedia(String[], String, InputStream)): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@844 != null
    //#presumption(Entry putMedia(String[], String, InputStream)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@845 != null
    //#post(Entry putMedia(String[], String, InputStream)): return_value == &new Entry(createAtomResourceEntry#3)
    //#post(Entry putMedia(String[], String, InputStream)): new Entry(createAtomResourceEntry#3) num objects == 1
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.util.ArrayList
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.util.List:add
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.lang.String:startsWith
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.webservices.atomprotocol.AtomException
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.lang.Exception
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Link
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Link:setHref
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Link:setRel
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:getUpdated
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getPath
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:javax.activation.FileTypeMap:getDefaultFileTypeMap
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:javax.activation.MimetypesFileTypeMap:instanceof
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:javax.activation.MimetypesFileTypeMap:addMimeTypes
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getName
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:javax.activation.FileTypeMap:getContentType
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setId
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setTitle
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:org.apache.roller.weblogger.pojos.ThemeResource:getLastModified
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:java.util.Date
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setUpdated
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setOtherLinks
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Content
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Content:setSrc
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Content:setType
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setContents
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#unanalyzed(Entry putMedia(String[], String, InputStream)): Effects-of-calling:com.sun.syndication.feed.atom.Entry:setModules
            String handle = pathInfo[0];
            FileManager fmgr = roller.getFileManager();
    //#RollerAtomHandler.java:844: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putMedia(String[], String, InputStream)
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
            UserManager umgr = roller.getUserManager();
    //#RollerAtomHandler.java:845: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putMedia(String[], String, InputStream)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
            Weblog website = umgr.getWebsiteByHandle(handle);
    //#RollerAtomHandler.java:846: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putMedia(String[], String, InputStream)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle(String)
            if (!canEdit(website)) {
                throw new AtomNotAuthorizedException("Not authorized to edit weblog: " + handle);
    //#RollerAtomHandler.java:848: ?conditional throw
    //#    canEdit(...) != 0
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putMedia(String[], String, InputStream)
    //#    basic block: bb_2
    //#    assertion: canEdit(...) != 0
    //#    VN: canEdit(...)
    //#    Expected: {-Inf..-1, 1..+Inf}
    //#    Bad: {0}
    //#    Attribs:  Int  Bad singleton  Bad overlaps +/-1000  Bad > Exp
            }
            if (pathInfo.length > 1) {
                // Save to temp file
                try {
                    tempFile = File.createTempFile(UUID.randomUUID().toString(), "tmp");
                    FileOutputStream fos = new FileOutputStream(tempFile);
                    Utilities.copyInputToOutput(is, fos);
    //#RollerAtomHandler.java:855: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.util.Utilities:copyInputToOutput(InputStream, OutputStream)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putMedia(String[], String, InputStream)
    //#    unanalyzed callee: void org.apache.roller.weblogger.util.Utilities:copyInputToOutput(InputStream, OutputStream)
                    fos.close();
                                        
                    // Parse pathinfo to determine file path
                    String path = filePathFromPathInfo(pathInfo);
                    
                    // Attempt to load file, to ensure it exists
                    ThemeResource resource = fmgr.getFile(website, path);                    
    //#RollerAtomHandler.java:862: Warning: method not available
    //#    -- call on ThemeResource org.apache.roller.weblogger.business.FileManager:getFile(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putMedia(String[], String, InputStream)
    //#    unanalyzed callee: ThemeResource org.apache.roller.weblogger.business.FileManager:getFile(Weblog, String)
                    
                    FileInputStream fis = new FileInputStream(tempFile);  
                    fmgr.saveFile(website, path, contentType, tempFile.length(), fis);
    //#RollerAtomHandler.java:865: 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.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putMedia(String[], String, InputStream)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.FileManager:saveFile(Weblog, String, String, long, InputStream)
                    fis.close();
                    
                    log.debug("Exiting");
    //#RollerAtomHandler.java:868: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry putMedia(String[], String, InputStream)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    return createAtomResourceEntry(website, resource);

                } catch (FileIOException fie) {
                    throw new AtomException(
                        "File upload disabled, over-quota or other error", fie);
                } catch (Exception e) {
                    throw new AtomException(
                        "Unexpected error during file upload", e);
                } finally {
                    if (tempFile != null) tempFile.delete();
                }
            }
            throw new AtomException("Incorrect path information");
        
        } catch (WebloggerException re) {
            throw new AtomException("Posting media");
    //#RollerAtomHandler.java:884: end of method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.putMedia(String[], String, InputStream)
        }

    }
            
    //------------------------------------------------------------------ URI testers
    
    /**
     * True if URL is the introspection URI.
     */
    public boolean isIntrospectionURI(String[] pathInfo) {
        if (pathInfo.length==0) return true;
    //#RollerAtomHandler.java:895: method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.isIntrospectionURI(String[])
    //#input(bool isIntrospectionURI(String[])): pathInfo
    //#input(bool isIntrospectionURI(String[])): pathInfo.length
    //#output(bool isIntrospectionURI(String[])): return_value
    //#pre[1] (bool isIntrospectionURI(String[])): pathInfo != null
    //#post(bool isIntrospectionURI(String[])): init'ed(return_value)
    //#test_vector(bool isIntrospectionURI(String[])): pathInfo.length: {1..+Inf}, {0}
        return false;
    //#RollerAtomHandler.java:896: end of method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.isIntrospectionURI(String[])
    }
    
    /**
     * True if URL is a entry URI.
     */
    public boolean isEntryURI(String[] pathInfo) {
        if (pathInfo.length > 2 && pathInfo[1].equals("entry")) return true;
    //#RollerAtomHandler.java:903: method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.isEntryURI(String[])
    //#input(bool isEntryURI(String[])): pathInfo
    //#input(bool isEntryURI(String[])): pathInfo.length
    //#input(bool isEntryURI(String[])): pathInfo[0, 2..4_294_967_295]
    //#input(bool isEntryURI(String[])): pathInfo[1]
    //#output(bool isEntryURI(String[])): return_value
    //#pre[1] (bool isEntryURI(String[])): pathInfo != null
    //#pre[2] (bool isEntryURI(String[])): (soft) pathInfo.length <= 4_294_967_296
    //#pre[3] (bool isEntryURI(String[])): (soft) pathInfo[0, 2..4_294_967_295] != null
    //#pre[4] (bool isEntryURI(String[])): (soft) pathInfo[1] != null
    //#post(bool isEntryURI(String[])): init'ed(return_value)
    //#test_vector(bool isEntryURI(String[])): pathInfo.length: {0..2}, {3..4_294_967_296}
    //#test_vector(bool isEntryURI(String[])): java.lang.String:endsWith(...)@904: {0}, {1}
    //#test_vector(bool isEntryURI(String[])): java.lang.String:equals(...)@903: {0}, {1}
    //#test_vector(bool isEntryURI(String[])): java.lang.String:equals(...)@904: {0}, {1}
        if (pathInfo.length > 2 && pathInfo[1].equals("resource") && pathInfo[pathInfo.length-1].endsWith(".media-link")) return true;
        return false;
    //#RollerAtomHandler.java:905: end of method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.isEntryURI(String[])
    }
        
    /**
     * True if URL is media edit URI. Media can be udpated, but not metadata.
     */
    public boolean isMediaEditURI(String[] pathInfo) {
        if (pathInfo.length > 1 && pathInfo[1].equals("resource")) return true;
    //#RollerAtomHandler.java:912: method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.isMediaEditURI(String[])
    //#input(bool isMediaEditURI(String[])): pathInfo
    //#input(bool isMediaEditURI(String[])): pathInfo.length
    //#input(bool isMediaEditURI(String[])): pathInfo[1]
    //#output(bool isMediaEditURI(String[])): return_value
    //#pre[1] (bool isMediaEditURI(String[])): pathInfo != null
    //#pre[3] (bool isMediaEditURI(String[])): (soft) pathInfo[1] != null
    //#post(bool isMediaEditURI(String[])): init'ed(return_value)
    //#test_vector(bool isMediaEditURI(String[])): pathInfo.length: {0,1}, {2..+Inf}
    //#test_vector(bool isMediaEditURI(String[])): java.lang.String:equals(...)@912: {0}, {1}
        return false;
    //#RollerAtomHandler.java:913: end of method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.isMediaEditURI(String[])
    }
        
    /**
     * True if URL is a collection URI of any sort.
     */
    public boolean isCollectionURI(String[] pathInfo) {
        if (pathInfo.length > 1 && pathInfo[1].equals("entries")) return true;
    //#RollerAtomHandler.java:920: method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.isCollectionURI(String[])
    //#input(bool isCollectionURI(String[])): pathInfo
    //#input(bool isCollectionURI(String[])): pathInfo.length
    //#input(bool isCollectionURI(String[])): pathInfo[1]
    //#output(bool isCollectionURI(String[])): return_value
    //#pre[1] (bool isCollectionURI(String[])): pathInfo != null
    //#pre[3] (bool isCollectionURI(String[])): (soft) pathInfo[1] != null
    //#post(bool isCollectionURI(String[])): init'ed(return_value)
    //#test_vector(bool isCollectionURI(String[])): pathInfo.length: {0,1}, {2..+Inf}
    //#test_vector(bool isCollectionURI(String[])): java.lang.String:equals(...)@920: {0}, {1}
    //#test_vector(bool isCollectionURI(String[])): java.lang.String:equals(...)@921: {0}, {1}
    //#test_vector(bool isCollectionURI(String[])): java.lang.String:equals(...)@922: {0}, {1}
        if (pathInfo.length > 1 && pathInfo[1].equals("resources")) return true;
        if (pathInfo.length > 1 && pathInfo[1].equals("categories")) return true;
        return false;
    //#RollerAtomHandler.java:923: end of method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.isCollectionURI(String[])
    }
    
    //------------------------------------------------------------------ permissions
    
    /**
     * Return true if user is allowed to edit an entry.
     */
    private boolean canEdit(WeblogEntry entry) {
        try {
            return entry.hasWritePermissions(this.user);
    //#RollerAtomHandler.java:933: method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.canEdit(WeblogEntry)
    //#RollerAtomHandler.java:933: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogEntry:hasWritePermissions(User)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: bool canEdit(WeblogEntry)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogEntry:hasWritePermissions(User)
    //#input(bool canEdit(WeblogEntry)): entry
    //#input(bool canEdit(WeblogEntry)): log
    //#input(bool canEdit(WeblogEntry)): this
    //#input(bool canEdit(WeblogEntry)): this.user
    //#output(bool canEdit(WeblogEntry)): return_value
    //#pre[1] (bool canEdit(WeblogEntry)): (soft) entry != null
    //#pre[2] (bool canEdit(WeblogEntry)): (soft) log != null
    //#pre[4] (bool canEdit(WeblogEntry)): (soft) init'ed(this.user)
    //#post(bool canEdit(WeblogEntry)): init'ed(return_value)
        } catch (Exception e) {
            log.error("Checking website.canSave()");
    //#RollerAtomHandler.java:935: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: bool canEdit(WeblogEntry)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
        }
        return false;
    //#RollerAtomHandler.java:937: end of method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.canEdit(WeblogEntry)
    }
    
    /**
     * Return true if user is allowed to create/edit weblog entries and file uploads in a website.
     */
    private boolean canEdit(Weblog website) {
        try {
            return website.hasUserPermissions(this.user,WeblogPermission.AUTHOR);
    //#RollerAtomHandler.java:945: method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.canEdit(Weblog)
    //#RollerAtomHandler.java:945: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions(User, short)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: bool canEdit(Weblog)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions(User, short)
    //#input(bool canEdit(Weblog)): log
    //#input(bool canEdit(Weblog)): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(bool canEdit(Weblog)): this
    //#input(bool canEdit(Weblog)): this.user
    //#input(bool canEdit(Weblog)): website
    //#output(bool canEdit(Weblog)): return_value
    //#pre[1] (bool canEdit(Weblog)): (soft) log != null
    //#pre[3] (bool canEdit(Weblog)): (soft) init'ed(this.user)
    //#pre[4] (bool canEdit(Weblog)): (soft) website != null
    //#presumption(bool canEdit(Weblog)): init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR)
    //#post(bool canEdit(Weblog)): init'ed(return_value)
        } catch (Exception e) {
            log.error("Checking website.hasUserPermissions()");
    //#RollerAtomHandler.java:947: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: bool canEdit(Weblog)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
        }
        return false;
    //#RollerAtomHandler.java:949: end of method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.canEdit(Weblog)
    }
    
    /**
     * Return true if user is allowed to view an entry.
     */
    private boolean canView(WeblogEntry entry) {
        return canEdit(entry);
    //#RollerAtomHandler.java:956: method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.canView(WeblogEntry)
    //#input(bool canView(WeblogEntry)): entry
    //#input(bool canView(WeblogEntry)): log
    //#input(bool canView(WeblogEntry)): this
    //#input(bool canView(WeblogEntry)): this.user
    //#output(bool canView(WeblogEntry)): return_value
    //#pre[1] (bool canView(WeblogEntry)): (soft) entry != null
    //#pre[2] (bool canView(WeblogEntry)): (soft) log != null
    //#pre[4] (bool canView(WeblogEntry)): (soft) init'ed(this.user)
    //#post(bool canView(WeblogEntry)): init'ed(return_value)
    //#unanalyzed(bool canView(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:hasWritePermissions
    //#unanalyzed(bool canView(WeblogEntry)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(bool canView(WeblogEntry)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#RollerAtomHandler.java:956: end of method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.canView(WeblogEntry)
    }
    
    /**
     * Return true if user is allowed to view a website.
     */
    private boolean canView(Weblog website) {
        return canEdit(website);
    //#RollerAtomHandler.java:963: method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.canView(Weblog)
    //#input(bool canView(Weblog)): log
    //#input(bool canView(Weblog)): org.apache.roller.weblogger.pojos.WeblogPermission.AUTHOR
    //#input(bool canView(Weblog)): this
    //#input(bool canView(Weblog)): this.user
    //#input(bool canView(Weblog)): website
    //#output(bool canView(Weblog)): return_value
    //#pre[1] (bool canView(Weblog)): (soft) log != null
    //#pre[3] (bool canView(Weblog)): (soft) init'ed(this.user)
    //#pre[4] (bool canView(Weblog)): (soft) website != null
    //#post(bool canView(Weblog)): init'ed(return_value)
    //#unanalyzed(bool canView(Weblog)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(bool canView(Weblog)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(bool canView(Weblog)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:hasUserPermissions
    //#RollerAtomHandler.java:963: end of method: bool org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.canView(Weblog)
    }
    
    //-------------------------------------------------------------- authentication
    
    /**
     * Perform WSSE authentication based on information in request.
     * Will not work if Weblogger password encryption is turned on.
     */
    protected String authenticateWSSE(HttpServletRequest request) {
        String wsseHeader = request.getHeader("X-WSSE");
    //#RollerAtomHandler.java:973: method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.authenticateWSSE(HttpServletRequest)
    //#input(String authenticateWSSE(HttpServletRequest)): "During wsseAuthenticataion: "._tainted
    //#input(String authenticateWSSE(HttpServletRequest)): log
    //#input(String authenticateWSSE(HttpServletRequest)): request
    //#input(String authenticateWSSE(HttpServletRequest)): this
    //#input(String authenticateWSSE(HttpServletRequest)): this.roller
    //#output(String authenticateWSSE(HttpServletRequest)): return_value
    //#pre[2] (String authenticateWSSE(HttpServletRequest)): request != null
    //#pre[1] (String authenticateWSSE(HttpServletRequest)): (soft) log != null
    //#pre[4] (String authenticateWSSE(HttpServletRequest)): (soft) this.roller != null
    //#presumption(String authenticateWSSE(HttpServletRequest)): org.apache.roller.weblogger.business.UserManager:getUserByUserName(...)@1001 != null
    //#presumption(String authenticateWSSE(HttpServletRequest)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@1001 != null
    //#presumption(String authenticateWSSE(HttpServletRequest)): org.apache.roller.weblogger.pojos.User:getPassword(...)@1002 != null
    //#presumption(String authenticateWSSE(HttpServletRequest)): org.apache.roller.weblogger.util.WSSEUtilities:generateDigest(...)@1002 != null
    //#post(String authenticateWSSE(HttpServletRequest)): return_value == null
    //#test_vector(String authenticateWSSE(HttpServletRequest)): java.lang.String:equals(...)@1006: {0}, {1}
    //#test_vector(String authenticateWSSE(HttpServletRequest)): javax.servlet.http.HttpServletRequest:getHeader(...)@973: Inverse{null}, Addr_Set{null}
        if (wsseHeader == null) return null;
        
        String ret = null;
        String userName = null;
        String created = null;
        String nonce = null;
        String passwordDigest = null;
        String[] tokens = wsseHeader.split(",");
        for (int i = 0; i < tokens.length; i++) {
    //#RollerAtomHandler.java:982: ?use of default init
    //#    init'ed(tokens.length)
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    basic block: bb_4
    //#    assertion: init'ed(tokens.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#RollerAtomHandler.java:982: Warning: test always goes same way
    //#    test predetermined because i == tokens.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    from bb: bb_4
    //#    live edge: bb_4-->bb_15
    //#    tested vn: i - undefined
    //#    tested vn values: {0}
    //#RollerAtomHandler.java:982: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_14
            int index = tokens[i].indexOf('=');
    //#RollerAtomHandler.java:983: Warning: dead code
    //#    dead code here because i == tokens.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_5
            if (index != -1) {
                String key = tokens[i].substring(0, index).trim();
    //#RollerAtomHandler.java:985: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_6
                String value = tokens[i].substring(index + 1).trim();
                value = value.replaceAll("\"", "");
                if (key.startsWith("UsernameToken")) {
                    userName = value;
    //#RollerAtomHandler.java:989: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_7
                } else if (key.equalsIgnoreCase("nonce")) {
    //#RollerAtomHandler.java:990: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_8
                    nonce = value;
    //#RollerAtomHandler.java:991: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_9
                } else if (key.equalsIgnoreCase("passworddigest")) {
    //#RollerAtomHandler.java:992: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_10
                    passwordDigest = value;
    //#RollerAtomHandler.java:993: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_11
                } else if (key.equalsIgnoreCase("created")) {
    //#RollerAtomHandler.java:994: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_12
                    created = value;
    //#RollerAtomHandler.java:995: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    dead bb: bb_13
                }
            }
        }
        String digest = null;
    //#RollerAtomHandler.java:999: Warning: unused assignment
    //#    unused assignment into digest
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    Attribs:  Uncertain
        try {
            User user = roller.getUserManager().getUserByUserName(userName);
    //#RollerAtomHandler.java:1001: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerAtomHandler.java:1001: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.business.UserManager:getUserByUserName(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    unanalyzed callee: User org.apache.roller.weblogger.business.UserManager:getUserByUserName(String)
            digest = WSSEUtilities.generateDigest(
    //#RollerAtomHandler.java:1002: Warning: method not available
    //#    -- call on byte[] org.apache.roller.weblogger.util.WSSEUtilities:base64Decode(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    unanalyzed callee: byte[] org.apache.roller.weblogger.util.WSSEUtilities:base64Decode(String)
    //#RollerAtomHandler.java:1002: ?!null dereference
    //#    created != null
    //#    severity: HIGH
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    basic block: bb_16
    //#    assertion: created != null
    //#    VN: created
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#RollerAtomHandler.java:1002: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getPassword()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getPassword()
    //#RollerAtomHandler.java:1002: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.WSSEUtilities:generateDigest(byte[], byte[], byte[])
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.WSSEUtilities:generateDigest(byte[], byte[], byte[])
                    WSSEUtilities.base64Decode(nonce),
                    created.getBytes("UTF-8"),
                    user.getPassword().getBytes("UTF-8"));
            if (digest.equals(passwordDigest)) {
                ret = userName;
            }
        } catch (Exception e) {
            log.error("During wsseAuthenticataion: " + e.getMessage(), e);
    //#RollerAtomHandler.java:1010: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateWSSE(HttpServletRequest)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
        }
        return ret;
    //#RollerAtomHandler.java:1012: end of method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.authenticateWSSE(HttpServletRequest)
    }
    
    /**
     * BASIC authentication.
     */
    public String authenticateBASIC(HttpServletRequest request) {
        boolean valid = false;
    //#RollerAtomHandler.java:1019: method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.authenticateBASIC(HttpServletRequest)
    //#input(String authenticateBASIC(HttpServletRequest)): log
    //#input(String authenticateBASIC(HttpServletRequest)): request
    //#input(String authenticateBASIC(HttpServletRequest)): this
    //#input(String authenticateBASIC(HttpServletRequest)): this.roller
    //#output(String authenticateBASIC(HttpServletRequest)): java.lang.String:substring(...)._tainted
    //#output(String authenticateBASIC(HttpServletRequest)): return_value
    //#new obj(String authenticateBASIC(HttpServletRequest)): java.lang.String:substring(...)
    //#pre[1] (String authenticateBASIC(HttpServletRequest)): (soft) log != null
    //#pre[2] (String authenticateBASIC(HttpServletRequest)): (soft) request != null
    //#pre[4] (String authenticateBASIC(HttpServletRequest)): (soft) this.roller != null
    //#presumption(String authenticateBASIC(HttpServletRequest)): java.lang.String:indexOf(...)@1031 <= 4_294_967_294
    //#presumption(String authenticateBASIC(HttpServletRequest)): org.apache.roller.weblogger.business.UserManager:getUserByUserName(...)@1034 != null
    //#presumption(String authenticateBASIC(HttpServletRequest)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@1034 != null
    //#presumption(String authenticateBASIC(HttpServletRequest)): org.apache.roller.weblogger.pojos.User:getEnabled(...)@1035 != null
    //#presumption(String authenticateBASIC(HttpServletRequest)): org.apache.roller.weblogger.pojos.User:getPassword(...)@1045 != null
    //#post(String authenticateBASIC(HttpServletRequest)): java.lang.String:substring(...)._tainted == 0
    //#post(String authenticateBASIC(HttpServletRequest)): return_value in Addr_Set{null,&java.lang.String:substring(...)}
    //#test_vector(String authenticateBASIC(HttpServletRequest)): java.lang.Boolean:booleanValue(...)@1035: {0}, {1}
    //#test_vector(String authenticateBASIC(HttpServletRequest)): java.lang.String:equalsIgnoreCase(...)@1028: {0}, {1}
    //#test_vector(String authenticateBASIC(HttpServletRequest)): java.lang.String:equalsIgnoreCase(...)@1041: {0}, {1}
    //#test_vector(String authenticateBASIC(HttpServletRequest)): java.lang.String:indexOf(...)@1031: {-1}, {-2_147_483_648..-2, 0..4_294_967_294}
    //#test_vector(String authenticateBASIC(HttpServletRequest)): java.util.StringTokenizer:hasMoreTokens(...)@1026: {0}, {1}
    //#test_vector(String authenticateBASIC(HttpServletRequest)): javax.servlet.http.HttpServletRequest:getHeader(...)@1023: Addr_Set{null}, Inverse{null}
        String userID = null;
        String password = null;
    //#RollerAtomHandler.java:1021: Warning: unused assignment
    //#    unused assignment into password
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    Attribs:  Uncertain
        try {
            String authHeader = request.getHeader("Authorization");
            if (authHeader != null) {
                StringTokenizer st = new StringTokenizer(authHeader);
                if (st.hasMoreTokens()) {
                    String basic = st.nextToken();
                    if (basic.equalsIgnoreCase("Basic")) {
                        String credentials = st.nextToken();
                        String userPass = new String(Base64.decodeBase64(credentials.getBytes()));
    //#RollerAtomHandler.java:1030: Warning: method not available
    //#    -- call on byte[] org.apache.commons.codec.binary.Base64:decodeBase64(byte[])
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    unanalyzed callee: byte[] org.apache.commons.codec.binary.Base64:decodeBase64(byte[])
                        int p = userPass.indexOf(":");
                        if (p != -1) {
                            userID = userPass.substring(0, p);
                            User user = roller.getUserManager().getUserByUserName(userID);
    //#RollerAtomHandler.java:1034: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#RollerAtomHandler.java:1034: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.business.UserManager:getUserByUserName(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    unanalyzed callee: User org.apache.roller.weblogger.business.UserManager:getUserByUserName(String)
                            boolean enabled = user.getEnabled().booleanValue();
    //#RollerAtomHandler.java:1035: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.User:getEnabled()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.User:getEnabled()
                            if (enabled) {
                                // are passwords encrypted?
                                String encrypted =
    //#RollerAtomHandler.java:1038: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
                                        WebloggerConfig.getProperty("passwds.encryption.enabled");
                                password = userPass.substring(p+1);
                                if ("true".equalsIgnoreCase(encrypted)) {
                                    password = Utilities.encodePassword(password,
    //#RollerAtomHandler.java:1042: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
    //#RollerAtomHandler.java:1042: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.Utilities:encodePassword(String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.Utilities:encodePassword(String, String)
                                            WebloggerConfig.getProperty("passwds.encryption.algorithm"));
                                }
                                valid = user.getPassword().equals(password);
    //#RollerAtomHandler.java:1045: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getPassword()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getPassword()
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            log.debug(e);
    //#RollerAtomHandler.java:1052: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String authenticateBASIC(HttpServletRequest)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        }
        if (valid) return userID;
        return null;
    //#RollerAtomHandler.java:1055: end of method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.authenticateBASIC(HttpServletRequest)
    }
    
    //----------------------------------------------------------- internal utilities
    
    /**
     * Create a Rome Atom entry based on a Weblogger entry.
     * Content is escaped.
     * Link is stored as rel=alternate link.
     */
    private Entry createAtomEntry(WeblogEntry entry) {
        Entry atomEntry = new Entry();
    //#RollerAtomHandler.java:1066: method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.createAtomEntry(WeblogEntry)
    //#RollerAtomHandler.java:1066: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry()
    //#input(Entry createAtomEntry(WeblogEntry)): "."._tainted
    //#input(Entry createAtomEntry(WeblogEntry)): ".entry."._tainted
    //#input(Entry createAtomEntry(WeblogEntry)): entry
    //#input(Entry createAtomEntry(WeblogEntry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Entry createAtomEntry(WeblogEntry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Entry createAtomEntry(WeblogEntry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Entry createAtomEntry(WeblogEntry)): this
    //#input(Entry createAtomEntry(WeblogEntry)): this.atomURL
    //#input(Entry createAtomEntry(WeblogEntry)): this.atomURL._tainted
    //#output(Entry createAtomEntry(WeblogEntry)): new Entry(createAtomEntry#1) num objects
    //#output(Entry createAtomEntry(WeblogEntry)): return_value
    //#new obj(Entry createAtomEntry(WeblogEntry)): new Entry(createAtomEntry#1)
    //#pre[1] (Entry createAtomEntry(WeblogEntry)): entry != null
    //#presumption(Entry createAtomEntry(WeblogEntry)): java.util.Iterator:next(...)@1104 != null
    //#presumption(Entry createAtomEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogCategory:getPath(...)@1099 != null
    //#presumption(Entry createAtomEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getCategory(...)@1099 != null
    //#presumption(Entry createAtomEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getCreator(...)@1089 != null
    //#presumption(Entry createAtomEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getTags(...)@1103 != null
    //#presumption(Entry createAtomEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@1120 != null
    //#post(Entry createAtomEntry(WeblogEntry)): return_value == &new Entry(createAtomEntry#1)
    //#post(Entry createAtomEntry(WeblogEntry)): new Entry(createAtomEntry#1) num objects == 1
    //#unanalyzed(Entry createAtomEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Entry createAtomEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(Entry createAtomEntry(WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogURL
    //#unanalyzed(Entry createAtomEntry(WeblogEntry)): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#test_vector(Entry createAtomEntry(WeblogEntry)): java.util.Iterator:hasNext(...)@1103: {0}, {1}
    //#test_vector(Entry createAtomEntry(WeblogEntry)): org.apache.commons.lang.StringUtils:isNotEmpty(...)@1082: {0}, {1}
        
        String absUrl = WebloggerRuntimeConfig.getAbsoluteContextURL();
    //#RollerAtomHandler.java:1068: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
        atomEntry.setId(        absUrl + entry.getPermaLink());
    //#RollerAtomHandler.java:1069: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink()
    //#RollerAtomHandler.java:1069: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setId(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setId(String)
        atomEntry.setTitle(     entry.getTitle());
    //#RollerAtomHandler.java:1070: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getTitle()
    //#RollerAtomHandler.java:1070: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setTitle(String)
        atomEntry.setPublished( entry.getPubTime());
    //#RollerAtomHandler.java:1071: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#RollerAtomHandler.java:1071: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setPublished(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setPublished(Date)
        atomEntry.setUpdated(   entry.getUpdateTime());
    //#RollerAtomHandler.java:1072: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getUpdateTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getUpdateTime()
    //#RollerAtomHandler.java:1072: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setUpdated(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setUpdated(Date)
        
        Content content = new Content();
    //#RollerAtomHandler.java:1074: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Content()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Content()
        content.setType(Content.HTML);
    //#RollerAtomHandler.java:1075: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Content:setType(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Content:setType(String)
        content.setValue(entry.getText());
    //#RollerAtomHandler.java:1076: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getText()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getText()
    //#RollerAtomHandler.java:1076: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Content:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Content:setValue(String)
        List contents = new ArrayList();
        contents.add(content);
        
        atomEntry.setContents(contents);
    //#RollerAtomHandler.java:1080: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setContents(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setContents(List)
        
        if (StringUtils.isNotEmpty(entry.getSummary())) {
    //#RollerAtomHandler.java:1082: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getSummary()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getSummary()
    //#RollerAtomHandler.java:1082: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isNotEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isNotEmpty(String)
            Content summary = new Content();
    //#RollerAtomHandler.java:1083: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Content()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Content()
            summary.setType(Content.HTML);
    //#RollerAtomHandler.java:1084: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Content:setType(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Content:setType(String)
            summary.setValue(entry.getSummary());
    //#RollerAtomHandler.java:1085: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getSummary()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getSummary()
    //#RollerAtomHandler.java:1085: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Content:setValue(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Content:setValue(String)
            atomEntry.setSummary(summary);
    //#RollerAtomHandler.java:1086: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setSummary(Content)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setSummary(Content)
        }
        
        User creator = entry.getCreator();
    //#RollerAtomHandler.java:1089: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
        Person author = new Person();
    //#RollerAtomHandler.java:1090: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Person()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Person()
        author.setName(         creator.getUserName());
    //#RollerAtomHandler.java:1091: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
    //#RollerAtomHandler.java:1091: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Person:setName(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Person:setName(String)
        author.setEmail(        creator.getEmailAddress());
    //#RollerAtomHandler.java:1092: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#RollerAtomHandler.java:1092: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Person:setEmail(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Person:setEmail(String)
        atomEntry.setAuthors(   Collections.singletonList(author));
    //#RollerAtomHandler.java:1093: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setAuthors(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setAuthors(List)
        
        // Add Atom category for Weblogger category, using category scheme
        List categories = new ArrayList();
        Category atomCat = new Category();
    //#RollerAtomHandler.java:1097: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Category()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Category()
        atomCat.setScheme(getWeblogCategoryScheme(entry.getWebsite()));
    //#RollerAtomHandler.java:1098: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#RollerAtomHandler.java:1098: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Category:setScheme(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Category:setScheme(String)
        atomCat.setTerm(entry.getCategory().getPath().substring(1));
    //#RollerAtomHandler.java:1099: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.WeblogEntry:getCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.WeblogEntry:getCategory()
    //#RollerAtomHandler.java:1099: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#RollerAtomHandler.java:1099: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Category:setTerm(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Category:setTerm(String)
        categories.add(atomCat);
        
        // Add Atom categories for each Weblogger tag with null scheme
        for (Iterator tagit = entry.getTags().iterator(); tagit.hasNext();) {
    //#RollerAtomHandler.java:1103: Warning: method not available
    //#    -- call on Set org.apache.roller.weblogger.pojos.WeblogEntry:getTags()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: Set org.apache.roller.weblogger.pojos.WeblogEntry:getTags()
            WeblogEntryTag tag = (WeblogEntryTag) tagit.next();
            Category newcat = new Category();
    //#RollerAtomHandler.java:1105: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Category()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Category()
            newcat.setTerm(tag.getName());
    //#RollerAtomHandler.java:1106: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntryTag:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntryTag:getName()
    //#RollerAtomHandler.java:1106: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Category:setTerm(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Category:setTerm(String)
            categories.add(newcat);
        }        
        atomEntry.setCategories(categories);
    //#RollerAtomHandler.java:1109: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setCategories(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setCategories(List)
        
        Link altlink = new Link();
    //#RollerAtomHandler.java:1111: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
        altlink.setRel("alternate");
    //#RollerAtomHandler.java:1112: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
        altlink.setHref(absUrl + entry.getPermaLink());
    //#RollerAtomHandler.java:1113: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink()
    //#RollerAtomHandler.java:1113: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
        List altlinks = new ArrayList();
        altlinks.add(altlink);
        atomEntry.setAlternateLinks(altlinks);
    //#RollerAtomHandler.java:1116: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setAlternateLinks(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setAlternateLinks(List)
        
        Link editlink = new Link();
    //#RollerAtomHandler.java:1118: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
        editlink.setRel("edit");
    //#RollerAtomHandler.java:1119: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
        editlink.setHref(
    //#RollerAtomHandler.java:1120: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#RollerAtomHandler.java:1120: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#RollerAtomHandler.java:1120: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#RollerAtomHandler.java:1120: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
                atomURL
                +"/"+entry.getWebsite().getHandle() + "/entry/" + entry.getId());
        List otherlinks = new ArrayList();
        otherlinks.add(editlink);
        atomEntry.setOtherLinks(otherlinks);
    //#RollerAtomHandler.java:1125: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setOtherLinks(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setOtherLinks(List)
        
        List modules = new ArrayList();
        AppModule app = new AppModuleImpl();
        app.setDraft(!WeblogEntry.PUBLISHED.equals(entry.getStatus()));
    //#RollerAtomHandler.java:1129: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getStatus()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getStatus()
        app.setEdited(entry.getUpdateTime());
    //#RollerAtomHandler.java:1130: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getUpdateTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getUpdateTime()
        modules.add(app);
        atomEntry.setModules(modules);
    //#RollerAtomHandler.java:1132: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setModules(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomEntry(WeblogEntry)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setModules(List)
        
        return atomEntry;
    //#RollerAtomHandler.java:1134: end of method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.createAtomEntry(WeblogEntry)
    }
    
    private Entry createAtomResourceEntry(Weblog website, ThemeResource file) {
        String absUrl = WebloggerRuntimeConfig.getAbsoluteContextURL();
    //#RollerAtomHandler.java:1138: method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.createAtomResourceEntry(Weblog, ThemeResource)
    //#RollerAtomHandler.java:1138: Warning: unused assignment
    //#    unused assignment into absUrl
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#RollerAtomHandler.java:1138: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): "."._tainted
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): ".media-link"._tainted
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): ".resource."._tainted
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): file
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setDraft(Z)V
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.setEdited(Ljava/util/Date;)V
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): this
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): this.atomURL
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): this.atomURL._tainted
    //#input(Entry createAtomResourceEntry(Weblog, ThemeResource)): website
    //#output(Entry createAtomResourceEntry(Weblog, ThemeResource)): new Entry(createAtomResourceEntry#3) num objects
    //#output(Entry createAtomResourceEntry(Weblog, ThemeResource)): return_value
    //#new obj(Entry createAtomResourceEntry(Weblog, ThemeResource)): new Entry(createAtomResourceEntry#3)
    //#pre[1] (Entry createAtomResourceEntry(Weblog, ThemeResource)): file != null
    //#pre[5] (Entry createAtomResourceEntry(Weblog, ThemeResource)): website != null
    //#presumption(Entry createAtomResourceEntry(Weblog, ThemeResource)): javax.activation.FileTypeMap:getDefaultFileTypeMap(...)@1150 != null
    //#presumption(Entry createAtomResourceEntry(Weblog, ThemeResource)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@1147 != null
    //#presumption(Entry createAtomResourceEntry(Weblog, ThemeResource)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@1147 != null
    //#presumption(Entry createAtomResourceEntry(Weblog, ThemeResource)): org.apache.roller.weblogger.pojos.ThemeResource:getPath(...)@1139 != null
    //#presumption(Entry createAtomResourceEntry(Weblog, ThemeResource)): org.apache.roller.weblogger.pojos.ThemeResource:getPath(...)@1139 != null
    //#post(Entry createAtomResourceEntry(Weblog, ThemeResource)): return_value == &new Entry(createAtomResourceEntry#3)
    //#post(Entry createAtomResourceEntry(Weblog, ThemeResource)): new Entry(createAtomResourceEntry#3) num objects == 1
    //#unanalyzed(Entry createAtomResourceEntry(Weblog, ThemeResource)): Effects-of-calling:com.sun.syndication.feed.module.ModuleImpl
    //#test_vector(Entry createAtomResourceEntry(Weblog, ThemeResource)): java.lang.String:startsWith(...)@1139: {0}, {1}
        String filePath = 
    //#RollerAtomHandler.java:1139: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeResource:getPath()
            file.getPath().startsWith("/") ? file.getPath().substring(1) : file.getPath();
        String editURI = 
    //#RollerAtomHandler.java:1141: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                atomURL+"/"+website.getHandle()
                + "/resource/" + filePath + ".media-link";
        String editMediaURI = 
    //#RollerAtomHandler.java:1144: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
                atomURL+"/"+ website.getHandle()
                + "/resource/" + filePath;
        URLStrategy urlStrategy = WebloggerFactory.getWeblogger().getUrlStrategy();
    //#RollerAtomHandler.java:1147: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#RollerAtomHandler.java:1147: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
        String viewURI = urlStrategy.getWeblogResourceURL(website, filePath, true);
    //#RollerAtomHandler.java:1148: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL(Weblog, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL(Weblog, String, bool)
        
        FileTypeMap map = FileTypeMap.getDefaultFileTypeMap();
        // TODO: figure out why PNG is missing from Java MIME types
        if (map instanceof MimetypesFileTypeMap) {
            try {
                ((MimetypesFileTypeMap)map).addMimeTypes("image/png png PNG");
            } catch (Exception ignored) {}
        }
        String contentType = map.getContentType(file.getName());
    //#RollerAtomHandler.java:1157: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeResource:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeResource:getName()
        
        Entry entry = new Entry();
    //#RollerAtomHandler.java:1159: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry()
        entry.setId(editMediaURI);
    //#RollerAtomHandler.java:1160: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setId(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setId(String)
        entry.setTitle(file.getName());
    //#RollerAtomHandler.java:1161: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.ThemeResource:getName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.ThemeResource:getName()
    //#RollerAtomHandler.java:1161: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setTitle(String)
        entry.setUpdated(new Date(file.getLastModified()));
    //#RollerAtomHandler.java:1162: Warning: method not available
    //#    -- call on long org.apache.roller.weblogger.pojos.ThemeResource:getLastModified()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: long org.apache.roller.weblogger.pojos.ThemeResource:getLastModified()
    //#RollerAtomHandler.java:1162: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setUpdated(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setUpdated(Date)
        
        List otherlinks = new ArrayList();        
        entry.setOtherLinks(otherlinks);
    //#RollerAtomHandler.java:1165: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setOtherLinks(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setOtherLinks(List)
        Link editlink = new Link();
    //#RollerAtomHandler.java:1166: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
            editlink.setRel("edit");
    //#RollerAtomHandler.java:1167: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
            editlink.setHref(editURI);        
    //#RollerAtomHandler.java:1168: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
            otherlinks.add(editlink);            
        Link editMedialink = new Link();
    //#RollerAtomHandler.java:1170: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link()
            editMedialink.setRel("edit-media");
    //#RollerAtomHandler.java:1171: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setRel(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setRel(String)
            editMedialink.setHref(editMediaURI);        
    //#RollerAtomHandler.java:1172: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Link:setHref(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Link:setHref(String)
            otherlinks.add(editMedialink);
        
        Content content = new Content();
    //#RollerAtomHandler.java:1175: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Content()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Content()
        content.setSrc(viewURI);
    //#RollerAtomHandler.java:1176: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Content:setSrc(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Content:setSrc(String)
        content.setType(contentType);
    //#RollerAtomHandler.java:1177: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Content:setType(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Content:setType(String)
        List contents = new ArrayList();
        contents.add(content);
        entry.setContents(contents);
    //#RollerAtomHandler.java:1180: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setContents(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setContents(List)
        
        List modules = new ArrayList();
        AppModule app = new AppModuleImpl();
        app.setDraft(false);
        app.setEdited(entry.getUpdated());
    //#RollerAtomHandler.java:1185: Warning: method not available
    //#    -- call on Date com.sun.syndication.feed.atom.Entry:getUpdated()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: Date com.sun.syndication.feed.atom.Entry:getUpdated()
        modules.add(app);
        entry.setModules(modules);
    //#RollerAtomHandler.java:1187: Warning: method not available
    //#    -- call on void com.sun.syndication.feed.atom.Entry:setModules(List)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: Entry createAtomResourceEntry(Weblog, ThemeResource)
    //#    unanalyzed callee: void com.sun.syndication.feed.atom.Entry:setModules(List)
        
        return entry;
    //#RollerAtomHandler.java:1189: end of method: Entry org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.createAtomResourceEntry(Weblog, ThemeResource)
    }
    
    /**
     * Copy fields from ROME entry to Weblogger entry.
     */
    private void copyToRollerEntry(Entry entry, WeblogEntry rollerEntry) throws WebloggerException {
        
        Timestamp current = new Timestamp(System.currentTimeMillis());
    //#RollerAtomHandler.java:1197: method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.copyToRollerEntry(Entry, WeblogEntry)
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): " "._tainted
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): ""._tainted
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): entry
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl]
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AppModule]
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Descendant_Table[others]
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModule.__Dispatch_Table.getDraft()Z
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl.__Dispatch_Table.getDraft()Z
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): rollerEntry
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): this
    //#input(void copyToRollerEntry(Entry, WeblogEntry)): this.roller
    //#pre[1] (void copyToRollerEntry(Entry, WeblogEntry)): entry != null
    //#pre[2] (void copyToRollerEntry(Entry, WeblogEntry)): rollerEntry != null
    //#pre[4] (void copyToRollerEntry(Entry, WeblogEntry)): (soft) this.roller != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Category:getScheme(...)@1234 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getContents(...)@1207 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getContents(...)@1208 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getModule(...).__Tag@1217 in {org/apache/roller/weblogger/webservices/atomprotocol/AppModule, org/apache/roller/weblogger/webservices/atomprotocol/AppModuleImpl}
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getPublished(...)@1201 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getSummary(...)@1212 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getUpdated(...)@1204 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): java.util.List:get(...)@1208 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): java.util.List:get(...)@1232 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): java.util.List:get(...)@1259 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@1237 != null
    //#presumption(void copyToRollerEntry(Entry, WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@1251 != null
    //#unanalyzed(void copyToRollerEntry(Entry, WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(void copyToRollerEntry(Entry, WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUrlStrategy
    //#unanalyzed(void copyToRollerEntry(Entry, WeblogEntry)): Effects-of-calling:org.apache.roller.weblogger.business.URLStrategy:getWeblogURL
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Category:getScheme(...)@1234: Addr_Set{null}, Inverse{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Category:getScheme(...)@1260: Inverse{null}, Addr_Set{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Category:getTerm(...)@1235: Addr_Set{null}, Inverse{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getCategories(...)@1229: Addr_Set{null}, Inverse{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getContents(...)@1207: Addr_Set{null}, Inverse{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getModule(...)@1217: Addr_Set{null}, Inverse{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getPublished(...)@1200: Addr_Set{null}, Inverse{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getSummary(...)@1211: Addr_Set{null}, Inverse{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): com.sun.syndication.feed.atom.Entry:getUpdated(...)@1203: Addr_Set{null}, Inverse{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): control.draft@1217: {0}, {1}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): java.lang.String:equals(...)@1234: {0}, {1}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): java.util.List:size(...)@1207: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): java.util.List:size(...)@1230: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): java.util.List:size(...)@1257: {-2_147_483_648..0}, {1..4_294_967_295}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath(...)@1237: Addr_Set{null}, Inverse{null}
    //#test_vector(void copyToRollerEntry(Entry, WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:getCategory(...)@1249: Inverse{null}, Addr_Set{null}
        Timestamp pubTime = current;
        Timestamp updateTime = current;
        if (entry.getPublished() != null) {
    //#RollerAtomHandler.java:1200: Warning: method not available
    //#    -- call on Date com.sun.syndication.feed.atom.Entry:getPublished()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Date com.sun.syndication.feed.atom.Entry:getPublished()
            pubTime = new Timestamp( entry.getPublished().getTime() );
    //#RollerAtomHandler.java:1201: Warning: method not available
    //#    -- call on Date com.sun.syndication.feed.atom.Entry:getPublished()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Date com.sun.syndication.feed.atom.Entry:getPublished()
        }
        if (entry.getUpdated() != null) {
    //#RollerAtomHandler.java:1203: Warning: method not available
    //#    -- call on Date com.sun.syndication.feed.atom.Entry:getUpdated()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Date com.sun.syndication.feed.atom.Entry:getUpdated()
            updateTime = new Timestamp( entry.getUpdated().getTime() );
    //#RollerAtomHandler.java:1204: Warning: method not available
    //#    -- call on Date com.sun.syndication.feed.atom.Entry:getUpdated()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Date com.sun.syndication.feed.atom.Entry:getUpdated()
        }
        rollerEntry.setTitle(entry.getTitle());
    //#RollerAtomHandler.java:1206: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.atom.Entry:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: String com.sun.syndication.feed.atom.Entry:getTitle()
    //#RollerAtomHandler.java:1206: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setTitle(String)
        if (entry.getContents() != null && entry.getContents().size() > 0) {
    //#RollerAtomHandler.java:1207: Warning: method not available
    //#    -- call on List com.sun.syndication.feed.atom.Entry:getContents()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: List com.sun.syndication.feed.atom.Entry:getContents()
            Content content = (Content)entry.getContents().get(0);
    //#RollerAtomHandler.java:1208: Warning: method not available
    //#    -- call on List com.sun.syndication.feed.atom.Entry:getContents()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: List com.sun.syndication.feed.atom.Entry:getContents()
            rollerEntry.setText(content.getValue());
    //#RollerAtomHandler.java:1209: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.atom.Content:getValue()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: String com.sun.syndication.feed.atom.Content:getValue()
    //#RollerAtomHandler.java:1209: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setText(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setText(String)
        }
        if (entry.getSummary() != null) {
    //#RollerAtomHandler.java:1211: Warning: method not available
    //#    -- call on Content com.sun.syndication.feed.atom.Entry:getSummary()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Content com.sun.syndication.feed.atom.Entry:getSummary()
            rollerEntry.setSummary(entry.getSummary().getValue());
    //#RollerAtomHandler.java:1212: Warning: method not available
    //#    -- call on Content com.sun.syndication.feed.atom.Entry:getSummary()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Content com.sun.syndication.feed.atom.Entry:getSummary()
    //#RollerAtomHandler.java:1212: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.atom.Content:getValue()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: String com.sun.syndication.feed.atom.Content:getValue()
    //#RollerAtomHandler.java:1212: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setSummary(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setSummary(String)
        }
        rollerEntry.setPubTime(pubTime);
    //#RollerAtomHandler.java:1214: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime(Timestamp)
        rollerEntry.setUpdateTime(updateTime);
    //#RollerAtomHandler.java:1215: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
        
        AppModule control =
    //#RollerAtomHandler.java:1217: Warning: method not available
    //#    -- call on Module com.sun.syndication.feed.atom.Entry:getModule(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Module com.sun.syndication.feed.atom.Entry:getModule(String)
                (AppModule)entry.getModule(AppModule.URI);
        if (control!=null && control.getDraft()) {
            rollerEntry.setStatus(WeblogEntry.DRAFT);
    //#RollerAtomHandler.java:1220: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
        } else {
            rollerEntry.setStatus(WeblogEntry.PUBLISHED);
    //#RollerAtomHandler.java:1222: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
        }
                
        // Process incoming categories:
        // Atom categories with weblog-level scheme are Weblogger categories.
        // Atom supports multiple cats, but Weblogger supports one/entry
        // so here we take accept the first category that exists.
        List categories = entry.getCategories();
    //#RollerAtomHandler.java:1229: Warning: method not available
    //#    -- call on List com.sun.syndication.feed.atom.Entry:getCategories()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: List com.sun.syndication.feed.atom.Entry:getCategories()
        if (categories != null && categories.size() > 0) {
            for (int i=0; i<categories.size(); i++) {
                Category cat = (Category)categories.get(i);
                
                if (cat.getScheme() != null && cat.getScheme().equals(getWeblogCategoryScheme(rollerEntry.getWebsite()))) {                
    //#RollerAtomHandler.java:1234: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.atom.Category:getScheme()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: String com.sun.syndication.feed.atom.Category:getScheme()
    //#RollerAtomHandler.java:1234: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
                    String catString = cat.getTerm();
    //#RollerAtomHandler.java:1235: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.atom.Category:getTerm()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: String com.sun.syndication.feed.atom.Category:getTerm()
                    if (catString != null) {
                        WeblogCategory rollerCat =
    //#RollerAtomHandler.java:1237: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#RollerAtomHandler.java:1237: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#RollerAtomHandler.java:1237: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath(Weblog, String)
                                roller.getWeblogManager().getWeblogCategoryByPath(
                                rollerEntry.getWebsite(), catString);
                        if (rollerCat != null) {
                            // Found a valid category, so break out
                            rollerEntry.setCategory(rollerCat);
    //#RollerAtomHandler.java:1242: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
                            break;
                        }
                    }
                }
            }
        }
        if (rollerEntry.getCategory() == null) {
    //#RollerAtomHandler.java:1249: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.WeblogEntry:getCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.WeblogEntry:getCategory()
            // Didn't find a category? Fall back to the default Blogger API category.
            rollerEntry.setCategory(rollerEntry.getWebsite().getBloggerCategory());
    //#RollerAtomHandler.java:1251: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#RollerAtomHandler.java:1251: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#RollerAtomHandler.java:1251: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
        }
        
        // Now process incoming categories that are tags:
        // Atom categories with no scheme are considered tags.
        String tags = "";
        if (categories != null && categories.size() > 0) {
            for (int i=0; i<categories.size(); i++) {
                Category cat = (Category)categories.get(i);            
                if (cat.getScheme() == null) {
    //#RollerAtomHandler.java:1260: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.atom.Category:getScheme()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: String com.sun.syndication.feed.atom.Category:getScheme()
                    tags = tags + " " + cat.getTerm();
    //#RollerAtomHandler.java:1261: Warning: method not available
    //#    -- call on String com.sun.syndication.feed.atom.Category:getTerm()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: String com.sun.syndication.feed.atom.Category:getTerm()
                }                
            }
        }
        rollerEntry.setTagsAsString(tags);        
    //#RollerAtomHandler.java:1265: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setTagsAsString(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void copyToRollerEntry(Entry, WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setTagsAsString(String)
    }
    //#RollerAtomHandler.java:1266: end of method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.copyToRollerEntry(Entry, WeblogEntry)
        
    private String getWeblogCategoryScheme(Weblog website) {
        return WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogURL(website, null, true);
    //#RollerAtomHandler.java:1269: method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getWeblogCategoryScheme(Weblog)
    //#RollerAtomHandler.java:1269: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String getWeblogCategoryScheme(Weblog)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#RollerAtomHandler.java:1269: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String getWeblogCategoryScheme(Weblog)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#RollerAtomHandler.java:1269: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogURL(Weblog, String, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: String getWeblogCategoryScheme(Weblog)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogURL(Weblog, String, bool)
    //#input(String getWeblogCategoryScheme(Weblog)): website
    //#output(String getWeblogCategoryScheme(Weblog)): return_value
    //#presumption(String getWeblogCategoryScheme(Weblog)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@1269 != null
    //#presumption(String getWeblogCategoryScheme(Weblog)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@1269 != null
    //#post(String getWeblogCategoryScheme(Weblog)): init'ed(return_value)
    //#RollerAtomHandler.java:1269: end of method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.getWeblogCategoryScheme(Weblog)
    }
    

    private String filePathFromPathInfo(String[] pathInfo) {
        String path = null;
    //#RollerAtomHandler.java:1274: method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.filePathFromPathInfo(String[])
    //#input(String filePathFromPathInfo(String[])): java.io.File.separator
    //#input(String filePathFromPathInfo(String[])): java.io.File.separator._tainted
    //#input(String filePathFromPathInfo(String[])): pathInfo
    //#input(String filePathFromPathInfo(String[])): pathInfo.length
    //#input(String filePathFromPathInfo(String[])): pathInfo[2..4_294_967_295]
    //#input(String filePathFromPathInfo(String[])): pathInfo[2..4_294_967_295]._tainted
    //#output(String filePathFromPathInfo(String[])): java.lang.StringBuilder:toString(...)._tainted
    //#output(String filePathFromPathInfo(String[])): return_value
    //#new obj(String filePathFromPathInfo(String[])): java.lang.StringBuilder:toString(...)
    //#pre[1] (String filePathFromPathInfo(String[])): pathInfo != null
    //#pre[2] (String filePathFromPathInfo(String[])): pathInfo.length <= 4_294_967_295
    //#pre[3] (String filePathFromPathInfo(String[])): (soft) init'ed(pathInfo[2..4_294_967_295])
    //#presumption(String filePathFromPathInfo(String[])): init'ed(java.io.File.separator)
    //#post(String filePathFromPathInfo(String[])): init'ed(java.lang.StringBuilder:toString(...)._tainted)
    //#post(String filePathFromPathInfo(String[])): init'ed(return_value)
    //#test_vector(String filePathFromPathInfo(String[])): pathInfo.length: {2}, {3..4_294_967_295}
    //#test_vector(String filePathFromPathInfo(String[])): java.lang.String:length(...)@1277: {0}, {1..4_294_967_295}
        if (pathInfo.length > 2) {
            for (int i = 2; i < pathInfo.length; i++) {
                if (path != null && path.length() > 0)
                    path = path + File.separator + pathInfo[i];
                else
                    path = pathInfo[i];
            }
        } if (pathInfo.length == 2) {
            path = "";
        }
        return path;
    //#RollerAtomHandler.java:1285: end of method: String org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.filePathFromPathInfo(String[])
    }
    
    private void reindexEntry(WeblogEntry entry) throws WebloggerException {
        IndexManager manager = roller.getIndexManager();
    //#RollerAtomHandler.java:1289: method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.reindexEntry(WeblogEntry)
    //#RollerAtomHandler.java:1289: Warning: method not available
    //#    -- call on IndexManager org.apache.roller.weblogger.business.Weblogger:getIndexManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void reindexEntry(WeblogEntry)
    //#    unanalyzed callee: IndexManager org.apache.roller.weblogger.business.Weblogger:getIndexManager()
    //#input(void reindexEntry(WeblogEntry)): entry
    //#input(void reindexEntry(WeblogEntry)): this
    //#input(void reindexEntry(WeblogEntry)): this.roller
    //#pre[1] (void reindexEntry(WeblogEntry)): entry != null
    //#pre[3] (void reindexEntry(WeblogEntry)): this.roller != null
    //#presumption(void reindexEntry(WeblogEntry)): org.apache.roller.weblogger.business.Weblogger:getIndexManager(...)@1289 != null
    //#test_vector(void reindexEntry(WeblogEntry)): org.apache.roller.weblogger.pojos.WeblogEntry:isPublished(...)@1295: {0}, {1}
        
        // TODO: figure out what's up here and at WeblogEntryFormAction line 696
        //manager.removeEntryIndexOperation(entry);
        
        // if published, index the entry
        if (entry.isPublished()) {
    //#RollerAtomHandler.java:1295: Warning: method not available
    //#    -- call on bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void reindexEntry(WeblogEntry)
    //#    unanalyzed callee: bool org.apache.roller.weblogger.pojos.WeblogEntry:isPublished()
            manager.addEntryReIndexOperation(entry);
    //#RollerAtomHandler.java:1296: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.search.IndexManager:addEntryReIndexOperation(WeblogEntry)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
    //#    method: void reindexEntry(WeblogEntry)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.search.IndexManager:addEntryReIndexOperation(WeblogEntry)
        }
    }
    //#RollerAtomHandler.java:1298: end of method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.reindexEntry(WeblogEntry)
    
    private void oneSecondThrottle() {
        // Throttle one entry per second per weblog because time-
        // stamp in MySQL and other DBs has only 1 sec resolution
        try { 
            synchronized (getClass()) { 
    //#RollerAtomHandler.java:1304: method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.oneSecondThrottle()
    //#input(void oneSecondThrottle()): this
                Thread.sleep(1000); 
            }  
        } catch (Exception ignored) {} 
    }
    //#RollerAtomHandler.java:1308: end of method: void org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler.oneSecondThrottle()

}



    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1__static_init): __Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler$1]
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1__static_init): __Dispatch_Table.compare(Ljava/lang/Object;Ljava/lang/Object;)I
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1__static_init): __Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler$1] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1__static_init): __Dispatch_Table.compare(Ljava/lang/Object;Ljava/lang/Object;)I == &compare
    //#RollerAtomHandler.java:: end of method: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1.org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1__static_init
    //#RollerAtomHandler.java:: end of class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler$1
    //#RollerAtomHandler.java:: end of class: org.apache.roller.weblogger.webservices.atomprotocol.RollerAtomHandler
