org.blojsom.extension.atomapi
Class AtomAPIServlet

java.lang.Object
  extended byjavax.servlet.GenericServlet
      extended byjavax.servlet.http.HttpServlet
          extended byorg.blojsom.servlet.BlojsomBaseServlet
              extended byorg.blojsom.extension.atomapi.AtomAPIServlet
All Implemented Interfaces:
AtomAPIConstants, BlojsomConstants, BlojsomMetaDataConstants, java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class AtomAPIServlet
extends BlojsomBaseServlet
implements BlojsomConstants, BlojsomMetaDataConstants, AtomAPIConstants

AtomAPIServlet

Implementation of J.C. Gregorio's Atom API.

Since:
blojsom 2.0
Version:
$Id: AtomAPIServlet.java,v 1.61 2006/01/04 16:24:06 czarneckid Exp $
Author:
Mark Lussier
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.blojsom.servlet.BlojsomBaseServlet
_baseConfigurationDirectory, _blojsomConfiguration, _fetcher
 
Fields inherited from interface org.blojsom.util.BlojsomConstants
ADMINISTRATORS_IP, BLOG_ADMIN_URL_IP, BLOG_ADMINISTRATION_LOCALE_IP, BLOG_AUTHORIZATION_IP, BLOG_BASE_URL_IP, BLOG_BLACKLIST_FILE_IP, BLOG_COMMENTS_DIRECTORY_IP, BLOG_COMMENTS_ENABLED_IP, BLOG_COUNTRY_DEFAULT, BLOG_COUNTRY_IP, BLOG_DEFAULT_CATEGORY_EXCLUSION_MAPPING_IP, BLOG_DEFAULT_CATEGORY_MAPPING_IP, BLOG_DEFAULT_FETCHER, BLOG_DEFAULT_FILE_EXTENSION_IP, BLOG_DEFAULT_FLAVOR_IP, BLOG_DEFAULT_PROPERTIES, BLOG_DEPTH_IP, BLOG_DESCRIPTION_IP, BLOG_DIRECTORY_FILTER_IP, BLOG_EMAIL_ENABLED_IP, BLOG_ENTRIES_DISPLAY_DEFAULT, BLOG_ENTRIES_DISPLAY_IP, BLOG_ENTRY_META_DATA_EXTENSION_IP, BLOG_FILE_ENCODING_IP, BLOG_FILE_EXTENSIONS_IP, BLOG_HOME_IP, BLOG_LANGUAGE_DEFAULT, BLOG_LANGUAGE_IP, BLOG_NAME_IP, BLOG_OWNER, BLOG_OWNER_EMAIL, BLOG_PERMISSIONS_IP, BLOG_PINGBACKS_DIRECTORY_IP, BLOG_PINGBACKS_ENABLED_IP, BLOG_PROPERTIES_EXTENSIONS_IP, BLOG_TRACKBACK_DIRECTORY_IP, BLOG_TRACKBACKS_ENABLED_IP, BLOG_URL_IP, BLOJSOM_ALL_CATEGORIES, BLOJSOM_AUTHORIZATION_PROVIDER_IP, BLOJSOM_BLOG, BLOJSOM_BLOG_HOME_IP, BLOJSOM_BROADCASTER_IP, BLOJSOM_CATEGORIES, BLOJSOM_COMMENTS_ENABLED, BLOJSOM_CONFIGURATION_BASE_DIRECTORY_IP, BLOJSOM_CONFIGURATION_IP, BLOJSOM_DATE, BLOJSOM_DATE_ISO8601, BLOJSOM_DATE_OBJECT, BLOJSOM_DATE_UTC, BLOJSOM_DEFAULT_BROADCASTER, BLOJSOM_DEFAULT_CONFIGURATION_BASE_DIRECTORY, BLOJSOM_DEFAULT_RESOURCE_DIRECTORY, BLOJSOM_DEFAULT_RESOURCE_MANAGER, BLOJSOM_DEFAULT_TEMPLATES_DIRECTORY, BLOJSOM_DEFAULT_USER_IP, BLOJSOM_EMAIL_ENABLED, BLOJSOM_ENTRIES, BLOJSOM_FETCHER_IP, BLOJSOM_FLAVOR_CONFIGURATION_IP, BLOJSOM_INSTALLATION_DIRECTORY_IP, BLOJSOM_INSTALLED_LOCALES_IP, BLOJSOM_LAST_MODIFIED, BLOJSOM_LISTENER_CONFIGURATION_IP, BLOJSOM_PERMALINK, BLOJSOM_PERMALINK_NEXT_ENTRY, BLOJSOM_PERMALINK_PREVIOUS_ENTRY, BLOJSOM_PLUGIN_CHAIN, BLOJSOM_PLUGIN_CONFIGURATION_IP, BLOJSOM_PLUGINS, BLOJSOM_REQUESTED_CATEGORY, BLOJSOM_REQUESTED_FLAVOR, BLOJSOM_RESOURCE_DIRECTORY_IP, BLOJSOM_RESOURCE_MANAGER_BUNDLES_IP, BLOJSOM_RESOURCE_MANAGER_CONTEXT_KEY, BLOJSOM_RESOURCE_MANAGER_IP, BLOJSOM_SITE_URL, BLOJSOM_TEMPLATES_DIRECTORY_IP, BLOJSOM_USER, BLOJSOM_USERS_IP, BLOJSOM_VERSION, BLOJSOM_VERSION_NUMBER, CACHE_CONTROL_HTTP_HEADER, CATEGORY_PARAM, COMMENT_EXTENSION, DEFAULT_AUTHORIZATION_PROVIDER, DEFAULT_COMMENTS_DIRECTORY, DEFAULT_DIGEST_ALGORITHM, DEFAULT_DISPATCHER_CONFIGURATION_FILE, DEFAULT_ENTRY_EXTENSION, DEFAULT_FLAVOR_CONFIGURATION_FILE, DEFAULT_FLAVOR_HTML, DEFAULT_METADATA_EXTENSION, DEFAULT_PERMISSIONS_CONFIGURATION_FILE, DEFAULT_PINGBACKS_DIRECTORY, DEFAULT_PLUGIN_CONFIGURATION_FILE, DEFAULT_PROPERTIES_EXTENSIONS, DEFAULT_TRACKBACK_DIRECTORY, DESCRIPTION_KEY, DIGEST_ALGORITHM, FLAVOR_PARAM, HTTP_ETAG, HTTP_LASTMODIFIED, INFINITE_BLOG_DEPTH, ISO_8601_DATE_FORMAT, LINE_SEPARATOR, LINEAR_NAVIGATION_ENABLED_IP, MAX_HASHABLE_LENGTH, NAME_KEY, NO_CACHE_HTTP_HEADER_VALUE, OVERRIDE_LASTMODIFIED_PARAM, PAGE_PARAM, PAGE_PARAM_ARCHIVE, PERMALINK_PARAM, PINGBACK_EXTENSION, PLUGINS_PARAM, PRAGMA_HTTP_HEADER, PREFERRED_SYNDICATION_FLAVOR, RECURSIVE_CATEGORIES, REDIRECT_TO_PARAM, RFC_822_DATE_FORMAT, SHORT_ISO_8601_DATE_FORMAT, TRACKBACK_EXTENSION, USE_ENCRYPTED_PASSWORDS, UTC_DATE_FORMAT, UTF8, WHITESPACE, XMLRPC_ENABLED_IP
 
Fields inherited from interface org.blojsom.util.BlojsomMetaDataConstants
BLOG_ENTRY_METADATA_AUTHOR, BLOG_ENTRY_METADATA_AUTHOR_EXT, BLOG_ENTRY_METADATA_TIMESTAMP, BLOG_METADATA_COMMENTS_DISABLED, BLOG_METADATA_HEADER, BLOG_METADATA_PINGBACKS_DISABLED, BLOG_METADATA_TRACKBACKS_DISABLED, SOURCE_ATTRIBUTE
 
Fields inherited from interface org.blojsom.extension.atomapi.AtomAPIConstants
ATOM_AUTH_PREFIX, ATOM_NAMESPACE, ATOM_SERVLETMAPPING, ATOM_TOKEN_NEXTNONCE, ATOMHEADER_AUTHENTICATION_INFO, ATOMHEADER_AUTHORIZATION, ATOMHEADER_WSSE_AUTHORIZATION, AUTHENTICATION_REALM, BLOG_ATOMAPI_ENTRY_EXTENSION_IP, CONTENTTYPE_ATOM, CONTENTTYPE_HTML, CONTENTTYPE_XML, DEFAULT_BLOG_ATOMAPI_ENTRY_EXTENSION, HEADER_AUTHORIZATION, HEADER_LOCATION, HEADER_SOAPACTION, HEADER_WWWAUTHENTICATE, KEY_ATOMALL, KEY_ATOMLAST, SOAPACTION_PUT
 
Constructor Summary
AtomAPIServlet()
          Default constructor
 
Method Summary
protected  void configureAuthorization(javax.servlet.ServletConfig servletConfig)
          Configure the authorization provider
protected  void configureFlavorsForUser(javax.servlet.ServletConfig servletConfig, BlogUser blogUser)
          Configure the flavors for the blog which map flavor values like "html" and "rss" to the proper template and content type
 void destroy()
          Called when removing the servlet from the servlet container
protected  void doDelete(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse)
          Handle a Delete Entry message
protected  void doGet(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse)
          Process a Get Entry message
protected  void doPost(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse)
          Handle a Post Entry request
protected  void doPut(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse)
          Handle a Put Entry request
protected  void handleSOAPPut(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse)
          Handle a SOAP PUT request
protected  void handleSOAPRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse)
          Handle a given SOAP request looking for the "SOAPAction" header to decide on which method to execute
 void init(javax.servlet.ServletConfig servletConfig)
          Initialize the blojsom AtomAPI servlet
protected  BlogUser loadBlogUser(java.lang.String userID)
          Loads a BlogUser object for a given user ID
protected  java.lang.String readContentFromInputStream(java.io.InputStream is, int length)
          Read all the content from a given input stream for a specified length.
protected  java.lang.String retrieveEntryBody(java.lang.String content)
          Retrieve an entry body (<entry>...</entry>) from arbitrary content
 
Methods inherited from class org.blojsom.servlet.BlojsomBaseServlet
configureBlojsom, configureFetcher
 
Methods inherited from class javax.servlet.http.HttpServlet
doHead, doOptions, doTrace, getLastModified, service, service
 
Methods inherited from class javax.servlet.GenericServlet
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AtomAPIServlet

public AtomAPIServlet()
Default constructor

Method Detail

configureAuthorization

protected void configureAuthorization(javax.servlet.ServletConfig servletConfig)
                               throws javax.servlet.ServletException
Configure the authorization provider

Throws:
javax.servlet.ServletException - If there is an error instantiating and/or initializing the authorization provider

init

public void init(javax.servlet.ServletConfig servletConfig)
          throws javax.servlet.ServletException
Initialize the blojsom AtomAPI servlet

Specified by:
init in interface javax.servlet.Servlet
Overrides:
init in class BlojsomBaseServlet
Parameters:
servletConfig - Servlet configuration information
Throws:
javax.servlet.ServletException - If there is an error initializing the servlet

configureFlavorsForUser

protected void configureFlavorsForUser(javax.servlet.ServletConfig servletConfig,
                                       BlogUser blogUser)
                                throws javax.servlet.ServletException
Configure the flavors for the blog which map flavor values like "html" and "rss" to the proper template and content type

Parameters:
servletConfig - Servlet configuration information
blogUser - BlogUser information
Throws:
javax.servlet.ServletException
Since:
blojsom 2.22

loadBlogUser

protected BlogUser loadBlogUser(java.lang.String userID)
Loads a BlogUser object for a given user ID

Parameters:
userID - User ID
Returns:
BlogUser configured for the given user ID or null if there is an error loading the user

doDelete

protected void doDelete(javax.servlet.http.HttpServletRequest httpServletRequest,
                        javax.servlet.http.HttpServletResponse httpServletResponse)
                 throws javax.servlet.ServletException,
                        java.io.IOException
Handle a Delete Entry message

Parameters:
httpServletRequest - Request
httpServletResponse - Response
Throws:
javax.servlet.ServletException - If there is an error processing the request
java.io.IOException - If there is an error during I/O

doGet

protected void doGet(javax.servlet.http.HttpServletRequest httpServletRequest,
                     javax.servlet.http.HttpServletResponse httpServletResponse)
              throws javax.servlet.ServletException,
                     java.io.IOException
Process a Get Entry message

Parameters:
httpServletRequest - Request
httpServletResponse - Response
Throws:
javax.servlet.ServletException - If there is an error processing the request
java.io.IOException - If there is an error during I/O

doPost

protected void doPost(javax.servlet.http.HttpServletRequest httpServletRequest,
                      javax.servlet.http.HttpServletResponse httpServletResponse)
               throws javax.servlet.ServletException,
                      java.io.IOException
Handle a Post Entry request

Parameters:
httpServletRequest - Request
httpServletResponse - Response
Throws:
javax.servlet.ServletException - If there is an error processing the request
java.io.IOException - If there is an error during I/O

doPut

protected void doPut(javax.servlet.http.HttpServletRequest httpServletRequest,
                     javax.servlet.http.HttpServletResponse httpServletResponse)
              throws javax.servlet.ServletException,
                     java.io.IOException
Handle a Put Entry request

Parameters:
httpServletRequest - Request
httpServletResponse - Response
Throws:
javax.servlet.ServletException - If there is an error processing the request
java.io.IOException - If there is an error during I/O

handleSOAPRequest

protected void handleSOAPRequest(javax.servlet.http.HttpServletRequest httpServletRequest,
                                 javax.servlet.http.HttpServletResponse httpServletResponse)
Handle a given SOAP request looking for the "SOAPAction" header to decide on which method to execute

Parameters:
httpServletRequest - Request
httpServletResponse - Response

retrieveEntryBody

protected java.lang.String retrieveEntryBody(java.lang.String content)
Retrieve an entry body (<entry>...</entry>) from arbitrary content

Parameters:
content - Content
Returns:
Entry body with entry tags included or null if the entry body could not be found

readContentFromInputStream

protected java.lang.String readContentFromInputStream(java.io.InputStream is,
                                                      int length)
Read all the content from a given input stream for a specified length. Content will be read in using UTF-8 as the character encoding. If an exception in reading occurs, a null value is returned.

Parameters:
is - InputStream
length - Length of input stream to read
Returns:
Content from input stream up to specified length

handleSOAPPut

protected void handleSOAPPut(javax.servlet.http.HttpServletRequest httpServletRequest,
                             javax.servlet.http.HttpServletResponse httpServletResponse)
Handle a SOAP PUT request

Parameters:
httpServletRequest - Request
httpServletResponse - Response

destroy

public void destroy()
Called when removing the servlet from the servlet container

Specified by:
destroy in interface javax.servlet.Servlet