//# 0 errors, 34 messages
//#
/*
    //#AtomHandler.java:1:1: class: org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler
    //#AtomHandler.java:1:1: method: org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler.org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init
* Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  The ASF licenses this file to You
* under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.  For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.roller.weblogger.webservices.atomprotocol;

import java.io.InputStream;
import com.sun.syndication.feed.atom.Entry;
import com.sun.syndication.feed.atom.Feed;

/**
 * Interface to be supported by an Atom server, expected lifetime: one request.
 * AtomServlet calls this generic interface instead of Roller specific APIs. 
 * <p />
 * Based on: draft-ietf-atompub-protocol-14.txt
 * <p />
 * Designed to be Roller independent.
 */
public interface AtomHandler
{   
    /** Get username of authenticated user */
    public String getAuthenticatedUsername();    

    /**
     * Return introspection document
     */
    public AtomService getIntrospection() throws AtomException;
    
    /**
     * Return collection
     * @param pathInfo Used to determine which collection and range
     */   
    public Feed getCollection(String[] pathInfo) throws AtomException;
    
    /**
     * Create a new entry specified by pathInfo and posted entry.
     * @param pathInfo Path info portion of URL
     */
    public Entry postEntry(String[] pathInfo, Entry entry) throws AtomException;

    /**
     * Get entry specified by pathInfo.
     * @param pathInfo Path info portion of URL
     */
    public Entry getEntry(String[] pathInfo) throws AtomException;
    
    /**
     * Update entry specified by pathInfo and posted entry.
     * @param pathInfo Path info portion of URL
     */
    public Entry putEntry(String[] pathInfo, Entry entry) throws AtomException;
    

    /**
     * Delete entry specified by pathInfo.
     * @param pathInfo Path info portion of URL
     */
    public void deleteEntry(String[] pathInfo) throws AtomException;
    
    /**
     * Get media resource specified by pathInfo.
     * @param pathInfo Path info portion of URL
     */
    public AtomMediaResource getMediaResource(String[] pathInfo) throws AtomException;
    
    /**
     * Create a new media-link entry.
     * @param pathInfo Path info portion of URL
     * @param contentType MIME type of uploaded content
     * @param data Binary data representing uploaded content
     */
    public Entry postMedia(
        String[] pathInfo, String title, String slug, String contentType, InputStream is) throws AtomException;

    /**
     * Update the media file part of a media-link entry.
     * @param pathInfo Path info portion of URL
     */
    public Entry putMedia(
        String[] pathInfo, String contentType, InputStream is) throws AtomException;
        
    /**
     * Return true if specified pathinfo represents URI of introspection doc.
     */
    public boolean isIntrospectionURI(String [] pathInfo);  
 
    /**
     * Return true if specified pathinfo represents URI of a collection.
     */
    public boolean isCollectionURI(String [] pathInfo);   
     
    /**
     * Return true if specified pathinfo represents URI of an Atom entry.
     */
    public boolean isEntryURI(String[] pathInfo);
        
    /**
     * Return true if specified pathinfo represents media-edit URI.
     */
    public boolean isMediaEditURI(String[] pathInfo);
}

    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AtomHandler]
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.deleteEntry([Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getAuthenticatedUsername()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getCollection([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getEntry([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getIntrospection()Lorg/apache/roller/weblogger/webservices/atomprotocol/AtomService;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getMediaResource([Ljava/lang/String;)Lorg/apache/roller/weblogger/webservices/atomprotocol/AtomMediaResource;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.isCollectionURI([Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.isEntryURI([Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.isIntrospectionURI([Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.isMediaEditURI([Ljava/lang/String;)Z
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.postEntry([Ljava/lang/String;Lcom/sun/syndication/feed/atom/Entry;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.postMedia([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.putEntry([Ljava/lang/String;Lcom/sun/syndication/feed/atom/Entry;)Lcom/sun/syndication/feed/atom/Entry;
    //#output(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.putMedia([Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/sun/syndication/feed/atom/Entry;
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Descendant_Table[org/apache/roller/weblogger/webservices/atomprotocol/AtomHandler] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.deleteEntry([Ljava/lang/String;)V == &deleteEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getAuthenticatedUsername()Ljava/lang/String; == &getAuthenticatedUsername
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getCollection([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Feed; == &getCollection
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getEntry([Ljava/lang/String;)Lcom/sun/syndication/feed/atom/Entry; == &getEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getIntrospection()Lorg/apache/roller/weblogger/webservices/atomprotocol/AtomService; == &getIntrospection
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.getMediaResource([Ljava/lang/String;)Lorg/apache/roller/weblogger/webservices/atomprotocol/AtomMediaResource; == &getMediaResource
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.isCollectionURI([Ljava/lang/String;)Z == &isCollectionURI
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.isEntryURI([Ljava/lang/String;)Z == &isEntryURI
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.isIntrospectionURI([Ljava/lang/String;)Z == &isIntrospectionURI
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.isMediaEditURI([Ljava/lang/String;)Z == &isMediaEditURI
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.postEntry([Ljava/lang/String;Lcom/sun/syndication/feed/atom/Entry;)Lcom/sun/syndication/feed/atom/Entry; == &postEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.postMedia([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/sun/syndication/feed/atom/Entry; == &postMedia
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.putEntry([Ljava/lang/String;Lcom/sun/syndication/feed/atom/Entry;)Lcom/sun/syndication/feed/atom/Entry; == &putEntry
    //#post(org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init): __Dispatch_Table.putMedia([Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)Lcom/sun/syndication/feed/atom/Entry; == &putMedia
    //#AtomHandler.java:: end of method: org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler.org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler__static_init
    //#AtomHandler.java:: end of class: org.apache.roller.weblogger.webservices.atomprotocol.AtomHandler
