/**
* Copyright (c) 2003-2007, David A. Czarnecki
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of "David A. Czarnecki" and "blojsom" nor the names of its contributors may be used to
* endorse or promote products derived from this software without specific prior written permission.
* Products derived from this software may not be called "blojsom", nor may "blojsom" appear in their name,
* without prior written permission of David A. Czarnecki.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.blojsom.plugin.wiki;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.blojsom.blog.Blog;
import org.blojsom.blog.Entry;
import org.blojsom.plugin.Plugin;
import org.blojsom.plugin.PluginException;
import org.blojsom.util.BlojsomUtils;
import org.radeox.EngineManager;
import org.radeox.api.engine.RenderEngine;
import org.radeox.api.engine.context.RenderContext;
import org.radeox.engine.context.BaseRenderContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* WikiPlugin
*
* @author David Czarnecki
* @version $Id: WikiPlugin.java,v 1.2 2007/01/17 02:35:07 czarneckid Exp $
* @since blojsom 3.0
*/
public class WikiPlugin implements Plugin {
private Log _logger = LogFactory.getLog(WikiPlugin.class);
/**
* Entry extension of a Wiki post
*/
private static final String WIKI_EXTENSION = ".wiki";
/**
* MetaData Key to identify a Wiki post
*/
public static final String METADATA_RUN_WIKI = "run-wiki";
/**
* Initialize this plugin. This method only called when the plugin is instantiated.
*
* @throws PluginException If there is an error initializing the plugin
*/
public void init() throws PluginException {
}
/**
* Process the blog entries
*
* @param httpServletRequest Request
* @param httpServletResponse Response
* @param blog {@link Blog} instance
* @param context Context
* @param entries Blog entries retrieved for the particular request
* @return Modified set of blog entries
* @throws PluginException If there is an error processing the blog entries
*/
public Entry[] process(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Blog blog, Map context, Entry[] entries) throws PluginException {
RenderEngine engine = EngineManager.getInstance();
RenderContext renderContext = new BaseRenderContext();
for (int i = 0; i < entries.length; i++) {
Entry entry = entries[i];
if (entry.getPostSlug().endsWith(WIKI_EXTENSION) || BlojsomUtils.checkMapForKey(entry.getMetaData(), METADATA_RUN_WIKI)) {
if (_logger.isDebugEnabled()) {
_logger.debug("Wiki processing: " + entry.getId());
}
String description = entry.getDescription();
entry.setDescription(engine.render(description, renderContext));
}
}
return entries;
}
/**
* Perform any cleanup for the plugin. Called after {@link #process}.
*
* @throws PluginException If there is an error performing cleanup for this plugin
*/
public void cleanup() throws PluginException {
}
/**
* Called when BlojsomServlet is taken out of service
*
* @throws PluginException If there is an error in finalizing this plugin
*/
public void destroy() throws PluginException {
}
}
|