<?xml version="1.0"?>
<!--
  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.
-->
<j:jelly xmlns:j="jelly:core" xmlns="jelly:ant">

  <fileScanner var="scanner">
    <fileset dir="src/test" includes="**/*.jelly"/>
  </fileScanner>
    
  Iterating through build files
  
  <j:forEach var="file" items="${scanner.iterator()}">
  
    <!-- here we could parse the file or process it in some way -->
    <!-- such as by calling <ant> with the given build.xml file -->
      
    Found ${file.absolutePath}
  </j:forEach>

  <fileScanner var="dirscanner">
    <fileset dir="src/test" includes="org/apache/commons/jelly/**"/>
  </fileScanner>

  Iterating through test directories

  <j:forEach var="dir" items="${dirscanner.directories()}">
    <!-- here we could process the directory in some way -->
    <!-- such as creating a similar directory in a different base path -->
      
    Found ${dir.absolutePath}
  </j:forEach>

</j:jelly>
