You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by st...@apache.org on 2004/02/02 12:25:57 UTC

cvs commit: cocoon-2.1/src/test/org/apache/cocoon/matching WildcardURIMatcherTestCase.java WildcardURIMatcherTestCase.xtest

stephan     2004/02/02 03:25:57

  Modified:    src/test/org/apache/cocoon SitemapComponentTestCase.java
  Added:       src/test/org/apache/cocoon/matching
                        WildcardURIMatcherTestCase.java
                        WildcardURIMatcherTestCase.xtest
  Log:
  Add test method for Matchers, and example for the WildcardURIMatcher.
  Thanks to Wojciech Gdela, see
  http://nagoya.apache.org/bugzilla/show_bug.cgi?id=26441
  
  Revision  Changes    Path
  1.3       +46 -1     cocoon-2.1/src/test/org/apache/cocoon/SitemapComponentTestCase.java
  
  Index: SitemapComponentTestCase.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/test/org/apache/cocoon/SitemapComponentTestCase.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SitemapComponentTestCase.java	23 Dec 2003 15:28:33 -0000	1.2
  +++ SitemapComponentTestCase.java	2 Feb 2004 11:25:57 -0000	1.3
  @@ -75,6 +75,7 @@
   import org.apache.cocoon.environment.mock.MockRequest;
   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.xml.WhitespaceFilter;
  @@ -149,6 +150,50 @@
           redirector.reset();
       }
   
  +    /**
  +     * Match with a pattern.
  +     *
  +     * @param type Hint of the matcher. 
  +     * @param pattern Pattern for the matcher.
  +     * @param parameters Matcher parameters.
  +     */
  +    public final Map match(String type, String pattern, Parameters parameters) {
  +
  +        ComponentSelector selector = null;
  +        Matcher matcher = null;
  +        SourceResolver resolver = null;
  +
  +        Map result = null;
  +        try {
  +            selector = (ComponentSelector) this.manager.lookup(Matcher.ROLE +
  +                "Selector");
  +            assertNotNull("Test lookup of matcher selector", selector);
  +
  +            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
  +            assertNotNull("Test lookup of source resolver", resolver);
  +
  +            assertNotNull("Test if matcher name is not null", type);
  +            matcher = (Matcher) selector.select(type);
  +            assertNotNull("Test lookup of matcher", matcher);
  +
  +            result = matcher.match(pattern, objectmodel, parameters);
  +
  +        } catch (ComponentException ce) {
  +            getLogger().error("Could not retrieve generator", ce);
  +            fail("Could not retrieve generator: " + ce.toString());
  +        } catch (Exception e) {
  +            getLogger().error("Could not execute test", e);
  +            fail("Could not execute test: " + e);
  +        } finally {
  +            if (matcher != null) {
  +                selector.release(matcher);
  +            }
  +            this.manager.release(selector);
  +            this.manager.release(resolver);
  +        }
  +        return result;
  +    }
  +    
       /**
        * Perform the action component.
        *
  
  
  
  1.1                  cocoon-2.1/src/test/org/apache/cocoon/matching/WildcardURIMatcherTestCase.java
  
  Index: WildcardURIMatcherTestCase.java
  ===================================================================
  package org.apache.cocoon.matching;
  
  import java.util.Map;
  
  import org.apache.avalon.framework.parameters.Parameters;
  import org.apache.cocoon.SitemapComponentTestCase;
  
  public class WildcardURIMatcherTestCase extends SitemapComponentTestCase {
  
      public WildcardURIMatcherTestCase(String name) {
          super(name);
      }
  
      public void testWildcardURIMatch() {
          getRequest().setRequestURI("/test/foo/bla/end");
  
          Parameters parameters = new Parameters();
  
          Map result = match("wildcard-uri", "**", parameters);
          System.out.println(result);
          assertNotNull("Test if resource exists", result);
          assertEquals("Test for **", "test/foo/bla/end", result.get("1"));
          
          result = match("wildcard-uri", "**/bla/*", parameters);
          System.out.println(result);
          assertNotNull("Test if resource exists", result);
          assertEquals("Test for **/bla/* {1}", "test/foo", result.get("1"));
          assertEquals("Test for **/bla/* {2}", "end", result.get("2"));
      }
  }
  
  
  
  1.1                  cocoon-2.1/src/test/org/apache/cocoon/matching/WildcardURIMatcherTestCase.xtest
  
  Index: WildcardURIMatcherTestCase.xtest
  ===================================================================
  <?xml version="1.0" ?>
  <testcase>
   <annotation>
    Test Cases: WildcardUriMatcher
   </annotation>
  
   <logkit>
    <factories>
     <factory type="stream" class="org.apache.avalon.excalibur.logger.factory.StreamTargetFactory"/>
    </factories>
    <targets>
     <stream id="root">
      <stream>System.out</stream>
      <format type="extended">
       %7.7{priority} %5.5{time}   [%9.9{category}] (%{context}): %{message}\n%{throwable}
      </format>
     </stream>
    </targets>
    <categories>
     <category name="test" log-level="WARN">
      <log-target id-ref="root"/>
     </category>
    </categories>
   </logkit>
  
   <context/>
  
   <roles>
    <role name="org.apache.excalibur.source.SourceFactorySelector"
          shorthand="source-factories"
          default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
  
    <role name="org.apache.excalibur.source.SourceResolver"
          shorthand="source-resolver"
          default-class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
  
    <role name="org.apache.cocoon.matching.MatcherSelector"
          shorthand="matchers"
          default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
   </roles>
  
   <components>
    <source-factories>
     <component-instance class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
     <component-instance class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
    </source-factories>
  
    <source-resolver class="org.apache.excalibur.source.impl.SourceResolverImpl"/>
  
    <matchers logger="test">
     <component-instance class="org.apache.cocoon.matching.WildcardURIMatcher" 
                         name="wildcard-uri"/>
    </matchers>
   </components>
  
  </testcase>