<?xml version="1.0"?>
<!--
  Copyright 2002-2004 The Apache Software Foundation

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!--
 ! FIXME: move to xml taglib
 !-->
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:x="jelly:xml">

About to spawn another thread...

<j:thread name="thread1" file="target/thread.xml">
  <x:parse var="doc">
    <web-app>
      <servlet>
        <servlet-name>snoop</servlet-name>
        <servlet-class>SnoopServlet</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>file</servlet-name>
        <servlet-class>ViewFile</servlet-class>
        <init-param>
          <param-name>initial</param-name>
          <param-value>1000</param-value>
          <description>
            The initial value for the counter  
          </description>
        </init-param>
      </servlet>
      <servlet-mapping>
        <servlet-name>snoop</servlet-name>
        <url-pattern>/foo/snoop</url-pattern>
      </servlet-mapping>
    </web-app>
  </x:parse>

  <j:whitespace>    
  <x:set var="count" select="count($doc//servlet)"/>
  <x:forEach var="s" select="$doc//servlet">
    name: <x:expr select="$s/servlet-name"/>
    class: <x:expr select="$s/servlet-class"/>
  </x:forEach>

  There are <x:expr select="$count"/> servlet(s)
  </j:whitespace>    
</j:thread>

The thread should have started now!

</j:jelly>




