/*
* This file is part of "SnipSnap Radeox Rendering Engine".
*
* Copyright (c) 2002 Stephan J. Schmidt, Matthias L. Jugel
* All Rights Reserved.
*
* Please visit http://radeox.org/ for updates and contact.
*
* --LICENSE NOTICE--
* Licensed 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.
* --LICENSE NOTICE--
*/
package examples;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.picocontainer.PicoContainer;
import org.picocontainer.defaults.DefaultPicoContainer;
import org.radeox.api.engine.RenderEngine;
import org.radeox.api.engine.context.InitialRenderContext;
import org.radeox.api.engine.context.RenderContext;
import org.radeox.engine.BaseRenderEngine;
import org.radeox.engine.context.BaseRenderContext;
import org.radeox.engine.context.BaseInitialRenderContext;
import java.util.Locale;
import java.util.Enumeration;
import java.util.ResourceBundle;
/**
* Example which shows howto use Radeox with PicoContainer
*
* @author Stephan J. Schmidt
* @version $Id: PicoContainerExample.java 4158 2005-11-25 23:25:19Z ian@caret.cam.ac.uk $
*/
public class PicoContainerExample extends RadeoxTestSupport {
public PicoContainerExample(String name) {
super(name);
}
protected void setUp() throws Exception {
super.setUp();
}
public static Test suite() {
return new TestSuite(PicoContainerExample.class);
}
public void testPicoContainer() {
// cut:start-1
DefaultPicoContainer dc = new DefaultPicoContainer();
try {
// Register BaseRenderEngine as an Implementation
// of RenderEngine
dc.registerComponentImplementation(
RenderEngine.class,
BaseRenderEngine.class);
} catch (Exception e) {
System.err.println("Could not register component.");
}
// now only work with container
PicoContainer container = dc;
// Only ask for RenderEngine, we automatically
// get an available object
// that implements RenderEngine
RenderEngine engine = (RenderEngine)
container.getComponentInstance(RenderEngine.class);
RenderContext context = new BaseRenderContext();
String result = engine.render("__SnipSnap__", context);
// cut:end-1
assertEquals("Rendered with PicoContainer.", "<b class=\"bold\">SnipSnap</b>", result);
}
public void testPicoWithInitialRenderContext() {
// cut:start-2
DefaultPicoContainer dc = new DefaultPicoContainer();
try {
InitialRenderContext initialContext =
new BaseInitialRenderContext();
initialContext.set(RenderContext.OUTPUT_LOCALE,
new Locale("mywiki", "mywiki"));
dc.registerComponentInstance(InitialRenderContext.class,
initialContext);
dc.registerComponentImplementation(RenderEngine.class,
BaseRenderEngine.class);
} catch (Exception e) {
System.err.println("Could not register component.");
}
// cut:end-2
// now only work with container
PicoContainer container = dc;
// Only ask for RenderEngine, we automatically
// get an available object
// that implements RenderEngine
RenderEngine engine = (RenderEngine)
container.getComponentInstance(RenderEngine.class);
assertNotNull("Component found.", engine);
RenderContext context = new BaseRenderContext();
String result = engine.render("__SnipSnap__", context);
assertEquals("Rendered with PicoContainer and otherwiki Locale.",
"<b class=\"mybold\">SnipSnap</b>", result);
}
}