//# 8 errors, 749 messages
//#
/*
    //#MetaWeblogAPIHandler.java:1:1: class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
 * 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.xmlrpc;

import java.io.ByteArrayInputStream;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.business.FileManager;
import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.WeblogManager;
import org.apache.roller.weblogger.pojos.User;
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.RollerMessages;
import org.apache.roller.weblogger.util.Utilities;
import org.apache.xmlrpc.XmlRpcException;


/**
 * Weblogger XML-RPC Handler for the MetaWeblog API.
 * 
 * MetaWeblog API spec can be found at http://www.xmlrpc.com/metaWeblogApi
 * 
 * @author David M Johnson
 */
public class MetaWeblogAPIHandler extends BloggerAPIHandler {
    
    static final long serialVersionUID = -1364456614935668629L;
    
    private static Log mLogger = LogFactory.getLog(MetaWeblogAPIHandler.class);
    //#MetaWeblogAPIHandler.java:57: method: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init
    //#MetaWeblogAPIHandler.java:57: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.createCategoryStruct(Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Ljava/util/Hashtable;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.createPostStruct(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/util/Hashtable;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.deletePost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Z
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.editPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Z
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.editPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;I)Z
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.editPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;Z)Z
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.flushPageCache(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getCategories(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getRecentPosts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/Object;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getRecentPosts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/Object;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getTemplate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getUserInfo(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getUsersBlogs(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.newMediaObject(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;)Ljava/lang/Object;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.newPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.newPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;I)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.newPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;Z)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.setTemplate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.validateUser(Ljava/lang/String;Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): mLogger
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.__Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#output(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.__Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.__Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.__Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.createCategoryStruct(Lorg/apache/roller/weblogger/pojos/WeblogCategory;Ljava/lang/String;)Ljava/util/Hashtable; == &createCategoryStruct
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.createPostStruct(Lorg/apache/roller/weblogger/pojos/WeblogEntry;Ljava/lang/String;)Ljava/util/Hashtable; == &createPostStruct
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.deletePost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Z == &org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.deletePost
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.editPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Z == &org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.editPost
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.editPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;I)Z == &editPost
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.editPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;Z)Z == &editPost
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.flushPageCache(Lorg/apache/roller/weblogger/pojos/Weblog;)V == &org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.flushPageCache
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getCategories(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; == &getCategories
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; == &getPost
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getRecentPosts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/Object; == &getRecentPosts
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getRecentPosts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/Object; == &org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.getRecentPosts
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getTemplate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; == &org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.getTemplate
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getUserInfo(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; == &org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.getUserInfo
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.getUsersBlogs(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; == &org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.getUsersBlogs
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.newMediaObject(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;)Ljava/lang/Object; == &newMediaObject
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.newPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; == &org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.newPost
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.newPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;I)Ljava/lang/String; == &newPost
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.newPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;Z)Ljava/lang/String; == &newPost
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.setTemplate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z == &org/apache/roller/weblogger/webservices/xmlrpc/BloggerAPIHandler.setTemplate
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog; == &org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.validate
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): __Dispatch_Table.validateUser(Ljava/lang/String;Ljava/lang/String;)Z == &org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.validateUser
    //#post(org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init): init'ed(mLogger)
    //#MetaWeblogAPIHandler.java:57: end of method: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler__static_init
    
    public MetaWeblogAPIHandler() {
        super();
    //#MetaWeblogAPIHandler.java:60: method: void org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler()
    //#input(void org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler()): this
    //#unanalyzed(void org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler()): Effects-of-calling:org.apache.roller.weblogger.webservices.xmlrpc.BaseAPIHandler
    }
    //#MetaWeblogAPIHandler.java:61: end of method: void org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler()
    
    
    /**
     * Authenticates a user and returns the categories available in the website
     * 
     * @param blogid Dummy Value for Weblogger
     * @param userid Login for a MetaWeblog user who has permission to post to the blog
     * @param password Password for said username
     * @return 
     * @throws Exception
     */
    public Object getCategories(String blogid, String userid, String password)
    throws Exception {
        
        mLogger.debug("getCategories() Called =====[ SUPPORTED ]=====");
    //#MetaWeblogAPIHandler.java:76: method: Object org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.getCategories(String, String, String)
    //#MetaWeblogAPIHandler.java:76: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getCategories(String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Object getCategories(String, String, String)): "     BlogId: "._tainted
    //#input(Object getCategories(String, String, String)): "     UserId: "._tainted
    //#input(Object getCategories(String, String, String)): ".page."._tainted
    //#input(Object getCategories(String, String, String)): ".rss."._tainted
    //#input(Object getCategories(String, String, String)): "?catname="._tainted
    //#input(Object getCategories(String, String, String)): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#input(Object getCategories(String, String, String)): __Descendant_Table[others]
    //#input(Object getCategories(String, String, String)): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(Object getCategories(String, String, String)): blogid
    //#input(Object getCategories(String, String, String)): blogid._tainted
    //#input(Object getCategories(String, String, String)): mLogger
    //#input(Object getCategories(String, String, String)): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger
    //#input(Object getCategories(String, String, String)): password
    //#input(Object getCategories(String, String, String)): this
    //#input(Object getCategories(String, String, String)): this.__Tag
    //#input(Object getCategories(String, String, String)): userid
    //#input(Object getCategories(String, String, String)): userid._tainted
    //#output(Object getCategories(String, String, String)): new Hashtable(getCategories#3) num objects
    //#output(Object getCategories(String, String, String)): return_value
    //#new obj(Object getCategories(String, String, String)): new Hashtable(getCategories#3)
    //#pre[3] (Object getCategories(String, String, String)): mLogger != null
    //#pre[7] (Object getCategories(String, String, String)): this.__Tag == org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler
    //#pre[4] (Object getCategories(String, String, String)): (soft) org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger != null
    //#pre[5] (Object getCategories(String, String, String)): (soft) password != null
    //#presumption(Object getCategories(String, String, String)): java.util.Iterator:next(...)@87 != null
    //#presumption(Object getCategories(String, String, String)): org.apache.roller.weblogger.business.WeblogManager:getWeblogCategories(...)@85 != null
    //#presumption(Object getCategories(String, String, String)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@84 != null
    //#presumption(Object getCategories(String, String, String)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@81 != null
    //#post(Object getCategories(String, String, String)): return_value == &new Hashtable(getCategories#3)
    //#post(Object getCategories(String, String, String)): new Hashtable(getCategories#3) num objects == 1
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:java.util.Hashtable
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:java.util.Hashtable:put
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.commons.lang.StringUtils:replace
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getUserByUserName
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getProperty
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:encodePassword
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPassword
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Object getCategories(String, String, String)): Effects-of-calling:org.apache.xmlrpc.XmlRpcException
    //#test_vector(Object getCategories(String, String, String)): java.util.Iterator:hasNext(...)@86: {0}, {1}
        mLogger.debug("     BlogId: " + blogid);
    //#MetaWeblogAPIHandler.java:77: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getCategories(String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("     UserId: " + userid);
    //#MetaWeblogAPIHandler.java:78: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getCategories(String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        Weblog website = validate(blogid, userid,password);
        Weblogger roller = WebloggerFactory.getWeblogger();
    //#MetaWeblogAPIHandler.java:81: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getCategories(String, String, String)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
        try {
            Hashtable result = new Hashtable();
            WeblogManager weblogMgr = roller.getWeblogManager();
    //#MetaWeblogAPIHandler.java:84: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getCategories(String, String, String)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
            List cats = weblogMgr.getWeblogCategories(website, false);
    //#MetaWeblogAPIHandler.java:85: Warning: method not available
    //#    -- call on List org.apache.roller.weblogger.business.WeblogManager:getWeblogCategories(Weblog, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getCategories(String, String, String)
    //#    unanalyzed callee: List org.apache.roller.weblogger.business.WeblogManager:getWeblogCategories(Weblog, bool)
            for (Iterator wbcItr = cats.iterator(); wbcItr.hasNext();) {
                WeblogCategory category = (WeblogCategory) wbcItr.next();
                result.put(category.getPath(),
    //#MetaWeblogAPIHandler.java:88: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getCategories(String, String, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
                        createCategoryStruct(category, userid));
            }
            return result;
        } catch (Exception e) {
            String msg = "ERROR in MetaWeblogAPIHandler.getCategories";
            mLogger.error(msg,e);
            throw new XmlRpcException(UNKNOWN_EXCEPTION, msg);
    //#MetaWeblogAPIHandler.java:95: end of method: Object org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.getCategories(String, String, String)
        }
    }
    
    
    /**
     * Edits a given post. Optionally, will publish the blog after making the edit
     *
     * @param postid Unique identifier of the post to be changed
     * @param userid Login for a MetaWeblog user who has permission to post to the blog
     * @param password Password for said username
     * @param struct Contents of the post
     * @param publish If true, the blog will be published immediately after the post is made
     * @throws org.apache.xmlrpc.XmlRpcException
     * @return
     */
    public boolean editPost(String postid, String userid, String password,
            Hashtable struct, int publish) throws Exception {
        
        return editPost(postid, userid, password, struct, publish > 0);
    //#MetaWeblogAPIHandler.java:114: method: bool org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.editPost(String, String, String, Hashtable, int)
    //#input(bool editPost(String, String, String, Hashtable, int)): "      Title: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, int)): "     PostId: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, int)): "     UserId: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, int)): "    Publish: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, int)): "   Category: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, int)): ""._tainted
    //#input(bool editPost(String, String, String, Hashtable, int)): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#input(bool editPost(String, String, String, Hashtable, int)): __Descendant_Table[others]
    //#input(bool editPost(String, String, String, Hashtable, int)): __Dispatch_Table.editPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;Z)Z
    //#input(bool editPost(String, String, String, Hashtable, int)): __Dispatch_Table.flushPageCache(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(bool editPost(String, String, String, Hashtable, int)): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(bool editPost(String, String, String, Hashtable, int)): mLogger
    //#input(bool editPost(String, String, String, Hashtable, int)): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger
    //#input(bool editPost(String, String, String, Hashtable, int)): password
    //#input(bool editPost(String, String, String, Hashtable, int)): postid
    //#input(bool editPost(String, String, String, Hashtable, int)): postid._tainted
    //#input(bool editPost(String, String, String, Hashtable, int)): publish
    //#input(bool editPost(String, String, String, Hashtable, int)): struct
    //#input(bool editPost(String, String, String, Hashtable, int)): this
    //#input(bool editPost(String, String, String, Hashtable, int)): this.__Tag
    //#input(bool editPost(String, String, String, Hashtable, int)): userid
    //#input(bool editPost(String, String, String, Hashtable, int)): userid._tainted
    //#output(bool editPost(String, String, String, Hashtable, int)): return_value
    //#pre[1] (bool editPost(String, String, String, Hashtable, int)): mLogger != null
    //#pre[7] (bool editPost(String, String, String, Hashtable, int)): struct != null
    //#pre[9] (bool editPost(String, String, String, Hashtable, int)): this.__Tag == org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler
    //#pre[2] (bool editPost(String, String, String, Hashtable, int)): (soft) org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger != null
    //#pre[3] (bool editPost(String, String, String, Hashtable, int)): (soft) password != null
    //#post(bool editPost(String, String, String, Hashtable, int)): return_value == 1
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:validate
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getWeblogManager
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.xmlrpc.XmlRpcException
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getHandle
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.util.Hashtable:get
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.System:currentTimeMillis
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setTitle
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setText
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Boolean:valueOf
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setStatus
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setCategory
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:flush
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:flushPageCache
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Thread:sleep
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getUserByUserName
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getProperty
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:encodePassword
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPassword
    //#unanalyzed(bool editPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.util.cache.CacheManager:invalidate
    //#MetaWeblogAPIHandler.java:114: end of method: bool org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.editPost(String, String, String, Hashtable, int)
    }
    
    
    public boolean editPost(String postid, String userid, String password,
            Hashtable struct, boolean publish) throws Exception {
        
        mLogger.debug("editPost() Called ========[ SUPPORTED ]=====");
    //#MetaWeblogAPIHandler.java:121: method: bool org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.editPost(String, String, String, Hashtable, bool)
    //#MetaWeblogAPIHandler.java:121: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(bool editPost(String, String, String, Hashtable, bool)): "      Title: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, bool)): "     PostId: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, bool)): "     UserId: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, bool)): "    Publish: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, bool)): "   Category: "._tainted
    //#input(bool editPost(String, String, String, Hashtable, bool)): ""._tainted
    //#input(bool editPost(String, String, String, Hashtable, bool)): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#input(bool editPost(String, String, String, Hashtable, bool)): __Descendant_Table[others]
    //#input(bool editPost(String, String, String, Hashtable, bool)): __Dispatch_Table.flushPageCache(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(bool editPost(String, String, String, Hashtable, bool)): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(bool editPost(String, String, String, Hashtable, bool)): mLogger
    //#input(bool editPost(String, String, String, Hashtable, bool)): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger
    //#input(bool editPost(String, String, String, Hashtable, bool)): password
    //#input(bool editPost(String, String, String, Hashtable, bool)): postid
    //#input(bool editPost(String, String, String, Hashtable, bool)): postid._tainted
    //#input(bool editPost(String, String, String, Hashtable, bool)): publish
    //#input(bool editPost(String, String, String, Hashtable, bool)): struct
    //#input(bool editPost(String, String, String, Hashtable, bool)): this
    //#input(bool editPost(String, String, String, Hashtable, bool)): this.__Tag
    //#input(bool editPost(String, String, String, Hashtable, bool)): userid
    //#input(bool editPost(String, String, String, Hashtable, bool)): userid._tainted
    //#output(bool editPost(String, String, String, Hashtable, bool)): return_value
    //#pre[1] (bool editPost(String, String, String, Hashtable, bool)): mLogger != null
    //#pre[7] (bool editPost(String, String, String, Hashtable, bool)): struct != null
    //#pre[9] (bool editPost(String, String, String, Hashtable, bool)): this.__Tag == org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler
    //#pre[2] (bool editPost(String, String, String, Hashtable, bool)): (soft) org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger != null
    //#pre[3] (bool editPost(String, String, String, Hashtable, bool)): (soft) password != null
    //#presumption(bool editPost(String, String, String, Hashtable, bool)): cats.length@142 >= 1
    //#presumption(bool editPost(String, String, String, Hashtable, bool)): java.lang.Boolean:valueOf(...)@156 != null
    //#presumption(bool editPost(String, String, String, Hashtable, bool)): java.util.Hashtable:get(...)@142 != null
    //#presumption(bool editPost(String, String, String, Hashtable, bool)): org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(...)@128 != null
    //#presumption(bool editPost(String, String, String, Hashtable, bool)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@127 != null
    //#presumption(bool editPost(String, String, String, Hashtable, bool)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@126 != null
    //#presumption(bool editPost(String, String, String, Hashtable, bool)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@130 != null
    //#post(bool editPost(String, String, String, Hashtable, bool)): return_value == 1
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getUserByUserName
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getProperty
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:encodePassword
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPassword
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.xmlrpc.XmlRpcException
    //#unanalyzed(bool editPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.util.cache.CacheManager:invalidate
    //#test_vector(bool editPost(String, String, String, Hashtable, bool)): java.lang.Boolean:booleanValue(...)@156: {0}, {1}
    //#test_vector(bool editPost(String, String, String, Hashtable, bool)): java.lang.String:equals(...)@153: {1}, {0}
    //#test_vector(bool editPost(String, String, String, Hashtable, bool)): java.util.Hashtable:get(...)@134: Inverse{null}, Addr_Set{null}
    //#test_vector(bool editPost(String, String, String, Hashtable, bool)): java.util.Hashtable:get(...)@137: Inverse{null}, Addr_Set{null}
    //#test_vector(bool editPost(String, String, String, Hashtable, bool)): java.util.Hashtable:get(...)@141: Addr_Set{null}, Inverse{null}
        mLogger.debug("     PostId: " + postid);
    //#MetaWeblogAPIHandler.java:122: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("     UserId: " + userid);
    //#MetaWeblogAPIHandler.java:123: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("    Publish: " + publish);
    //#MetaWeblogAPIHandler.java:124: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        Weblogger roller = WebloggerFactory.getWeblogger();
    //#MetaWeblogAPIHandler.java:126: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
        WeblogManager weblogMgr = roller.getWeblogManager();
    //#MetaWeblogAPIHandler.java:127: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
        WeblogEntry entry = weblogMgr.getWeblogEntry(postid);
    //#MetaWeblogAPIHandler.java:128: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
        
        validate(entry.getWebsite().getHandle(), userid,password);
    //#MetaWeblogAPIHandler.java:130: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#MetaWeblogAPIHandler.java:130: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        
        Hashtable postcontent = struct;
        String description = (String)postcontent.get("description");
        String title = (String)postcontent.get("title");
        if (title == null) title = "";
        
        Date dateCreated = (Date)postcontent.get("dateCreated");
        if (dateCreated == null) dateCreated = (Date)postcontent.get("pubDate");
        
        String cat = null;
        if ( postcontent.get("categories") != null ) {
            Object[] cats = (Object[])postcontent.get("categories");
            cat = (String)cats[0];
    //#MetaWeblogAPIHandler.java:143: ?use of default init
    //#    init'ed(cats[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    basic block: bb_6
    //#    assertion: init'ed(cats[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
        }
        mLogger.debug("      Title: " + title);
    //#MetaWeblogAPIHandler.java:145: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("   Category: " + cat);
    //#MetaWeblogAPIHandler.java:146: ?use of default init
    //#    init'ed(cat)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    basic block: bb_7
    //#    assertion: init'ed(cat)
    //#    VN: cat
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#MetaWeblogAPIHandler.java:146: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        try {
            
            Timestamp current =
                    new Timestamp(System.currentTimeMillis());
            
            if ( !title.equals("") ) entry.setTitle(title);
    //#MetaWeblogAPIHandler.java:153: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setTitle(String)
            entry.setText(description);
    //#MetaWeblogAPIHandler.java:154: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setText(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setText(String)
            entry.setUpdateTime(current);
    //#MetaWeblogAPIHandler.java:155: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
            if (Boolean.valueOf(publish).booleanValue()) {
                entry.setStatus(WeblogEntry.PUBLISHED);
    //#MetaWeblogAPIHandler.java:157: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
            } else {
                entry.setStatus(WeblogEntry.DRAFT);
    //#MetaWeblogAPIHandler.java:159: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
            }
            if (dateCreated != null) {
                entry.setPubTime(new Timestamp(dateCreated.getTime()));
    //#MetaWeblogAPIHandler.java:162: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime(Timestamp)
            }
            
            if ( cat != null ) {
    //#MetaWeblogAPIHandler.java:165: Warning: test always goes same way
    //#    test predetermined because cat == null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    from bb: bb_15
    //#    live edge: bb_15-->bb_17
    //#    tested vn: cat == null
    //#    tested vn values: {1}
                // Use first category specified by request
                WeblogCategory cd =
    //#MetaWeblogAPIHandler.java:167: Warning: dead code
    //#    dead code here because cat == null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    dead bb: bb_16
                        weblogMgr.getWeblogCategoryByPath(entry.getWebsite(), cat);
                entry.setCategory(cd);
            }
            
            // save the entry
            weblogMgr.saveWeblogEntry(entry);
    //#MetaWeblogAPIHandler.java:173: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry(WeblogEntry)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry(WeblogEntry)
            roller.flush();
    //#MetaWeblogAPIHandler.java:174: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.Weblogger:flush()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.Weblogger:flush()
            
            // notify cache
            flushPageCache(entry.getWebsite());
    //#MetaWeblogAPIHandler.java:177: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: bool editPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
            
            // TODO: Weblogger timestamps need better than 1 second accuracy
            // Until then, we can't allow more than one post per second
            Thread.sleep(1000);
            
            return true;
        } catch (Exception e) {
            String msg = "ERROR in MetaWeblogAPIHandler.editPost";
            mLogger.error(msg,e);
            throw new XmlRpcException(UNKNOWN_EXCEPTION, msg);
    //#MetaWeblogAPIHandler.java:187: end of method: bool org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.editPost(String, String, String, Hashtable, bool)
        }
    }
    
    
    /**
     * Makes a new post to a designated blog. Optionally, will publish the blog after making the post
     *
     * @param blogid Unique identifier of the blog the post will be added to
     * @param userid Login for a MetaWeblog user who has permission to post to the blog
     * @param password Password for said username
     * @param struct Contents of the post
     * @param publish If true, the blog will be published immediately after the post is made
     * @throws org.apache.xmlrpc.XmlRpcException
     * @return
     */
    public String newPost(String blogid, String userid, String password,
            Hashtable struct, int publish) throws Exception {
        
        return newPost(blogid, userid, password, struct, publish > 0);
    //#MetaWeblogAPIHandler.java:206: method: String org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.newPost(String, String, String, Hashtable, int)
    //#input(String newPost(String, String, String, Hashtable, int)): "      Title: "._tainted
    //#input(String newPost(String, String, String, Hashtable, int)): "     BlogId: "._tainted
    //#input(String newPost(String, String, String, Hashtable, int)): "     UserId: "._tainted
    //#input(String newPost(String, String, String, Hashtable, int)): "    Publish: "._tainted
    //#input(String newPost(String, String, String, Hashtable, int)): "cat to string - "._tainted
    //#input(String newPost(String, String, String, Hashtable, int)): "cats type - "._tainted
    //#input(String newPost(String, String, String, Hashtable, int)): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#input(String newPost(String, String, String, Hashtable, int)): __Descendant_Table[others]
    //#input(String newPost(String, String, String, Hashtable, int)): __Dispatch_Table.flushPageCache(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(String newPost(String, String, String, Hashtable, int)): __Dispatch_Table.newPost(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Hashtable;Z)Ljava/lang/String;
    //#input(String newPost(String, String, String, Hashtable, int)): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(String newPost(String, String, String, Hashtable, int)): blogid
    //#input(String newPost(String, String, String, Hashtable, int)): blogid._tainted
    //#input(String newPost(String, String, String, Hashtable, int)): mLogger
    //#input(String newPost(String, String, String, Hashtable, int)): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger
    //#input(String newPost(String, String, String, Hashtable, int)): password
    //#input(String newPost(String, String, String, Hashtable, int)): publish
    //#input(String newPost(String, String, String, Hashtable, int)): struct
    //#input(String newPost(String, String, String, Hashtable, int)): this
    //#input(String newPost(String, String, String, Hashtable, int)): this.__Tag
    //#input(String newPost(String, String, String, Hashtable, int)): userid
    //#input(String newPost(String, String, String, Hashtable, int)): userid._tainted
    //#output(String newPost(String, String, String, Hashtable, int)): return_value
    //#pre[3] (String newPost(String, String, String, Hashtable, int)): mLogger != null
    //#pre[7] (String newPost(String, String, String, Hashtable, int)): struct != null
    //#pre[9] (String newPost(String, String, String, Hashtable, int)): this.__Tag == org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler
    //#pre[4] (String newPost(String, String, String, Hashtable, int)): (soft) org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger != null
    //#pre[5] (String newPost(String, String, String, Hashtable, int)): (soft) password != null
    //#post(String newPost(String, String, String, Hashtable, int)): init'ed(return_value)
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:validate
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getWeblogManager
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.xmlrpc.XmlRpcException
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.util.Hashtable:get
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.System:currentTimeMillis
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.sql.Timestamp
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setTitle
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setText
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Boolean:valueOf
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setStatus
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setCategory
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:flush
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:flushPageCache
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Thread:sleep
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.commons.lang.StringUtils:isEmpty
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:truncateNicely
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.util.Date
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getUserByUserName
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getLocale
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setLocale
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setWebsite
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setCreator
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getDefaultCommentDays
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Integer
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setCommentDays
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getDefaultAllowComments
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setAllowComments
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getDefaultPlugins
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:setPlugins
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Object:getClass
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Class:getName
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.Object:toString
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getProperty
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:encodePassword
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPassword
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(String newPost(String, String, String, Hashtable, int)): Effects-of-calling:org.apache.roller.weblogger.util.cache.CacheManager:invalidate
    //#MetaWeblogAPIHandler.java:206: end of method: String org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.newPost(String, String, String, Hashtable, int)
    }
    
    
    public String newPost(String blogid, String userid, String password,
            Hashtable struct, boolean publish) throws Exception {
        
        mLogger.debug("newPost() Called ===========[ SUPPORTED ]=====");
    //#MetaWeblogAPIHandler.java:213: method: String org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.newPost(String, String, String, Hashtable, bool)
    //#MetaWeblogAPIHandler.java:213: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(String newPost(String, String, String, Hashtable, bool)): "      Title: "._tainted
    //#input(String newPost(String, String, String, Hashtable, bool)): "     BlogId: "._tainted
    //#input(String newPost(String, String, String, Hashtable, bool)): "     UserId: "._tainted
    //#input(String newPost(String, String, String, Hashtable, bool)): "    Publish: "._tainted
    //#input(String newPost(String, String, String, Hashtable, bool)): "cat to string - "._tainted
    //#input(String newPost(String, String, String, Hashtable, bool)): "cats type - "._tainted
    //#input(String newPost(String, String, String, Hashtable, bool)): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#input(String newPost(String, String, String, Hashtable, bool)): __Descendant_Table[others]
    //#input(String newPost(String, String, String, Hashtable, bool)): __Dispatch_Table.flushPageCache(Lorg/apache/roller/weblogger/pojos/Weblog;)V
    //#input(String newPost(String, String, String, Hashtable, bool)): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(String newPost(String, String, String, Hashtable, bool)): blogid
    //#input(String newPost(String, String, String, Hashtable, bool)): blogid._tainted
    //#input(String newPost(String, String, String, Hashtable, bool)): mLogger
    //#input(String newPost(String, String, String, Hashtable, bool)): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger
    //#input(String newPost(String, String, String, Hashtable, bool)): password
    //#input(String newPost(String, String, String, Hashtable, bool)): publish
    //#input(String newPost(String, String, String, Hashtable, bool)): struct
    //#input(String newPost(String, String, String, Hashtable, bool)): this
    //#input(String newPost(String, String, String, Hashtable, bool)): this.__Tag
    //#input(String newPost(String, String, String, Hashtable, bool)): userid
    //#input(String newPost(String, String, String, Hashtable, bool)): userid._tainted
    //#output(String newPost(String, String, String, Hashtable, bool)): return_value
    //#pre[3] (String newPost(String, String, String, Hashtable, bool)): mLogger != null
    //#pre[7] (String newPost(String, String, String, Hashtable, bool)): struct != null
    //#pre[9] (String newPost(String, String, String, Hashtable, bool)): this.__Tag == org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler
    //#pre[4] (String newPost(String, String, String, Hashtable, bool)): (soft) org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger != null
    //#pre[5] (String newPost(String, String, String, Hashtable, bool)): (soft) password != null
    //#presumption(String newPost(String, String, String, Hashtable, bool)): cats.length@268 <= 4_294_967_295
    //#presumption(String newPost(String, String, String, Hashtable, bool)): java.lang.Boolean:valueOf(...)@258 != null
    //#presumption(String newPost(String, String, String, Hashtable, bool)): java.lang.Object:getClass(...)@270 != null
    //#presumption(String newPost(String, String, String, Hashtable, bool)): org.apache.commons.lang.StringUtils:isEmpty(...)@223 == 0
    //#presumption(String newPost(String, String, String, Hashtable, bool)): org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@239 != null
    //#presumption(String newPost(String, String, String, Hashtable, bool)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@238 != null
    //#presumption(String newPost(String, String, String, Hashtable, bool)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@237 != null
    //#post(String newPost(String, String, String, Hashtable, bool)): init'ed(return_value)
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getUserByUserName
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getProperty
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:encodePassword
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPassword
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.xmlrpc.XmlRpcException
    //#unanalyzed(String newPost(String, String, String, Hashtable, bool)): Effects-of-calling:org.apache.roller.weblogger.util.cache.CacheManager:invalidate
    //#test_vector(String newPost(String, String, String, Hashtable, bool)): cats.length@268: {0}, {1..4_294_967_295}
    //#test_vector(String newPost(String, String, String, Hashtable, bool)): java.lang.Boolean:booleanValue(...)@258: {0}, {1}
    //#test_vector(String newPost(String, String, String, Hashtable, bool)): java.util.Hashtable:get(...)@231: Inverse{null}, Addr_Set{null}
    //#test_vector(String newPost(String, String, String, Hashtable, bool)): java.util.Hashtable:get(...)@267: Addr_Set{null}, Inverse{null}
    //#test_vector(String newPost(String, String, String, Hashtable, bool)): java.util.Hashtable:get(...)@268: Addr_Set{null}, Inverse{null}
    //#test_vector(String newPost(String, String, String, Hashtable, bool)): org.apache.commons.lang.StringUtils:isEmpty(...)@223: {0}, {1}
    //#test_vector(String newPost(String, String, String, Hashtable, bool)): org.apache.commons.lang.StringUtils:isEmpty(...)@227: {0}, {1}
    //#test_vector(String newPost(String, String, String, Hashtable, bool)): org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath(...)@274: Addr_Set{null}, Inverse{null}
    //#test_vector(String newPost(String, String, String, Hashtable, bool)): org.apache.roller.weblogger.pojos.Weblog:getDefaultPlugins(...)@254: Addr_Set{null}, Inverse{null}
        mLogger.debug("     BlogId: " + blogid);
    //#MetaWeblogAPIHandler.java:214: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("     UserId: " + userid);
    //#MetaWeblogAPIHandler.java:215: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("    Publish: " + publish);
    //#MetaWeblogAPIHandler.java:216: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        Weblog website = validate(blogid, userid, password);
        
        Hashtable postcontent = struct;
        String description = (String)postcontent.get("description");
        String title = (String)postcontent.get("title");
        if (StringUtils.isEmpty(title) && StringUtils.isEmpty(description)) {
    //#MetaWeblogAPIHandler.java:223: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
            throw new XmlRpcException(
    //#MetaWeblogAPIHandler.java:224: Warning: method not available
    //#    -- call on void org.apache.xmlrpc.XmlRpcException(int, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.xmlrpc.XmlRpcException(int, String)
                    BLOGGERAPI_INCOMPLETE_POST, "Must specify title or description");
        }
        if (StringUtils.isEmpty(title)) {
    //#MetaWeblogAPIHandler.java:227: Warning: method not available
    //#    -- call on bool org.apache.commons.lang.StringUtils:isEmpty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: bool org.apache.commons.lang.StringUtils:isEmpty(String)
            title = Utilities.truncateNicely(description, 15, 15, "...");
    //#MetaWeblogAPIHandler.java:228: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.Utilities:truncateNicely(String, int, int, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.Utilities:truncateNicely(String, int, int, String)
        }
        
        Date dateCreated = (Date)postcontent.get("dateCreated");
        if (dateCreated == null) dateCreated = (Date)postcontent.get("pubDate");
        if (dateCreated == null) dateCreated = new Date();
        mLogger.debug("      Title: " + title);
    //#MetaWeblogAPIHandler.java:234: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        try {
            Weblogger roller = WebloggerFactory.getWeblogger();
    //#MetaWeblogAPIHandler.java:237: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
            WeblogManager weblogMgr = roller.getWeblogManager();
    //#MetaWeblogAPIHandler.java:238: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
            User user = roller.getUserManager().getUserByUserName(userid);
    //#MetaWeblogAPIHandler.java:239: Warning: method not available
    //#    -- call on UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: UserManager org.apache.roller.weblogger.business.Weblogger:getUserManager()
    //#MetaWeblogAPIHandler.java:239: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.business.UserManager:getUserByUserName(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: User org.apache.roller.weblogger.business.UserManager:getUserByUserName(String)
            Timestamp current = new Timestamp(System.currentTimeMillis());
            
            WeblogEntry entry = new WeblogEntry();
    //#MetaWeblogAPIHandler.java:242: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry()
            entry.setTitle(title);
    //#MetaWeblogAPIHandler.java:243: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setTitle(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setTitle(String)
            entry.setText(description);
    //#MetaWeblogAPIHandler.java:244: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setText(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setText(String)
            entry.setLocale(website.getLocale());
    //#MetaWeblogAPIHandler.java:245: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getLocale()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getLocale()
    //#MetaWeblogAPIHandler.java:245: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setLocale(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setLocale(String)
            entry.setPubTime(new Timestamp(dateCreated.getTime()));
    //#MetaWeblogAPIHandler.java:246: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setPubTime(Timestamp)
            entry.setUpdateTime(current);
    //#MetaWeblogAPIHandler.java:247: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setUpdateTime(Timestamp)
            entry.setWebsite(website);
    //#MetaWeblogAPIHandler.java:248: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setWebsite(Weblog)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setWebsite(Weblog)
            entry.setCreator(user);
    //#MetaWeblogAPIHandler.java:249: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setCreator(User)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setCreator(User)
            entry.setCommentDays(new Integer(website.getDefaultCommentDays()));
    //#MetaWeblogAPIHandler.java:250: Warning: method not available
    //#    -- call on int org.apache.roller.weblogger.pojos.Weblog:getDefaultCommentDays()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: int org.apache.roller.weblogger.pojos.Weblog:getDefaultCommentDays()
    //#MetaWeblogAPIHandler.java:250: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setCommentDays(Integer)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setCommentDays(Integer)
            entry.setAllowComments(website.getDefaultAllowComments());
    //#MetaWeblogAPIHandler.java:251: Warning: method not available
    //#    -- call on Boolean org.apache.roller.weblogger.pojos.Weblog:getDefaultAllowComments()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: Boolean org.apache.roller.weblogger.pojos.Weblog:getDefaultAllowComments()
    //#MetaWeblogAPIHandler.java:251: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setAllowComments(Boolean)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setAllowComments(Boolean)
        
            // apply weblog default plugins
            if (website.getDefaultPlugins() != null) {
    //#MetaWeblogAPIHandler.java:254: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getDefaultPlugins()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getDefaultPlugins()
                entry.setPlugins(website.getDefaultPlugins());
    //#MetaWeblogAPIHandler.java:255: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getDefaultPlugins()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getDefaultPlugins()
    //#MetaWeblogAPIHandler.java:255: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setPlugins(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setPlugins(String)
            }
            
            if (Boolean.valueOf(publish).booleanValue()) {
                entry.setStatus(WeblogEntry.PUBLISHED);
    //#MetaWeblogAPIHandler.java:259: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
            } else {
                entry.setStatus(WeblogEntry.DRAFT);
    //#MetaWeblogAPIHandler.java:261: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setStatus(String)
            }
            
            // MetaWeblog supports multiple cats, Weblogger supports one/entry
            // so here we take accept the first category that exists
            WeblogCategory rollerCat = null;
            if ( postcontent.get("categories") != null ) {
                Object[] cats = (Object[])postcontent.get("categories");
                if (cats != null && cats.length > 0) {
                    mLogger.debug("cats type - "+cats[0].getClass().getName());
    //#MetaWeblogAPIHandler.java:270: ?use of default init
    //#    init'ed(cats[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    basic block: bb_19
    //#    assertion: init'ed(cats[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#MetaWeblogAPIHandler.java:270: ?null dereference
    //#    not_init'ed(cats[0])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    basic block: bb_19
    //#    assertion: not_init'ed(cats[0])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#MetaWeblogAPIHandler.java:270: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    mLogger.debug("cat to string - "+cats[0].toString());
    //#MetaWeblogAPIHandler.java:271: ?use of default init
    //#    init'ed(cats[0])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    basic block: bb_19
    //#    assertion: init'ed(cats[0])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#MetaWeblogAPIHandler.java:271: ?null dereference
    //#    not_init'ed(cats[0])
    //#    severity: MEDIUM
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    basic block: bb_19
    //#    assertion: not_init'ed(cats[0])
    //#    VN: undefined
    //#    Expected: Inverse{null} or Invalid
    //#    Bad: Addr_Set{null}
    //#    Attribs:  Ptr  null in Bad
    //#MetaWeblogAPIHandler.java:271: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                    for (int i=0; i<cats.length; i++) {
                        Object cat = cats[i];
    //#MetaWeblogAPIHandler.java:273: ?use of default init
    //#    init'ed(cats[i])
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    basic block: bb_21
    //#    assertion: init'ed(cats[i])
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
                        rollerCat = weblogMgr.getWeblogCategoryByPath(website, (String)cat);
    //#MetaWeblogAPIHandler.java:274: ?use of default init
    //#    init'ed(cat)
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    basic block: bb_21
    //#    assertion: init'ed(cat)
    //#    VN: undefined
    //#    Expected: Univ-VN-Set
    //#    Bad: {Invalid}
    //#    Attribs:  Ptr  Bad only invalid
    //#MetaWeblogAPIHandler.java:274: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath(Weblog, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.business.WeblogManager:getWeblogCategoryByPath(Weblog, String)
                        if (rollerCat != null) {
                            entry.setCategory(rollerCat);
    //#MetaWeblogAPIHandler.java:276: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
                            break;
                        }
                    }
                }
            }
            if (rollerCat == null) {
                // or we fall back to the default Blogger API category
                entry.setCategory(website.getBloggerCategory());
    //#MetaWeblogAPIHandler.java:284: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.Weblog:getBloggerCategory()
    //#MetaWeblogAPIHandler.java:284: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.pojos.WeblogEntry:setCategory(WeblogCategory)
            }
            
            // save the entry
            weblogMgr.saveWeblogEntry(entry);
    //#MetaWeblogAPIHandler.java:288: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry(WeblogEntry)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.WeblogManager:saveWeblogEntry(WeblogEntry)
            roller.flush();
    //#MetaWeblogAPIHandler.java:289: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.business.Weblogger:flush()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.Weblogger:flush()
            
            // notify cache
            flushPageCache(entry.getWebsite());
    //#MetaWeblogAPIHandler.java:292: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
            
            // TODO: Weblogger timestamps need better than 1 second accuracy
            // Until then, we can't allow more than one post per second
            Thread.sleep(1000);
            
            return entry.getId();
    //#MetaWeblogAPIHandler.java:298: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: String newPost(String, String, String, Hashtable, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
        } catch (Exception e) {
            String msg = "ERROR in MetaWeblogAPIHandler.newPost";
            mLogger.error(msg,e);
            throw new XmlRpcException(UNKNOWN_EXCEPTION, msg);
    //#MetaWeblogAPIHandler.java:302: end of method: String org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.newPost(String, String, String, Hashtable, bool)
        }
    }
    
    
    /**
     *
     * @param postid
     * @param userid
     * @param password
     * @return
     * @throws Exception
     */
    public Object getPost(String postid, String userid, String password)
    throws Exception {
        
        mLogger.debug("getPost() Called =========[ SUPPORTED ]=====");
    //#MetaWeblogAPIHandler.java:318: method: Object org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.getPost(String, String, String)
    //#MetaWeblogAPIHandler.java:318: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getPost(String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Object getPost(String, String, String)): "     PostId: "._tainted
    //#input(Object getPost(String, String, String)): "     UserId: "._tainted
    //#input(Object getPost(String, String, String)): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#input(Object getPost(String, String, String)): __Descendant_Table[others]
    //#input(Object getPost(String, String, String)): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(Object getPost(String, String, String)): mLogger
    //#input(Object getPost(String, String, String)): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger
    //#input(Object getPost(String, String, String)): password
    //#input(Object getPost(String, String, String)): postid
    //#input(Object getPost(String, String, String)): postid._tainted
    //#input(Object getPost(String, String, String)): this
    //#input(Object getPost(String, String, String)): this.__Tag
    //#input(Object getPost(String, String, String)): userid
    //#input(Object getPost(String, String, String)): userid._tainted
    //#output(Object getPost(String, String, String)): new Hashtable(createPostStruct#2) num objects
    //#output(Object getPost(String, String, String)): return_value
    //#new obj(Object getPost(String, String, String)): new Hashtable(createPostStruct#2)
    //#pre[1] (Object getPost(String, String, String)): mLogger != null
    //#pre[7] (Object getPost(String, String, String)): this.__Tag == org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler
    //#pre[2] (Object getPost(String, String, String)): (soft) org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger != null
    //#pre[3] (Object getPost(String, String, String)): (soft) password != null
    //#presumption(Object getPost(String, String, String)): org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(...)@324 != null
    //#presumption(Object getPost(String, String, String)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@323 != null
    //#presumption(Object getPost(String, String, String)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@322 != null
    //#presumption(Object getPost(String, String, String)): org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite(...)@326 != null
    //#post(Object getPost(String, String, String)): return_value == &new Hashtable(createPostStruct#2)
    //#post(Object getPost(String, String, String)): new Hashtable(createPostStruct#2) num objects == 1
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.util.Hashtable
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.util.Hashtable:put
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTitle
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getLink
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:escapeHTML
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getText
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCreator
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getUserName
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEmailAddress
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.util.Vector
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCategory
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.util.Vector:addElement
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getUserByUserName
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getProperty
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:encodePassword
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPassword
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Object getPost(String, String, String)): Effects-of-calling:org.apache.xmlrpc.XmlRpcException
        mLogger.debug("     PostId: " + postid);
    //#MetaWeblogAPIHandler.java:319: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getPost(String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("     UserId: " + userid);
    //#MetaWeblogAPIHandler.java:320: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getPost(String, String, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        Weblogger roller = WebloggerFactory.getWeblogger();
    //#MetaWeblogAPIHandler.java:322: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getPost(String, String, String)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
        WeblogManager weblogMgr = roller.getWeblogManager();
    //#MetaWeblogAPIHandler.java:323: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getPost(String, String, String)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
        WeblogEntry entry = weblogMgr.getWeblogEntry(postid);
    //#MetaWeblogAPIHandler.java:324: Warning: method not available
    //#    -- call on WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getPost(String, String, String)
    //#    unanalyzed callee: WeblogEntry org.apache.roller.weblogger.business.WeblogManager:getWeblogEntry(String)
        
        validate(entry.getWebsite().getHandle(), userid,password);
    //#MetaWeblogAPIHandler.java:326: Warning: method not available
    //#    -- call on Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getPost(String, String, String)
    //#    unanalyzed callee: Weblog org.apache.roller.weblogger.pojos.WeblogEntry:getWebsite()
    //#MetaWeblogAPIHandler.java:326: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.Weblog:getHandle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getPost(String, String, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.Weblog:getHandle()
        
        try {
            return createPostStruct(entry, userid);
        } catch (Exception e) {
            String msg = "ERROR in MetaWeblogAPIHandler.getPost";
            mLogger.error(msg,e);
            throw new XmlRpcException(UNKNOWN_EXCEPTION, msg);
    //#MetaWeblogAPIHandler.java:333: end of method: Object org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.getPost(String, String, String)
        }
    }
    
    
    /**
     * Allows user to post a binary object, a file, to Weblogger. If the file is
     * allowed by the RollerConfig file-upload settings, then the file will be
     * placed in the user's upload diretory.
     */
    public Object newMediaObject(String blogid, String userid, String password,
            Hashtable struct) throws Exception {
        
        mLogger.debug("newMediaObject() Called =[ SUPPORTED ]=====");
    //#MetaWeblogAPIHandler.java:346: method: Object org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.newMediaObject(String, String, String, Hashtable)
    //#MetaWeblogAPIHandler.java:346: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Object newMediaObject(String, String, String, Hashtable)): "     BlogId: "._tainted
    //#input(Object newMediaObject(String, String, String, Hashtable)): "     UserId: "._tainted
    //#input(Object newMediaObject(String, String, String, Hashtable)): "newMediaObject name: "._tainted
    //#input(Object newMediaObject(String, String, String, Hashtable)): "newMediaObject type: "._tainted
    //#input(Object newMediaObject(String, String, String, Hashtable)): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#input(Object newMediaObject(String, String, String, Hashtable)): __Descendant_Table[others]
    //#input(Object newMediaObject(String, String, String, Hashtable)): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(Object newMediaObject(String, String, String, Hashtable)): blogid
    //#input(Object newMediaObject(String, String, String, Hashtable)): blogid._tainted
    //#input(Object newMediaObject(String, String, String, Hashtable)): mLogger
    //#input(Object newMediaObject(String, String, String, Hashtable)): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger
    //#input(Object newMediaObject(String, String, String, Hashtable)): password
    //#input(Object newMediaObject(String, String, String, Hashtable)): struct
    //#input(Object newMediaObject(String, String, String, Hashtable)): this
    //#input(Object newMediaObject(String, String, String, Hashtable)): this.__Tag
    //#input(Object newMediaObject(String, String, String, Hashtable)): userid
    //#input(Object newMediaObject(String, String, String, Hashtable)): userid._tainted
    //#output(Object newMediaObject(String, String, String, Hashtable)): new Hashtable(newMediaObject#7) num objects
    //#output(Object newMediaObject(String, String, String, Hashtable)): return_value
    //#new obj(Object newMediaObject(String, String, String, Hashtable)): new Hashtable(newMediaObject#7)
    //#pre[3] (Object newMediaObject(String, String, String, Hashtable)): mLogger != null
    //#pre[6] (Object newMediaObject(String, String, String, Hashtable)): struct != null
    //#pre[8] (Object newMediaObject(String, String, String, Hashtable)): this.__Tag == org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler
    //#pre[4] (Object newMediaObject(String, String, String, Hashtable)): (soft) org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger != null
    //#pre[5] (Object newMediaObject(String, String, String, Hashtable)): (soft) password != null
    //#presumption(Object newMediaObject(String, String, String, Hashtable)): bits.length@359 <= 18_446_744_073_709_551_615
    //#presumption(Object newMediaObject(String, String, String, Hashtable)): java.util.Hashtable:get(...)@353 != null
    //#presumption(Object newMediaObject(String, String, String, Hashtable)): java.util.Hashtable:get(...)@359 != null
    //#presumption(Object newMediaObject(String, String, String, Hashtable)): org.apache.roller.weblogger.business.Weblogger:getFileManager(...)@362 != null
    //#presumption(Object newMediaObject(String, String, String, Hashtable)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@368 != null
    //#presumption(Object newMediaObject(String, String, String, Hashtable)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@361 != null
    //#presumption(Object newMediaObject(String, String, String, Hashtable)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@368 != null
    //#post(Object newMediaObject(String, String, String, Hashtable)): return_value == &new Hashtable(newMediaObject#7)
    //#post(Object newMediaObject(String, String, String, Hashtable)): new Hashtable(newMediaObject#7) num objects == 1
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getUserByUserName
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getProperty
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:encodePassword
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPassword
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Object newMediaObject(String, String, String, Hashtable)): Effects-of-calling:org.apache.xmlrpc.XmlRpcException
        mLogger.debug("     BlogId: " + blogid);
    //#MetaWeblogAPIHandler.java:347: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("     UserId: " + userid);
    //#MetaWeblogAPIHandler.java:348: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("   Password: *********");
    //#MetaWeblogAPIHandler.java:349: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        Weblog website = validate(blogid, userid, password);
        try {
            String name = (String) struct.get("name");
            name = name.replaceAll("/","_");
            String type = (String) struct.get("type");
            mLogger.debug("newMediaObject name: " + name);
    //#MetaWeblogAPIHandler.java:356: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            mLogger.debug("newMediaObject type: " + type);
    //#MetaWeblogAPIHandler.java:357: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            
            byte[] bits = (byte[]) struct.get("bits");
            
            Weblogger roller = WebloggerFactory.getWeblogger();
    //#MetaWeblogAPIHandler.java:361: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
            FileManager fmgr = roller.getFileManager();
    //#MetaWeblogAPIHandler.java:362: Warning: method not available
    //#    -- call on FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: FileManager org.apache.roller.weblogger.business.Weblogger:getFileManager()
            RollerMessages msgs = new RollerMessages();
    //#MetaWeblogAPIHandler.java:363: Warning: unused assignment
    //#    unused assignment into msgs
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#MetaWeblogAPIHandler.java:363: Warning: method not available
    //#    -- call on void org.apache.roller.weblogger.util.RollerMessages()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: void org.apache.roller.weblogger.util.RollerMessages()
            
            // Try to save file
            fmgr.saveFile(website, name, type, bits.length, new ByteArrayInputStream(bits));
    //#MetaWeblogAPIHandler.java:366: 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.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: void org.apache.roller.weblogger.business.FileManager:saveFile(Weblog, String, String, long, InputStream)
            
            String fileLink = WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogResourceURL(website, name, true);
    //#MetaWeblogAPIHandler.java:368: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#MetaWeblogAPIHandler.java:368: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#MetaWeblogAPIHandler.java:368: 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.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object newMediaObject(String, String, String, Hashtable)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogResourceURL(Weblog, String, bool)
            
            Hashtable returnStruct = new Hashtable(1);
            returnStruct.put("url", fileLink);
            return returnStruct;
            
        } catch (WebloggerException e) {
            String msg = "ERROR in MetaWeblogAPIHandler.newMediaObject";
            mLogger.error(msg,e);
            throw new XmlRpcException(UNKNOWN_EXCEPTION, msg);
    //#MetaWeblogAPIHandler.java:377: end of method: Object org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.newMediaObject(String, String, String, Hashtable)
        }
    }
    
    
    /**
     * Get a list of recent posts for a category
     *
     * @param blogid Unique identifier of the blog the post will be added to
     * @param userid Login for a Blogger user who has permission to post to the blog
     * @param password Password for said username
     * @param numposts Number of Posts to Retrieve
     * @throws XmlRpcException
     * @return
     */
    public Object getRecentPosts(String blogid, String userid, String password,
            int numposts) throws Exception {
        
        mLogger.debug("getRecentPosts() Called ===========[ SUPPORTED ]=====");
    //#MetaWeblogAPIHandler.java:395: method: Object org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.getRecentPosts(String, String, String, int)
    //#MetaWeblogAPIHandler.java:395: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getRecentPosts(String, String, String, int)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    //#input(Object getRecentPosts(String, String, String, int)): "     BlogId: "._tainted
    //#input(Object getRecentPosts(String, String, String, int)): "     Number: "._tainted
    //#input(Object getRecentPosts(String, String, String, int)): "     UserId: "._tainted
    //#input(Object getRecentPosts(String, String, String, int)): __Descendant_Table[org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler]
    //#input(Object getRecentPosts(String, String, String, int)): __Descendant_Table[others]
    //#input(Object getRecentPosts(String, String, String, int)): __Dispatch_Table.validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/roller/weblogger/pojos/Weblog;
    //#input(Object getRecentPosts(String, String, String, int)): blogid
    //#input(Object getRecentPosts(String, String, String, int)): blogid._tainted
    //#input(Object getRecentPosts(String, String, String, int)): mLogger
    //#input(Object getRecentPosts(String, String, String, int)): numposts
    //#input(Object getRecentPosts(String, String, String, int)): org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger
    //#input(Object getRecentPosts(String, String, String, int)): password
    //#input(Object getRecentPosts(String, String, String, int)): this
    //#input(Object getRecentPosts(String, String, String, int)): this.__Tag
    //#input(Object getRecentPosts(String, String, String, int)): userid
    //#input(Object getRecentPosts(String, String, String, int)): userid._tainted
    //#output(Object getRecentPosts(String, String, String, int)): new Vector(getRecentPosts#4) num objects
    //#output(Object getRecentPosts(String, String, String, int)): return_value
    //#new obj(Object getRecentPosts(String, String, String, int)): new Vector(getRecentPosts#4)
    //#pre[3] (Object getRecentPosts(String, String, String, int)): mLogger != null
    //#pre[8] (Object getRecentPosts(String, String, String, int)): this.__Tag == org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler
    //#pre[5] (Object getRecentPosts(String, String, String, int)): (soft) org/apache/roller/weblogger/webservices/xmlrpc/BaseAPIHandler.mLogger != null
    //#pre[6] (Object getRecentPosts(String, String, String, int)): (soft) password != null
    //#presumption(Object getRecentPosts(String, String, String, int)): java.util.Iterator:next(...)@424 != null
    //#presumption(Object getRecentPosts(String, String, String, int)): org.apache.roller.weblogger.business.WeblogManager:getWeblogEntries(...)@408 != null
    //#presumption(Object getRecentPosts(String, String, String, int)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@406 != null
    //#presumption(Object getRecentPosts(String, String, String, int)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@405 != null
    //#post(Object getRecentPosts(String, String, String, int)): return_value == &new Vector(getRecentPosts#4)
    //#post(Object getRecentPosts(String, String, String, int)): new Vector(getRecentPosts#4) num objects == 1
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.util.Hashtable
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogCategory:getPath
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.util.Hashtable:put
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getTitle
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getLink
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:escapeHTML
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getText
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getId
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCreator
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getUserName
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEmailAddress
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.util.Vector
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getCategory
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.util.Vector:addElement
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getUserByUserName
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getEnabled
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.lang.Boolean:booleanValue
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnabled
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getEnableBloggerApi
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.config.WebloggerConfig:getProperty
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.lang.String:equalsIgnoreCase
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.util.Utilities:encodePassword
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.roller.weblogger.pojos.User:getPassword
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(Object getRecentPosts(String, String, String, int)): Effects-of-calling:org.apache.xmlrpc.XmlRpcException
    //#test_vector(Object getRecentPosts(String, String, String, int)): java.util.Iterator:hasNext(...)@423: {0}, {1}
        mLogger.debug("     BlogId: " + blogid);
    //#MetaWeblogAPIHandler.java:396: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getRecentPosts(String, String, String, int)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("     UserId: " + userid);
    //#MetaWeblogAPIHandler.java:397: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getRecentPosts(String, String, String, int)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        mLogger.debug("     Number: " + numposts);
    //#MetaWeblogAPIHandler.java:398: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getRecentPosts(String, String, String, int)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        Weblog website = validate(blogid, userid,password);
        
        try {
            Vector results = new Vector();
            
            Weblogger roller = WebloggerFactory.getWeblogger();
    //#MetaWeblogAPIHandler.java:405: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getRecentPosts(String, String, String, int)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
            WeblogManager weblogMgr = roller.getWeblogManager();
    //#MetaWeblogAPIHandler.java:406: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getRecentPosts(String, String, String, int)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
            if (website != null) {
    //#MetaWeblogAPIHandler.java:407: Warning: test always goes same way
    //#    test predetermined because website != null
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getRecentPosts(String, String, String, int)
    //#    from bb: bb_2
    //#    live edge: bb_2-->bb_3
    //#    tested vn: validate(...) == null
    //#    tested vn values: {0}
                List entries = weblogMgr.getWeblogEntries(
    //#MetaWeblogAPIHandler.java:408: 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.xmlrpc.MetaWeblogAPIHandler
    //#    method: Object getRecentPosts(String, String, String, int)
    //#    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,
                        null,              // startDate
                        null,              // endDate
                        null,              // catName
                        null,              // tags
                        null,              // status
                        null,              // text
                        "updateTime",      // sortby
                        null,
                        null,
                        0, numposts);
                
                Iterator iter = entries.iterator();
                while (iter.hasNext()) {
                    WeblogEntry entry = (WeblogEntry)iter.next();
                    results.addElement(createPostStruct(entry, userid));
                }
            }
            return results;
            
        } catch (Exception e) {
            String msg = "ERROR in MetaWeblogAPIHandler.getRecentPosts";
            mLogger.error(msg,e);
            throw new XmlRpcException(UNKNOWN_EXCEPTION, msg);
    //#MetaWeblogAPIHandler.java:433: end of method: Object org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.getRecentPosts(String, String, String, int)
        }
    }
    
    
    private Hashtable createPostStruct(WeblogEntry entry, String userid) {
        
        String permalink =
    //#MetaWeblogAPIHandler.java:440: method: Hashtable org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.createPostStruct(WeblogEntry, String)
    //#MetaWeblogAPIHandler.java:440: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#MetaWeblogAPIHandler.java:440: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getPermaLink()
    //#input(Hashtable createPostStruct(WeblogEntry, String)): entry
    //#output(Hashtable createPostStruct(WeblogEntry, String)): new Hashtable(createPostStruct#2) num objects
    //#output(Hashtable createPostStruct(WeblogEntry, String)): return_value
    //#new obj(Hashtable createPostStruct(WeblogEntry, String)): new Hashtable(createPostStruct#2)
    //#pre[1] (Hashtable createPostStruct(WeblogEntry, String)): entry != null
    //#presumption(Hashtable createPostStruct(WeblogEntry, String)): org.apache.roller.weblogger.pojos.WeblogEntry:getCategory(...)@461 != null
    //#presumption(Hashtable createPostStruct(WeblogEntry, String)): org.apache.roller.weblogger.pojos.WeblogEntry:getCreator(...)@457 != null
    //#presumption(Hashtable createPostStruct(WeblogEntry, String)): org.apache.roller.weblogger.pojos.WeblogEntry:getCreator(...)@458 != null
    //#post(Hashtable createPostStruct(WeblogEntry, String)): return_value == &new Hashtable(createPostStruct#2)
    //#post(Hashtable createPostStruct(WeblogEntry, String)): new Hashtable(createPostStruct#2) num objects == 1
    //#test_vector(Hashtable createPostStruct(WeblogEntry, String)): org.apache.roller.weblogger.pojos.WeblogEntry:getLink(...)@445: Addr_Set{null}, Inverse{null}
    //#test_vector(Hashtable createPostStruct(WeblogEntry, String)): org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime(...)@449: Addr_Set{null}, Inverse{null}
                WebloggerRuntimeConfig.getAbsoluteContextURL() + entry.getPermaLink();
        
        Hashtable struct = new Hashtable();
        struct.put("title", entry.getTitle());
    //#MetaWeblogAPIHandler.java:444: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getTitle()
        if (entry.getLink() != null) {
    //#MetaWeblogAPIHandler.java:445: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getLink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getLink()
            struct.put("link", Utilities.escapeHTML(entry.getLink()));
    //#MetaWeblogAPIHandler.java:446: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getLink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getLink()
    //#MetaWeblogAPIHandler.java:446: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.Utilities:escapeHTML(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.Utilities:escapeHTML(String)
        }
        struct.put("description", entry.getText());
    //#MetaWeblogAPIHandler.java:448: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getText()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getText()
        if (entry.getPubTime() != null) {
    //#MetaWeblogAPIHandler.java:449: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
            struct.put("pubDate", entry.getPubTime());
    //#MetaWeblogAPIHandler.java:450: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
            struct.put("dateCreated", entry.getPubTime());
    //#MetaWeblogAPIHandler.java:451: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
        }
        struct.put("guid", Utilities.escapeHTML(permalink));
    //#MetaWeblogAPIHandler.java:453: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.Utilities:escapeHTML(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.Utilities:escapeHTML(String)
        struct.put("permaLink", Utilities.escapeHTML(permalink));
    //#MetaWeblogAPIHandler.java:454: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.util.Utilities:escapeHTML(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.util.Utilities:escapeHTML(String)
        struct.put("postid", entry.getId());
    //#MetaWeblogAPIHandler.java:455: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getId()
        
        struct.put("userid", entry.getCreator().getUserName());
    //#MetaWeblogAPIHandler.java:457: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#MetaWeblogAPIHandler.java:457: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getUserName()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getUserName()
        struct.put("author", entry.getCreator().getEmailAddress());
    //#MetaWeblogAPIHandler.java:458: Warning: method not available
    //#    -- call on User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: User org.apache.roller.weblogger.pojos.WeblogEntry:getCreator()
    //#MetaWeblogAPIHandler.java:458: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.User:getEmailAddress()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.User:getEmailAddress()
        
        Vector catArray = new Vector();
        catArray.addElement(entry.getCategory().getPath());
    //#MetaWeblogAPIHandler.java:461: Warning: method not available
    //#    -- call on WeblogCategory org.apache.roller.weblogger.pojos.WeblogEntry:getCategory()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: WeblogCategory org.apache.roller.weblogger.pojos.WeblogEntry:getCategory()
    //#MetaWeblogAPIHandler.java:461: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createPostStruct(WeblogEntry, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
        struct.put("categories", catArray);
        
        return struct;
    //#MetaWeblogAPIHandler.java:464: end of method: Hashtable org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.createPostStruct(WeblogEntry, String)
    }
    
    
    private Hashtable createCategoryStruct(WeblogCategory category, String userid) {
        
        String contextUrl = WebloggerRuntimeConfig.getAbsoluteContextURL();
    //#MetaWeblogAPIHandler.java:470: method: Hashtable org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.createCategoryStruct(WeblogCategory, String)
    //#MetaWeblogAPIHandler.java:470: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createCategoryStruct(WeblogCategory, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerRuntimeConfig:getAbsoluteContextURL()
    //#input(Hashtable createCategoryStruct(WeblogCategory, String)): ".page."._tainted
    //#input(Hashtable createCategoryStruct(WeblogCategory, String)): ".rss."._tainted
    //#input(Hashtable createCategoryStruct(WeblogCategory, String)): "?catname="._tainted
    //#input(Hashtable createCategoryStruct(WeblogCategory, String)): category
    //#input(Hashtable createCategoryStruct(WeblogCategory, String)): userid
    //#input(Hashtable createCategoryStruct(WeblogCategory, String)): userid._tainted
    //#output(Hashtable createCategoryStruct(WeblogCategory, String)): new Hashtable(createCategoryStruct#1) num objects
    //#output(Hashtable createCategoryStruct(WeblogCategory, String)): return_value
    //#new obj(Hashtable createCategoryStruct(WeblogCategory, String)): new Hashtable(createCategoryStruct#1)
    //#pre[1] (Hashtable createCategoryStruct(WeblogCategory, String)): category != null
    //#post(Hashtable createCategoryStruct(WeblogCategory, String)): return_value == &new Hashtable(createCategoryStruct#1)
    //#post(Hashtable createCategoryStruct(WeblogCategory, String)): new Hashtable(createCategoryStruct#1) num objects == 1
        
        Hashtable struct = new Hashtable();
        struct.put("description", category.getPath());
    //#MetaWeblogAPIHandler.java:473: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createCategoryStruct(WeblogCategory, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
        
        String catUrl = contextUrl+"/page/"+userid+"?catname="+category.getPath();
    //#MetaWeblogAPIHandler.java:475: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createCategoryStruct(WeblogCategory, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
        catUrl = StringUtils.replace(catUrl," ","%20");
    //#MetaWeblogAPIHandler.java:476: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringUtils:replace(String, String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createCategoryStruct(WeblogCategory, String)
    //#    unanalyzed callee: String org.apache.commons.lang.StringUtils:replace(String, String, String)
        struct.put("htmlUrl", catUrl);
        
        String rssUrl = contextUrl+"/rss/"+userid+"?catname="+category.getPath();
    //#MetaWeblogAPIHandler.java:479: Warning: unused assignment
    //#    unused assignment into rssUrl
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createCategoryStruct(WeblogCategory, String)
    //#MetaWeblogAPIHandler.java:479: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createCategoryStruct(WeblogCategory, String)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogCategory:getPath()
        rssUrl = StringUtils.replace(catUrl," ","%20");
    //#MetaWeblogAPIHandler.java:480: Warning: method not available
    //#    -- call on String org.apache.commons.lang.StringUtils:replace(String, String, String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
    //#    method: Hashtable createCategoryStruct(WeblogCategory, String)
    //#    unanalyzed callee: String org.apache.commons.lang.StringUtils:replace(String, String, String)
        struct.put("rssUrl",rssUrl);
        
        return struct;
    //#MetaWeblogAPIHandler.java:483: end of method: Hashtable org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler.createCategoryStruct(WeblogCategory, String)
    }
    
}
    //#MetaWeblogAPIHandler.java:: end of class: org.apache.roller.weblogger.webservices.xmlrpc.MetaWeblogAPIHandler
