cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From reinh...@apache.org
Subject svn commit: r639645 [4/7] - in /cocoon/whiteboard/corona/trunk: ./ corona-core/ corona-core/src/ corona-core/src/main/ corona-core/src/main/java/ corona-core/src/main/java/org/ corona-core/src/main/java/org/apache/ corona-core/src/main/java/org/apache/...
Date Fri, 21 Mar 2008 13:55:20 GMT
Added: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/WildcardMatcherHelper.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/WildcardMatcherHelper.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/WildcardMatcherHelper.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/WildcardMatcherHelper.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,346 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.cocoon.corona.sitemap.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.sun.org.apache.regexp.internal.RE;
+import com.sun.org.apache.regexp.internal.RECompiler;
+import com.sun.org.apache.regexp.internal.REProgram;
+import com.sun.org.apache.regexp.internal.RESyntaxException;
+
+/**
+ * This class is an utility class that perform wildcard-patterns matching and
+ * isolation.
+ * 
+ * @version $Id$
+ */
+public class WildcardMatcherHelper {
+
+    // ~ Static fields/initializers
+    // -----------------------------------------------------------------
+
+    /** Default path separator: "/" */
+    public static final char ESC = '\\';
+
+    /** Default path separator: "/" */
+    public static final char PATHSEP = '/';
+
+    /** Default path separator: "/" */
+    public static final char STAR = '*';
+
+    // ~ Methods
+    // ------------------------------------------------------------------------------------
+
+    /**
+     * Match a pattern agains a string and isolates wildcard replacement into a
+     * <code>Map</code>. <br>
+     * Here is how the matching algorithm works:
+     * 
+     * <ul>
+     * <li> The '*' character, meaning that zero or more characters (excluding
+     * the path separator '/') are to be matched. </li>
+     * <li> The '**' sequence, meaning that zero or more characters (including
+     * the path separator '/') are to be matched. </li>
+     * <li> The '\*' sequence is honored as a literal '*' character, not a
+     * wildcard </li>
+     * </ul>
+     * <br>
+     * When more than two '*' characters, not separated by another character,
+     * are found their value is considered as '**' and immediate succeeding '*'
+     * are skipped. <br>
+     * The '**' wildcard is greedy and thus the following sample matches as
+     * {"foo/bar","baz","bug"}:
+     * <dl>
+     * <dt>pattern</dt>
+     * <dd>STAR,STAR,PATHSEP,STAR,PATHSEP,STAR,STAR (why can't I express it
+     * literally?)</dt>
+     * <dt>string</dt>
+     * <dd>foo/bar/baz/bug</dt>
+     * </dl>
+     * The first '**' in the pattern will suck up as much as possible without
+     * making the match fail.
+     * 
+     * @param pat
+     *            The pattern string.
+     * @param str
+     *            The string to math agains the pattern
+     * 
+     * @return a <code>Map</code> containing the representation of the
+     *         extracted pattern. The extracted patterns are keys in the
+     *         <code>Map</code> from left to right beginning with "1" for te
+     *         left most, "2" for the next, a.s.o. The key "0" is the string
+     *         itself. If the return value is null, string does not match to the
+     *         pattern .
+     */
+    public static Map<String, String> match(final String pat, final String str) {
+        Matcher matcher;
+        synchronized (cache) {
+            matcher = cache.get(pat);
+            if (matcher == null) {
+                matcher = new Matcher(pat);
+                cache.put(pat, matcher);
+            }
+        }
+
+        String[] list = matcher.getMatches(str);
+        if (list == null) {
+            return null;
+        }
+
+        int n = list.length;
+        Map<String, String> map = new HashMap<String, String>(n * 2 + 1);
+        for (int i = 0; i < n; i++) {
+            map.put(String.valueOf(i), list[i]);
+        }
+
+        return map;
+    }
+
+    /** Cache for compiled pattern matchers */
+    private static final Map<String, Matcher> cache = new HashMap<String, Matcher>();
+
+    // ~ Inner Classes
+    // ------------------------------------------------------------------------------
+
+    /**
+     * The private matcher class
+     */
+    private static class Matcher {
+
+        /**
+         * Regexp to split constant parts from front and back leaving wildcards
+         * in the middle.
+         */
+        private static final REProgram splitter;
+
+        static {
+            final String fixedRE = "([^*\\\\]*)";
+            final String wcardRE = "(.*[*\\\\])";
+            final String splitRE = "^" + fixedRE + wcardRE + fixedRE + "$";
+
+            try {
+                splitter = new RECompiler().compile(splitRE);
+            } catch (RESyntaxException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        /** Wildcard types to short-cut simple '*' and "**' matches. */
+        private static final int WC_CONST = 0;
+
+        private static final int WC_STAR = 1;
+
+        private static final int WC_STARSTAR = 2;
+
+        private static final int WC_REGEXP = 3;
+
+        // ~ Instance fields
+        // ------------------------------------------------------------------------
+
+        // All fields declared final to emphasize requirement to be thread-safe.
+
+        /** Fixed text at start of pattern. */
+        private final String prefix;
+
+        /** Fixed text at end of pattern. */
+        private final String suffix;
+
+        /** Length of prefix and suffix. */
+        private final int fixlen;
+
+        /** Wildcard type of pattern. */
+        private final int wctype;
+
+        /**
+         * Compiled regexp equivalent to wildcard pattern between prefix and
+         * suffix.
+         */
+        private final REProgram regexp;
+
+        // ~ Constructors
+        // ---------------------------------------------------------------------------
+
+        /**
+         * Creates a new Matcher object.
+         * 
+         * @param pat
+         *            The pattern
+         * @param str
+         *            The string
+         */
+        Matcher(final String pat) {
+            RE re = new RE(splitter);
+
+            if (re.match(pat)) {
+                // Split pattern into (foo/)(*)(/bar).
+                this.prefix = re.getParen(1);
+                String wildcard = re.getParen(2);
+                String tail = re.getParen(3);
+
+                // If wildcard ends with \ then add the first char of postfix to
+                // wildcard.
+                if (tail.length() != 0 && wildcard.charAt(wildcard.length() - 1) == ESC) {
+                    wildcard = wildcard + tail.substring(0, 1);
+                    this.suffix = tail.substring(1);
+                } else {
+                    this.suffix = tail;
+                }
+
+                // Use short-cuts for single * or ** wildcards
+                if (wildcard.equals("*")) {
+                    this.wctype = WC_STAR;
+                    this.regexp = null;
+                } else if (wildcard.equals("**")) {
+                    this.wctype = WC_STARSTAR;
+                    this.regexp = null;
+                } else {
+                    this.wctype = WC_REGEXP;
+                    this.regexp = compileRegexp(wildcard);
+                }
+            } else {
+                // Pattern is a constant without '*' or '\'.
+                this.prefix = pat;
+                this.suffix = "";
+                this.wctype = WC_CONST;
+                this.regexp = null;
+            }
+
+            this.fixlen = this.prefix.length() + this.suffix.length();
+        }
+
+        // ~ Methods
+        // --------------------------------------------------------------------------------
+
+        /**
+         * Match string against pattern.
+         * 
+         * @param str
+         *            The string
+         * @return list of wildcard matches, null if match failed
+         */
+        String[] getMatches(final String str) {
+            // Protect against 'foo' matching 'foo*foo'.
+            if (str.length() < this.fixlen) {
+                return null;
+            }
+
+            if (!str.startsWith(this.prefix)) {
+                return null;
+            }
+
+            if (!str.endsWith(this.suffix)) {
+                return null;
+            }
+
+            String infix = str.substring(this.prefix.length(), str.length() - this.suffix.length());
+
+            if (this.wctype == WC_REGEXP) {
+                RE re = new RE(this.regexp);
+                if (!re.match(infix)) {
+                    return null;
+                }
+
+                int n = re.getParenCount();
+                String[] list = new String[n];
+                list[0] = str;
+                for (int i = 1; i < n; i++) {
+                    list[i] = re.getParen(i);
+                }
+                return list;
+            }
+
+            if (this.wctype == WC_CONST) {
+                if (infix.length() != 0) {
+                    return null;
+                }
+                return new String[] { str };
+            }
+
+            if (this.wctype == WC_STAR) {
+                if (infix.indexOf(PATHSEP) != -1) {
+                    return null;
+                }
+            }
+
+            return new String[] { str, infix };
+        }
+    }
+
+    /**
+     * Compile wildcard pattern into regexp pattern.
+     * 
+     * @param pat
+     *            The wildcard pattern
+     * @return compiled regexp program.
+     */
+    static REProgram compileRegexp(String pat) {
+        StringBuffer repat = new StringBuffer(pat.length() * 6);
+        repat.append('^');
+
+        // Add an extra character to allow unchecked wcpat[i+1] accesses.
+        // Unterminated ESC sequences are silently handled as '\\'.
+        char[] wcpat = (pat + ESC).toCharArray();
+        for (int i = 0, n = pat.length(); i < n; i++) {
+            char ch = wcpat[i];
+
+            if (ch == STAR) {
+                if (wcpat[i + 1] != STAR) {
+                    repat.append("([^/]*)");
+                    continue;
+                }
+
+                // Handle two and more '*' as single '**'.
+                while (wcpat[i + 1] == STAR) {
+                    i++;
+                }
+                repat.append("(.*)");
+                continue;
+            }
+
+            // Match ESC+ESC and ESC+STAR as literal ESC and STAR which needs to
+            // be escaped
+            // in regexp. Match ESC+other as two characters ESC+other where
+            // other may also
+            // need to be escaped in regexp.
+            if (ch == ESC) {
+                ch = wcpat[++i];
+                if (ch != ESC && ch != STAR) {
+                    repat.append("\\\\");
+                }
+            }
+
+            if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' || ch >= '0' && ch <= '9' || ch == '/') {
+                repat.append(ch);
+                continue;
+            }
+
+            repat.append('\\');
+            repat.append(ch);
+        }
+        repat.append('$');
+
+        try {
+            return new RECompiler().compile(repat.toString());
+        } catch (RESyntaxException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/WildcardMatcherHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/WildcardMatcherHelper.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/WildcardMatcherHelper.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/applicationContext.xml
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/applicationContext.xml?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/applicationContext.xml (added)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/applicationContext.xml Fri Mar 21 06:54:32 2008
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+ -->
+<!-- $Id$ -->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+  <bean name="org.apache.cocoon.corona.sitemap.resource.ResourceResolver" class="org.apache.cocoon.corona.sitemap.resource.ClassPathResourceResolver" />
+
+  <bean name="org.apache.cocoon.corona.sitemap.ComponentProvider" class="org.apache.cocoon.corona.sitemap.ComponentProviderImpl">
+    <property name="actionFactory" ref="org.apache.cocoon.corona.pipeline.action.ActionFactory" />
+    <property name="languageInterpreterFactory" ref="org.apache.cocoon.corona.sitemap.expression.LanguageInterpreterFactory" />
+    <property name="pipelineComponentFactory" ref="org.apache.cocoon.corona.pipeline.component.PipelineComponentFactory" />
+    <property name="pipelineFactory" ref="org.apache.cocoon.corona.pipeline.PipelineFactory" />
+    <property name="resourceResolver" ref="org.apache.cocoon.corona.sitemap.resource.ResourceResolver" />
+  </bean>
+
+  <bean name="org.apache.cocoon.corona.sitemap.Invocation" class="org.apache.cocoon.corona.sitemap.InvocationImpl" scope="prototype">
+    <property name="componentProvider" ref="org.apache.cocoon.corona.sitemap.ComponentProvider" />
+  </bean>
+</beans>

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/applicationContext.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/applicationContext.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/applicationContext.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml (added)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml Fri Mar 21 06:54:32 2008
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+ -->
+<!-- $Id$ -->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+  <bean name="org.apache.cocoon.corona.sitemap.expression.LanguageInterpreterFactory"
+    class="org.apache.cocoon.corona.sitemap.expression.PrototypeLanguageInterpreterFactory" />
+
+  <bean name="expression-language:map" class="org.apache.cocoon.corona.sitemap.expression.SitemapLanguageInterpreter" />
+
+</beans>

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-expression-language.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-action.xml
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-action.xml?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-action.xml (added)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-action.xml Fri Mar 21 06:54:32 2008
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+ -->
+<!-- $Id$ -->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+  <!--
+    <bean name="org.apache.cocoon.corona.pipeline.action.ActionFactory"
+    class="org.apache.cocoon.corona.pipeline.action.ReflectionActionFactory">
+    <property name="types">
+    <map>
+    <entry key="error-throwing" value="org.apache.cocoon.corona.pipeline.action.ErrorThrowingAction" />
+    </map>
+    </property>
+    </bean>
+  -->
+
+  <bean name="org.apache.cocoon.corona.pipeline.action.ActionFactory"
+    class="org.apache.cocoon.corona.pipeline.action.PrototypeActionFactory">
+  </bean>
+
+  <bean name="action:error-throwing" class="org.apache.cocoon.corona.pipeline.action.ErrorThrowingAction" scope="prototype" />
+
+</beans>

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-action.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-action.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-action.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-component.xml
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-component.xml?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-component.xml (added)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-component.xml Fri Mar 21 06:54:32 2008
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+ -->
+<!-- $Id$ -->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+  <!--
+    <bean name="org.apache.cocoon.corona.pipeline.component.PipelineComponentFactory"
+    class="org.apache.cocoon.corona.pipeline.component.ReflectionPipelineComponentFactory">
+    <property name="types">
+    <map>
+    <entry key="redirector" value="org.apache.cocoon.corona.pipeline.component.RedirectorComponent" />
+    <entry key="generator:file" value="org.apache.cocoon.corona.pipeline.component.FileGenerator" />
+    <entry key="serializer:xml" value="org.apache.cocoon.corona.pipeline.component.XMLSerializer" />
+    <entry key="reader:file" value="org.apache.cocoon.corona.pipeline.component.FileReaderComponent" />
+    </map>
+    </property>
+    </bean>
+  -->
+
+  <bean name="org.apache.cocoon.corona.pipeline.component.PipelineComponentFactory"
+    class="org.apache.cocoon.corona.pipeline.component.PrototypePipelineComponentFactory">
+  </bean>
+
+  <bean name="serializer:xhtml" class="org.apache.cocoon.corona.pipeline.component.XMLSerializer" scope="prototype">
+    <property name="format">
+      <props>
+        <prop key="doctype-public">-//W3C//DTD XHTML 1.0 Strict//EN</prop>
+        <prop key="doctype-system">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</prop>
+        <prop key="encoding">UTF-8</prop>
+      </props>
+    </property>
+  </bean>
+
+  <bean name="serializer:xml" class="org.apache.cocoon.corona.pipeline.component.XMLSerializer" scope="prototype" />
+
+  <bean name="generator:file" class="org.apache.cocoon.corona.pipeline.component.FileGenerator" scope="prototype" />
+
+  <bean name="generator:request-parameters" class="org.apache.cocoon.corona.pipeline.component.RequestParametersGenerator" scope="prototype" />
+
+  <bean name="reader:file" class="org.apache.cocoon.corona.pipeline.component.FileReaderComponent" scope="prototype" />
+
+  <bean name="redirector" class="org.apache.cocoon.corona.pipeline.component.RedirectorComponent" scope="prototype" />
+
+</beans>

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-component.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-component.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline-component.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline.xml
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline.xml?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline.xml (added)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline.xml Fri Mar 21 06:54:32 2008
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+ -->
+<!-- $Id$ -->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+  <!--
+    <bean name="org.apache.cocoon.corona.pipeline.PipelineFactory" class="org.apache.cocoon.corona.pipeline.ReflectionPipelineFactory">
+    <property name="types">
+    <map>
+    <entry key="pipeline:caching" value="org.apache.cocoon.corona.pipeline.CachingPipeline" />
+    <entry key="pipeline:noncaching" value="org.apache.cocoon.corona.pipeline.NonCachingPipeline" />
+    </map>
+    </property>
+    </bean>
+  -->
+
+  <bean name="org.apache.cocoon.corona.pipeline.PipelineFactory" class="org.apache.cocoon.corona.pipeline.PrototypePipelineFactory" />
+
+  <bean name="pipeline:caching" class="org.apache.cocoon.corona.pipeline.CachingPipeline" scope="prototype" />
+
+  <bean name="pipeline:noncaching" class="org.apache.cocoon.corona.pipeline.NonCachingPipeline" scope="prototype" />
+
+</beans>

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-pipeline.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-sitemap-node.xml
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-sitemap-node.xml?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-sitemap-node.xml (added)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-sitemap-node.xml Fri Mar 21 06:54:32 2008
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+ -->
+<!-- $Id$ -->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+  <bean name="org.apache.cocoon.corona.sitemap.SitemapBuilder" class="org.apache.cocoon.corona.sitemap.SitemapBuilder">
+    <property name="sitemapNodeFactory" ref="org.apache.cocoon.corona.sitemap.node.SitemapNodeFactory" />
+  </bean>
+
+  <bean name="org.apache.cocoon.corona.sitemap.node.SitemapNodeFactory" class="org.apache.cocoon.corona.sitemap.node.SitemapNodeFactory">
+    <property name="types">
+      <map>
+        <entry key="sitemap" value="org.apache.cocoon.corona.sitemap.node.Sitemap" />
+        <entry key="flow" value="org.apache.cocoon.corona.sitemap.node.FlowNode" />
+        <entry key="pipelines" value="org.apache.cocoon.corona.sitemap.node.PipelinesNode" />
+        <entry key="pipeline" value="org.apache.cocoon.corona.sitemap.node.PipelineNode" />
+        <entry key="match" value="org.apache.cocoon.corona.sitemap.node.MatchNode" />
+        <entry key="read" value="org.apache.cocoon.corona.sitemap.node.ReadNode" />
+        <entry key="generate" value="org.apache.cocoon.corona.sitemap.node.GenerateNode" />
+        <entry key="transform" value="org.apache.cocoon.corona.sitemap.node.TransformNode" />
+        <entry key="parameter" value="org.apache.cocoon.corona.sitemap.node.ParameterNode" />
+        <entry key="serialize" value="org.apache.cocoon.corona.sitemap.node.SerializeNode" />
+        <entry key="call" value="org.apache.cocoon.corona.sitemap.node.CallNode" />
+        <entry key="redirect-to" value="org.apache.cocoon.corona.sitemap.node.RedirectNode" />
+        <entry key="act" value="org.apache.cocoon.corona.sitemap.node.ActNode" />
+        <entry key="handle-errors" value="org.apache.cocoon.corona.sitemap.node.ErrorNode" />
+        <entry key="select" value="org.apache.cocoon.corona.sitemap.node.SelectNode" />
+        <entry key="when" value="org.apache.cocoon.corona.sitemap.node.WhenNode" />
+        <entry key="otherwise" value="org.apache.cocoon.corona.sitemap.node.OtherwiseNode" />
+      </map>
+    </property>
+  </bean>
+</beans>

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-sitemap-node.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-sitemap-node.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/main/resources/META-INF/cocoon/spring/corona-sitemap-node.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.cocoon.corona.pipeline;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.apache.cocoon.corona.pipeline.component.FileReaderComponent;
+import org.apache.cocoon.corona.sitemap.ComponentProviderImpl;
+import org.apache.cocoon.corona.sitemap.InvocationImpl;
+import org.apache.cocoon.corona.sitemap.resource.ClassPathResourceResolver;
+
+public class PipelineTest extends TestCase {
+
+    /**
+     * Demonstration of how to use the pipeline API. Currently it hasn't been
+     * optimized for this purpose though!
+     */
+    public void testPipeline() throws Exception {
+        Pipeline pipeline = new NonCachingPipeline();
+
+        FileReaderComponent fileReaderComponent = new FileReaderComponent();
+        Map<String, Object> parameters = new HashMap<String, Object>();
+        parameters.put("src", "/META-INF/cocoon/spring/applicationContext.xml");
+        fileReaderComponent.setParameters(parameters);
+        pipeline.addComponent(fileReaderComponent);
+
+        InvocationImpl invocationImpl = new InvocationImpl();
+        invocationImpl.setOutputStream(System.out);
+
+        ComponentProviderImpl componentProviderImpl = new ComponentProviderImpl();
+        componentProviderImpl.setResourceResolver(new ClassPathResourceResolver());
+        invocationImpl.setComponentProvider(componentProviderImpl);
+
+        pipeline.execute(invocationImpl);
+    }
+
+}

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-servlet/pom.xml
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/pom.xml?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/pom.xml (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/pom.xml Fri Mar 21 06:54:32 2008
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+ -->
+<!-- $Id$ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+  <packaging>jar</packaging>
+
+  <parent>
+    <groupId>org.apache.cocoon</groupId>
+    <artifactId>corona-parent</artifactId>
+    <version>1-SNAPSHOT</version>
+    <relativePath>../parent/pom.xml</relativePath>
+  </parent>
+
+  <artifactId>corona-servlet</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <name>Cocoon Corona: Servlet [jar]</name>
+  <description>Using Cocoon Corona within the Servlet Service framework.</description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.cocoon</groupId>
+      <artifactId>corona-core</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.cocoon</groupId>
+      <artifactId>cocoon-servlet-service-impl</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.excalibur.components</groupId>
+          <artifactId>excalibur-sourceresolve</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cocoon</groupId>
+      <artifactId>cocoon-spring-configurator</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+    </dependency>
+
+    <!-- Excalibur dependencies (Source Resolving) -->
+    <!-- tbd -->
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.cocoon</groupId>
+        <artifactId>cocoon-maven-plugin</artifactId>
+        <configuration>
+          <webappProfile>ssf</webappProfile>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.mortbay.jetty</groupId>
+        <artifactId>maven-jetty-plugin</artifactId>
+        <configuration>
+          <connectors>
+            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+              <port>8888</port>
+              <maxIdleTime>30000</maxIdleTime>
+            </connector>
+          </connectors>
+          <webAppSourceDirectory>${project.build.directory}/rcl/webapp</webAppSourceDirectory>
+          <contextPath>/</contextPath>
+          <systemProperties>
+            <systemProperty>
+              <name>org.apache.cocoon.mode</name>
+              <value>dev</value>
+            </systemProperty>
+          </systemProperties>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifestEntries>
+              <Cocoon-Block-Name>${pom.artifactId}</Cocoon-Block-Name>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cocoon/whiteboard/corona/trunk/corona-servlet/rcl.properties
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/rcl.properties?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/rcl.properties (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/rcl.properties Fri Mar 21 06:54:32 2008
@@ -0,0 +1,21 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#
+org.apache.cocoon.corona.demo.servlet%classes-dir=./target/classes
+
+# Cocoon Corona Core
+%classes-dir=../corona-core/target/classes
+%exclude-lib=org.apache.cocoon:corona-core
\ No newline at end of file

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/rcl.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/rcl.properties
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/rcl.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.cocoon.corona.servlet;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.cocoon.corona.sitemap.Invocation;
+import org.apache.cocoon.corona.sitemap.InvocationImpl;
+import org.apache.cocoon.corona.sitemap.SitemapBuilder;
+import org.apache.cocoon.corona.sitemap.node.Sitemap;
+import org.apache.cocoon.corona.sitemap.util.HttpContextHelper;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
+
+public class SitemapServlet extends HttpServlet implements BeanFactoryAware {
+
+    private static final long serialVersionUID = 1L;
+
+    private Sitemap sitemap;
+
+    private BeanFactory beanFactory;
+
+    @Override
+    public void init(ServletConfig servletConfig) throws ServletException {
+        super.init(servletConfig);
+
+        try {
+            SitemapBuilder sitemapBuilder = (SitemapBuilder) this.beanFactory.getBean(SitemapBuilder.class.getName());
+            URL url = servletConfig.getServletContext().getResource("/sitemap.xmap");
+            this.sitemap = sitemapBuilder.build(url);
+        } catch (Exception e) {
+            throw new ServletException(e);
+        }
+    }
+
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        try {
+            InvocationImpl invocation = (InvocationImpl) this.beanFactory.getBean(Invocation.class.getName());
+            // parameters
+            invocation.setParameters(this.getInvocationParameters(request));
+            HttpContextHelper.storeRequest(request, invocation);
+            HttpContextHelper.storeResponse(response, invocation);
+
+            // request
+            invocation.setRequest(request.getRequestURI());
+            // output stream
+            invocation.setOutputStream(response.getOutputStream());
+
+            this.sitemap.invoke(invocation);
+        } catch (Exception e) {
+            PrintWriter writer = new PrintWriter(response.getOutputStream());
+            e.printStackTrace(writer);
+            writer.close();
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    private Map<String, Object> getInvocationParameters(HttpServletRequest req) {
+        Map<String, Object> invocationParameters = new HashMap<String, Object>();
+
+        for (Enumeration<String> names = req.getParameterNames(); names.hasMoreElements();) {
+            String name = names.nextElement();
+            invocationParameters.put(name, req.getParameter(name));
+        }
+
+        return invocationParameters;
+    }
+
+    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
+        this.beanFactory = beanFactory;
+    }
+}

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableSource.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableSource.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableSource.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableSource.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.excalibur.source;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * A {@link Source} that can be written to.
+ * <p>
+ * As far a possible, implementations should provide a kind of transaction or
+ * buffering of data written to the source. This is especially important in
+ * stream-based systems such as Cocoon where an error that occurs during the
+ * processing should lead to cancelling data written to the source.
+ * <p>
+ * This is the role of the {@link #canCancel(OutputStream)} and
+ * {@link #cancel(OutputStream)} methods.
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Id$
+ */
+public interface ModifiableSource
+    extends Source
+{
+    /**
+     * Return an {@link OutputStream} to write to.
+     *
+     * The returned stream must be closed or cancelled by the calling code.
+     */
+    OutputStream getOutputStream() throws IOException;
+
+    /**
+     * Delete the source
+     */
+    void delete() throws SourceException;
+
+    /**
+     * Can the data sent to an <code>OutputStream</code> returned by
+     * {@link #getOutputStream()} be cancelled ?
+     *
+     * @return true if the stream can be cancelled
+     */
+    boolean canCancel(OutputStream stream);
+
+    /**
+     * Cancel the data sent to an <code>OutputStream</code> returned by
+     * {@link #getOutputStream()}.  Cancelling the stream will also close it.
+     *
+     * <p>After cancelling, the stream should no longer be used.</p>
+     */
+    void cancel(OutputStream stream) throws IOException;
+
+}

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableSource.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableSource.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableTraversableSource.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableTraversableSource.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableTraversableSource.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableTraversableSource.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.excalibur.source;
+
+/**
+ * A modifiable traversable source. This adds to {@link ModifiableSource} the
+ * ability to create a directory.
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Id$
+ */
+public interface ModifiableTraversableSource extends ModifiableSource, TraversableSource
+{
+    /**
+     * If it doesn't already exist, ensure this source is traversable
+     * (equivalent to <code>File.mkdirs()</code>)
+     * <p>
+     * If the source already exists, this method does nothing if it's already
+     * traversable, and fails otherwise.
+     */
+    void makeCollection() throws SourceException;
+
+}
+
+

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableTraversableSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableTraversableSource.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/ModifiableTraversableSource.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/MoveableSource.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/MoveableSource.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/MoveableSource.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/MoveableSource.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.excalibur.source;
+
+
+/**
+ * This class marks a source to be able to moved and copied to
+ * serveral other locations. This class should only be used if
+ * the implementations details should be hidden, otherwise
+ * the class SourceUtils can be used.
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Id$
+ */
+public interface MoveableSource extends Source
+{
+
+    /**
+     * Copy the current source to a specified destination.
+     *
+     * @param destination Destination of the source.
+     *
+     * @throws SourceException If an exception occurs during
+     *                         the copy.
+     */
+    void copyTo(Source destination) throws SourceException;
+
+    /**
+     * Move the current source to a specified destination.
+     *
+     * @param destination Destination of the source.
+     *
+     * @throws SourceException If an exception occurs during
+     *                         the move.
+     */
+    void moveTo(Source destination) throws SourceException;
+}

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/MoveableSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/MoveableSource.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/MoveableSource.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/Source.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/Source.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/Source.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/Source.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,149 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.excalibur.source;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * This interface provides a simple interface for accessing a source of data.
+ * <p>
+ * When the <code>Source</code> object is no longer needed
+ * it must be released using the {@link SourceResolver}. This is very similar to
+ * looking up components from a <code>ServiceSelector</code>.
+ * In fact a source object can implement most lifecycle interfaces
+ * like Composable, Initializable, Disposable etc.
+ * <p>
+ * The data content can be constant or change over time.
+ * Using the {@link #getInputStream()} method you get always the up-to-date content.
+ * <p>
+ * If you want to track changes of the source object, this interface
+ * offers you some support for it by providing a SourceValidity object.
+ * <p>
+ * How does the caching work?
+ * The first time you get a Source object, you simply ask
+ * it for it's content via getInputStream() and then get the validity
+ * object by invoking getValidity. (Further calls to getValidity always
+ * return the same object! This is not updated!)
+ * The caching algorithm can now store this validity object together
+ * with the system identifier of the source.
+ * The next time, the caching algorithm wants to check if the cached
+ * content is still valid. It has a validity object already to check
+ * against.
+ * <p>
+ * If it is still the same Source than the first time, you
+ * have to call refresh() in order to discard the stored validity
+ * in the Source object. If it is a new Source object,
+ * calling refresh() should do no harm.
+ * After that an up-to-date validity object can retrieved by calling
+ * getValidity(). This can be used to test if the content is still valid
+ * as described in the source validity documentation.
+ * If the content is still valid, the cache knows what to do, if not,
+ * the new content can be obtained using getInputStream().
+ * So either after a call to getValidity() or the getInputStream() the
+ * validity object must be the same until refresh is called!
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Id$
+ */
+public interface Source
+{
+    /**
+     * Does this source exist ?
+     *
+     * @return true if the source exists
+     */
+    boolean exists();
+
+    /**
+     * Return an <code>InputStream</code> to read from the source.
+     * This is the data at the point of invocation of this method,
+     * so if this is Modifiable, you might get different content
+     * from two different invocations.
+     *
+     * The returned stream must be closed by the calling code.
+     *
+     * @return the <code>InputStream</code> to read data from (never <code>null</code>).
+     * @throws IOException if some I/O problem occurs.
+     * @throws SourceNotFoundException if the source doesn't exist.
+     */
+    InputStream getInputStream()
+        throws IOException, SourceNotFoundException;
+
+    /**
+     * Get the absolute URI for this source.
+     *
+     * @return the source URI.
+     */
+    String getURI();
+
+    /**
+     * Return the URI scheme identifier, i.e. the part preceding the fist ':' in the URI
+     * (see <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>).
+     * <p>
+     * This scheme can be used to get the {@link SourceFactory} responsible for this object.
+     *
+     * @return the URI scheme.
+     */
+    String getScheme();
+
+    /**
+     * Get the Validity object. This can either wrap the last modification date or
+     * some expiry information or anything else describing this object's validity.
+     * <p>
+     * If it is currently not possible to calculate such an information,
+     * <code>null</code> is returned.
+     *
+     * @return the validity, or <code>null</code>.
+     */
+    SourceValidity getValidity();
+
+    /**
+     * Refresh the content of this object after the underlying data content has changed.
+     * <p>
+     * Some implementations may cache some values to speedup sucessive calls. Refreshing
+     * ensures you get the latest information.
+     */
+    void refresh();
+
+    /**
+     * Get the mime-type of the content described by this object.
+     * If the source is not able to determine the mime-type by itself
+     * this can be <code>null</code>.
+     *
+     * @return the source's mime-type or <code>null</code>.
+     */
+    String getMimeType();
+
+    /**
+     * Get the content length of this source's content or -1 if the length is
+     * unknown.
+     *
+     * @return the source's content length or -1.
+     */
+    long getContentLength();
+
+    /**
+     * Get the last modification date of this source. The date is
+     * measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970),
+     * and is <code>0</code> if it's unknown.
+     *
+     * @return the last modification date or <code>0</code>.
+     */
+    long getLastModified();
+
+}

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/Source.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/Source.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/Source.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceException.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceException.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceException.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceException.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.excalibur.source;
+
+import java.io.IOException;
+
+/**
+ * This Exception is thrown every time there is a problem in processing
+ * a source.
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Id$
+ */
+public class SourceException
+    extends IOException
+{
+    /**
+     * Construct a new <code>SourceException</code> instance.
+     *
+     * @param message the detail message for this exception.
+     */
+    public SourceException( final String message )
+    {
+        this( message, null );
+    }
+
+    /**
+     * Construct a new <code>SourceException</code> instance.
+     *
+     * @param message the detail message for this exception.
+     * @param throwable the root cause of the exception.
+     */
+    public SourceException( final String message, final Throwable throwable )
+    {
+        super( message  );
+        this.initCause(throwable);
+    }
+}

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceException.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceException.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceFactory.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceFactory.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceFactory.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceFactory.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.excalibur.source;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.Map;
+
+/**
+ * A source factory creates new source objects.
+ * <p>
+ * Source factories are used to extend the source resolving mechanism
+ * with new URI schemes. A new source factory is added in order to
+ * handle a specific prototol. The {@link SourceResolver} delegates
+ * the handling of a URI containing this new scheme to the factory,
+ * and the factory can create a corresponding {@link Source} object.
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Id$
+ */
+public interface SourceFactory
+{
+    String ROLE = SourceFactory.class.getName();
+
+    /**
+     * Get a {@link Source} object.
+     * The factory creates a new {@link Source} object that can be used
+     * by the application. However, when this source object is not needed
+     * anymore it has to be released again using the {@link #release(Source)}
+     * method. This is achieved by using {@link SourceResolver#release(Source)} which
+     * finds the appropriate <code>SourceFactory</code>.
+     *
+     * @param location   The URI to resolve - this URI includes the scheme.
+     * @param parameters additionnal named parameters (optionnal and can be <code>null</code>)
+     *        that drive the creation of the <code>Source</code> object. Each implementation
+     *        must specify what parameters it accepts.
+     * @return the created source object.
+     *
+     * @throws IOException if the source couldn't be created for some reason.
+     */
+    Source getSource( String location, Map parameters )
+        throws IOException, MalformedURLException;
+
+    /**
+     * Release a {@link Source} object.
+     *
+     * @param source the source to release.
+     */
+    void release( Source source );
+}

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceFactory.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceNotFoundException.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceNotFoundException.java?rev=639645&view=auto
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceNotFoundException.java (added)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceNotFoundException.java Fri Mar 21 06:54:32 2008
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.excalibur.source;
+
+/**
+ * This Exception should be thrown if the source could not be found.
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Id$
+ */
+public class SourceNotFoundException
+    extends SourceException
+{
+    /**
+     * Construct a new <code>SourceNotFoundException</code> instance.
+     *
+     * @param message The detail message for this exception.
+     */
+    public SourceNotFoundException( final String message )
+    {
+        super( message, null );
+    }
+
+    /**
+     * Construct a new <code>SourceNotFoundException</code> instance.
+     *
+     * @param message The detail message for this exception.
+     * @param throwable the root cause of the exception
+     */
+    public SourceNotFoundException( final String message, final Throwable throwable )
+    {
+        super( message, throwable );
+    }
+}

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceNotFoundException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceNotFoundException.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/excalibur/source/SourceNotFoundException.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message