001: /*
002: * This file is part of "SnipSnap Radeox Rendering Engine".
003: *
004: * Copyright (c) 2002 Stephan J. Schmidt, Matthias L. Jugel
005: * All Rights Reserved.
006: *
007: * Please visit http://radeox.org/ for updates and contact.
008: *
009: * --LICENSE NOTICE--
010: * Licensed under the Apache License, Version 2.0 (the "License");
011: * you may not use this file except in compliance with the License.
012: * You may obtain a copy of the License at
013: *
014: * http://www.apache.org/licenses/LICENSE-2.0
015: *
016: * Unless required by applicable law or agreed to in writing, software
017: * distributed under the License is distributed on an "AS IS" BASIS,
018: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
019: * See the License for the specific language governing permissions and
020: * limitations under the License.
021: * --LICENSE NOTICE--
022: */
023:
024: package org.radeox.api.engine;
025:
026: import java.io.IOException;
027: import java.io.Reader;
028: import java.io.Writer;
029:
030: import org.radeox.api.engine.context.RenderContext;
031: import org.radeox.api.macro.Macro;
032:
033: /**
034: * Interface for RenderEngines. A RenderEngine renders a input string to an
035: * output string with the help of filters.
036: *
037: * @author Stephan J. Schmidt
038: * @version $Id: RenderEngine.java 29159 2007-04-19 01:46:15Z ajpoland@iupui.edu $
039: */
040:
041: public interface RenderEngine {
042: /**
043: * Name of the RenderEngine. This is used to get a RenderEngine instance
044: * with EngineManager.getInstance(name);
045: *
046: * @return name Name of the engine
047: */
048: public String getName();
049:
050: /**
051: * Render an input with text markup and return a String with e.g. HTML
052: *
053: * @param content
054: * String with the input to render
055: * @param context
056: * Special context for the render engine, e.g. with configuration
057: * information
058: * @return result Output with rendered content
059: */
060: public String render(String content, RenderContext context);
061:
062: /**
063: * Render an input with text markup and an write the result e.g. HTML to a
064: * writer
065: *
066: * @param out
067: * Writer to write the output to
068: * @param content
069: * String with the input to render
070: * @param context
071: * Special context for the render engine, e.g. with configuration
072: * information
073: */
074:
075: public void render(Writer out, String content, RenderContext context)
076: throws IOException;
077:
078: /**
079: * Render an input with text markup from a Reader and write the result to a
080: * writer
081: *
082: * @param in
083: * Reader to read the input from
084: * @param context
085: * Special context for the render engine, e.g. with configuration
086: * information
087: */
088: public String render(Reader in, RenderContext context)
089: throws IOException;
090:
091: /**
092: * Add a macro to the render engine, this can be performed from a component or a webapp and will
093: * be keyed on its name. If the webapp is reloaded, the macro will be replaced. When a webapp is unloaded
094: * it will be removed from the engine.
095: * @param macro
096: */
097: void addMacro(Macro macro);
098:
099: // public void render(Writer out, Reader in, RenderContext context);
100: }
|