You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ug...@apache.org on 2004/09/03 16:00:26 UTC
svn commit: rev 37472 - cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon
Author: ugo
Date: Fri Sep 3 07:00:26 2004
New Revision: 37472
Modified:
cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/SitemapComponentTestCase.java
Log:
Sync with trunk
Modified: cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/SitemapComponentTestCase.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/SitemapComponentTestCase.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/test/org/apache/cocoon/SitemapComponentTestCase.java Fri Sep 3 07:00:26 2004
@@ -17,9 +17,11 @@
package org.apache.cocoon;
import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import javax.xml.transform.TransformerException;
@@ -31,8 +33,13 @@
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentSelector;
+import org.apache.avalon.framework.context.DefaultContext;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.acting.Action;
+import org.apache.cocoon.components.ContextHelper;
+import org.apache.cocoon.components.flow.AbstractInterpreter;
+import org.apache.cocoon.components.flow.FlowHelper;
+import org.apache.cocoon.components.flow.Interpreter;
import org.apache.cocoon.components.source.SourceResolverAdapter;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.mock.MockContext;
@@ -41,9 +48,9 @@
import org.apache.cocoon.environment.mock.MockResponse;
import org.apache.cocoon.generation.Generator;
import org.apache.cocoon.matching.Matcher;
-import org.apache.cocoon.transformation.Transformer;
import org.apache.cocoon.serialization.Serializer;
import org.apache.cocoon.sitemap.PatternException;
+import org.apache.cocoon.transformation.Transformer;
import org.apache.cocoon.xml.WhitespaceFilter;
import org.apache.cocoon.xml.dom.DOMBuilder;
import org.apache.cocoon.xml.dom.DOMStreamer;
@@ -60,7 +67,7 @@
*
* @author <a href="mailto:stephan@apache.org">Stephan Michels</a>
* @author <a href="mailto:mark.leicester@energyintellect.com">Mark Leicester</a>
- * @version CVS $Id: SitemapComponentTestCase.java,v 1.5 2004/03/05 13:03:02 bdelacretaz Exp $
+ * @version CVS $Id$
*/
public abstract class SitemapComponentTestCase extends ExcaliburTestCase
{
@@ -70,7 +77,7 @@
private MockResponse response = new MockResponse();
private MockContext context = new MockContext();
private MockRedirector redirector = new MockRedirector();
- private HashMap objectmodel = new HashMap();
+ private Map objectmodel = new HashMap();
/**
* Create a new composite test case.
@@ -100,6 +107,12 @@
public final Map getObjectModel() {
return objectmodel;
}
+
+ protected void addContext(DefaultContext context) {
+ context.put(ContextHelper.CONTEXT_REQUEST_OBJECT, request);
+ context.put(ContextHelper.CONTEXT_RESPONSE_OBJECT, response);
+ context.put(ContextHelper.CONTEXT_OBJECT_MODEL, objectmodel);
+ }
public void setUp() {
objectmodel.clear();
@@ -156,7 +169,49 @@
}
return result;
}
-
+
+ /**
+ * Select with a pattern.
+ *
+ * @param type Hint of the matcher.
+ * @param expression Expression for the selector.
+ * @param parameters Matcher parameters.
+ */
+ public final boolean select(String type, String expression, Parameters parameters) {
+
+ ComponentSelector selector = null;
+ org.apache.cocoon.selection.Selector sel = null;
+ SourceResolver resolver = null;
+
+ boolean result = false;
+ try {
+ selector = (ComponentSelector) this.manager.lookup(org.apache.cocoon.selection.Selector.ROLE +
+ "Selector");
+ assertNotNull("Test lookup of selector selector", selector);
+
+ resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
+ assertNotNull("Test lookup of source resolver", resolver);
+
+ assertNotNull("Test if selector name is not null", type);
+ sel = (org.apache.cocoon.selection.Selector) selector.select(type);
+ assertNotNull("Test lookup of selector", sel);
+
+
+ result = sel.select(expression, objectmodel, parameters);
+
+ } catch (ComponentException ce) {
+ getLogger().error("Could not retrieve selector", ce);
+ fail("Could not retrieve selector: " + ce.toString());
+ } finally {
+ if (sel != null) {
+ selector.release(sel);
+ }
+ this.manager.release(selector);
+ this.manager.release(resolver);
+ }
+ return result;
+ }
+
/**
* Perform the action component.
*
@@ -165,6 +220,8 @@
* @param parameters Action parameters.
*/
public final Map act(String type, String source, Parameters parameters) throws Exception {
+
+ redirector.reset();
ComponentSelector selector = null;
Action action = null;
@@ -312,20 +369,25 @@
ce.printStackTrace();
fail("Could not retrieve transformer:"+ce.toString());
} finally {
- if (transformer!=null)
+ if (transformer!=null) {
selector.release(transformer);
+ }
- if (selector!=null)
+ if (selector!=null) {
this.manager.release(selector);
+ }
- if (inputsource!=null)
+ if (inputsource!=null) {
resolver.release(inputsource);
+ }
- if (resolver!=null)
+ if (resolver!=null) {
this.manager.release(resolver);
+ }
- if (parser!=null)
+ if (parser!=null) {
this.manager.release((Component) parser);
+ }
}
return document;
@@ -393,6 +455,96 @@
}
return document.toByteArray();
+ }
+
+ public String callFunction(String type, String source, String function, Map params) throws Exception {
+
+ redirector.reset();
+
+ ComponentSelector selector = null;
+ Interpreter interpreter = null;
+ SourceResolver resolver = null;
+
+ try {
+ selector = (ComponentSelector) this.manager.lookup(Interpreter.ROLE);
+ assertNotNull("Test lookup of interpreter selector", selector);
+
+ resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
+ assertNotNull("Test lookup of source resolver", resolver);
+
+ assertNotNull("Test if interpreter name is not null", type);
+ interpreter = (Interpreter) selector.select(type);
+ assertNotNull("Test lookup of interpreter", interpreter);
+
+ ((AbstractInterpreter)interpreter).register(source);
+
+ ArrayList parameters = new ArrayList();
+ for (Iterator i = params.keySet().iterator(); i.hasNext();) {
+ String name = (String)i.next();
+ String value = (String)params.get(name);
+ parameters.add(new Interpreter.Argument(name, value));
+ }
+
+ interpreter.callFunction(function, parameters, getRedirector());
+
+ } catch (ComponentException ce) {
+ getLogger().error("Could not retrieve interpeter", ce);
+ fail("Could not retrieve interpreter: " + ce.toString());
+ } finally {
+ if (interpreter != null) {
+ selector.release((Component) interpreter);
+ }
+ this.manager.release(selector);
+ this.manager.release(resolver);
+ }
+ return FlowHelper.getWebContinuation(getObjectModel()).getId();
+ }
+
+ public String callContinuation(String type, String source, String id, Map params) throws Exception {
+
+ redirector.reset();
+
+ ComponentSelector selector = null;
+ Interpreter interpreter = null;
+ SourceResolver resolver = null;
+
+ try {
+ selector = (ComponentSelector) this.manager.lookup(Interpreter.ROLE);
+ assertNotNull("Test lookup of interpreter selector", selector);
+
+ resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
+ assertNotNull("Test lookup of source resolver", resolver);
+
+ assertNotNull("Test if interpreter name is not null", type);
+ interpreter = (Interpreter) selector.select(type);
+ assertNotNull("Test lookup of interpreter", interpreter);
+
+ ((AbstractInterpreter)interpreter).register(source);
+
+ ArrayList parameters = new ArrayList();
+ for (Iterator i = params.keySet().iterator(); i.hasNext();) {
+ String name = (String)i.next();
+ String value = (String)params.get(name);
+ parameters.add(new Interpreter.Argument(name, value));
+ }
+
+ interpreter.handleContinuation(id, parameters, getRedirector());
+
+ } catch (ComponentException ce) {
+ getLogger().error("Could not retrieve interpreter", ce);
+ fail("Could not retrieve interpreter: " + ce.toString());
+ } finally {
+ if (interpreter != null) {
+ selector.release((Component) interpreter);
+ }
+ this.manager.release(selector);
+ this.manager.release(resolver);
+ }
+ return FlowHelper.getWebContinuation(getObjectModel()).getId();
+ }
+
+ public Object getFlowContextObject() {
+ return FlowHelper.getContextObject(getObjectModel());
}
public final void print(Document document) {