You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by dm...@apache.org on 2004/06/30 02:30:02 UTC

cvs commit: jakarta-commons/jxpath/xdocs/images logo-wbg.jpg

dmitri      2004/06/29 17:30:02

  Modified:    jxpath   build.xml checkstyle.properties project.xml
                        project.properties
               jxpath/xdocs users-guide.xml index.xml navigation.xml
  Added:       jxpath   checkstyle.xml maven.xml
               jxpath/xdocs release-notes-1.2.xml
               jxpath/xdocs/images logo-wbg.jpg
  Log:
  Preparations for Release 1.2
  
  Revision  Changes    Path
  1.20      +174 -401  jakarta-commons/jxpath/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/build.xml,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- build.xml	29 Feb 2004 14:17:37 -0000	1.19
  +++ build.xml	30 Jun 2004 00:30:01 -0000	1.20
  @@ -1,412 +1,185 @@
  -<!--
  -   Copyright 2001-2004 The Apache Software Foundation
  +<?xml version="1.0" encoding="UTF-8"?>
   
  -   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
  +<!--build.xml generated by maven from project.xml version 1.2
  +  on date June 28 2004, time 1759-->
   
  -       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.
  --->
  -<project name="JXPath" default="jar" basedir=".">
  -
  -
  -<!--
  -        "JXPath" component of the Jakarta Commons Subproject
  -        $Id$
  --->
  -
  -
  -<!-- ========== Initialize Properties ===================================== -->
  -
  -  <property file="${user.home}/build.properties"/>   <!-- User local        -->
  -  <property file="build.properties"/>                <!-- Component local   -->
  -  <property file="../build.properties"/>             <!-- Commons local     -->
  -
  -<!-- ========== Component Declarations ==================================== -->
  -
  -  <!-- The name of this component -->
  -  <property name="component.name"          value="jxpath"/>
  -
  -  <!-- The title of this component -->
  -  <property name="component.title"         value="XPath traversal of JavaBeans"/>
  -
  -  <!-- The primary package name of this component -->
  -  <property name="component.package"       value="org.apache.commons.jxpath"/>
  -
  -  <!-- The current version number of this component -->
  -  <property name="component.version"       value="1.1b1"/>
  -
  -  <!-- The jar name of this component -->
  -  <property name="jar.name"
  -           value="commons-${component.name}.jar"/>
  -
  -  <!-- The base directory for compilation targets -->
  -  <property name="build.home"              value="target"/>
  -
  -  <!-- The base directory for component configuration files -->
  -  <property name="conf.home"               value="src/conf"/>
  -
  -  <!-- The base directory for distribution targets -->
  -  <property name="dist.home"               value="dist"/>
  -
  -  <!-- The base directory for component sources -->
  -  <property name="source.home"             value="src/java"/>
  -
  -  <!-- The base directory for unit test sources -->
  -  <property name="test.home"               value="src/test"/>
  -
  -  <!-- Anakia props -->
  -  <property name="docs.src" value="./xdocs"/>
  -  <property name="docs.dest" value="${dist.home}/docs"/>
  -
  -
  -<!-- ========== Compiler Defaults ========================================= -->
  -
  -
  -  <!-- Should Java compilations set the 'debug' compiler option? -->
  -  <property name="compile.debug"           value="true"/>
  -
  -  <!-- Should Java compilations set the 'deprecation' compiler option? -->
  -  <property name="compile.deprecation"     value="true"/>
  -
  -  <!-- Should Java compilations set the 'optimize' compiler option? -->
  -  <property name="compile.optimize"        value="true"/>
  -
  -  <!-- Construct compile classpath -->
  -  <path id="compile.classpath">
  -    <pathelement location="${build.home}/classes"/>
  -    <pathelement location="${jaxp.jaxp.jar}"/>
  -    <pathelement location="${jaxp.xslt.jar}"/>
  -    <pathelement location="${jdom.jar}"/>
  -    <pathelement location="${servlet.jar}"/>
  -    <pathelement location="${junit.jar}"/>
  -    <pathelement location="${commons-beanutils.jar}"/>
  -    <pathelement location="${commons-collections.jar}"/>
  -    <pathelement location="${commons-logging.jar}"/>
  -  </path>
  -
  -
  -<!-- ========== Test Execution Defaults =================================== -->
  -
  -
  -  <!-- Construct unit test classpath -->
  -  <path id="test.classpath">
  -    <pathelement location="${build.home}/classes"/>
  -    <pathelement location="${build.home}/tests"/>
  -    <pathelement location="${jaxp.jaxp.jar}"/>
  -    <pathelement location="${jaxp.xslt.jar}"/>
  -    <pathelement location="${servlet.jar}"/>
  -    <pathelement location="${junit.jar}"/>
  -    <pathelement location="${jdom.jar}"/>
  -    <pathelement location="${commons-beanutils.jar}"/>
  -    <pathelement location="${commons-collections.jar}"/>
  -    <pathelement location="${commons-logging.jar}"/>
  -  </path>
  -
  -  <!-- Should all tests fail if one does? -->
  -  <property name="test.failonerror"        value="true"/>
  -
  -  <!-- The test runner to execute -->
  -  <property name="test.runner"             value="junit.textui.TestRunner"/>
  -
  -
  -<!-- ========== Executable Targets ======================================== -->
  -
  -  <target name="check_available">
  -    <available 
  -      classname="junit.framework.Test"
  -      property="junit.present"
  -      classpathref="compile.classpath"
  -    />
  -
  -    <available 
  -      classname="org.xml.sax.SAXException"
  -      property="jaxp.jaxp.present"
  -      classpathref="compile.classpath"
  -    />
  -
  -    <available 
  -      classname="javax.xml.transform.Transformer"
  -      property="jaxp.xslt.present"
  -      classpathref="compile.classpath"
  -    />
  -
  -    <available 
  -      classname="javax.servlet.ServletRequest"
  -      property="servlet.present"
  -      classpathref="compile.classpath"
  -    />
  -
  -  </target>
  -
  -  <target name="init"
  -    description="Initialize and evaluate conditionals"
  -    depends="check_available">
  -    <echo message="-------- ${component.name} ${component.version} --------"/>
  -    <filter  token="name"                  value="${component.name}"/>
  -    <filter  token="package"               value="${component.package}"/>
  -    <filter  token="version"               value="${component.version}"/>
  -
  -    <echo message="junit.jar = ${junit.jar}"/>
  -    <echo message="jaxp.jaxp.jar = ${jaxp.jaxp.jar}"/>
  -    <echo message="jaxp.xslt.jar = ${jaxp.xslt.jar}"/>
  -    <echo message="servlet.jar = ${servlet.jar}"/>
  -    <echo message="commons-beanutils.jar = ${commons-beanutils.jar}"/>
  -    <echo message="commons-collections.jar = ${commons-collections.jar}"/>
  -    <echo message="commons-logging.jar = ${commons-logging.jar}"/>
  -  </target>
  -
  -  <target name="check.junit" unless="junit.present">
  -    <antcall target="property-warning">
  -      <param name="name" value="junit.jar"/>
  -      <param name="value" value="${junit.jar}"/>
  -    </antcall>
  -  </target>
  -
  -  <target name="check.jaxp.jaxp" unless="jaxp.jaxp.present">
  -    <antcall target="property-warning">
  -      <param name="name" value="jaxp.jaxp.jar"/>
  -      <param name="value" value="${jaxp.jaxp.jar}"/>
  -    </antcall>
  -  </target>
  -
  -  <target name="check.jaxp.xslt" unless="jaxp.xslt.present">
  -    <antcall target="property-warning">
  -      <param name="name" value="jaxp.xslt.jar"/>
  -      <param name="value" value="${jaxp.xslt.jar}"/>
  -    </antcall>
  -  </target>
  -
  -  <target name="check.servlet" unless="servlet.present">
  -    <antcall target="property-warning">
  -      <param name="name" value="servlet.jar"/>
  -      <param name="value" value="${servlet.jar}"/>
  -    </antcall>
  -  </target>
  -
  -  <target name="property-warning">
  -    <echo>
  -      +----------------------------------------------------------------+
  -      + F A I L E D  R E Q U I R E M E N T                             |
  -      +----------------------------------------------------------------+
  -      | You must define the following property in order                |
  -      | to build ${component.name}:
  -      |                                                                |
  -      | ${name} = ${value}
  -      |                                                                |
  -      | You can set this property in the provided build.properties     |
  -      | file, or you may set this property in your                     |
  -      | ${user.home}/build.properties file.                            
  -      +----------------------------------------------------------------+
  -    </echo>
  -    <fail message="Failed Requirement"/>
  -  </target>
  -
  -  <target name="prepare" depends="init, 
  -                         check.junit,check.jaxp.jaxp,check.jaxp.xslt,check.servlet"
  -   description="Prepare build directory">
  -    <mkdir dir="${build.home}"/>
  -    <mkdir dir="${build.home}/classes"/>
  -    <mkdir dir="${build.home}/conf"/>
  -    <mkdir dir="${build.home}/tests"/>
  -  </target>
  -
  -  <target name="static" depends="prepare"
  -   description="Copy static files to build directory">
  -    <tstamp/>
  -    <copy  todir="${build.home}/conf" filtering="on">
  -      <fileset dir="${conf.home}" includes="*.MF"/>
  -    </copy>
  -  </target>
  -
  -
  -  <target name="compile" depends="static"
  -   description="Compile shareable components">
  -    <javac  srcdir="${source.home}"
  -           destdir="${build.home}/classes"
  -             debug="${compile.debug}"
  -       deprecation="${compile.deprecation}"
  -          optimize="${compile.optimize}">
  -      <classpath refid="compile.classpath"/>
  +<project default="jar" name="commons-jxpath" basedir=".">
  +  <property name="defaulttargetdir" value="D:\jakarta-commons\jxpath/target">
  +  </property>
  +  <property name="libdir" value="D:\jakarta-commons\jxpath/target/lib">
  +  </property>
  +  <property name="classesdir" value="D:\jakarta-commons\jxpath/target/classes">
  +  </property>
  +  <property name="testclassesdir" value="D:\jakarta-commons\jxpath/target/test-classes">
  +  </property>
  +  <property name="testclassesdir" value="D:\jakarta-commons\jxpath/target/test-classes">
  +  </property>
  +  <property name="testreportdir" value="D:\jakarta-commons\jxpath/target/test-reports">
  +  </property>
  +  <property name="distdir" value="dist">
  +  </property>
  +  <property name="javadocdir" value="dist/docs/api">
  +  </property>
  +  <property name="final.name" value="commons-jxpath-1.2">
  +  </property>
  +  <target name="init" description="o Initializes some properties">
  +    <mkdir dir="${libdir}">
  +    </mkdir>
  +    <condition property="noget">
  +      <equals arg2="only" arg1="${build.sysclasspath}">
  +      </equals>
  +    </condition>
  +  </target>
  +  <target name="compile" description="o Compile the code" depends="get-deps">
  +    <mkdir dir="${classesdir}">
  +    </mkdir>
  +    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
  +      <src>
  +        <pathelement location="src/java">
  +        </pathelement>
  +      </src>
  +      <classpath>
  +        <fileset dir="${libdir}">
  +          <include name="*.jar">
  +          </include>
  +        </fileset>
  +      </classpath>
       </javac>
  -    <copy    todir="${build.home}/classes" filtering="on">
  -      <fileset dir="${source.home}" excludes="**/*.java"/>
  +    <copy todir="${testclassesdir}">
  +      <fileset dir="src/test">
  +        <include name="**/*.xml">
  +        </include>
  +      </fileset>
       </copy>
     </target>
  -
  -
  -  <target name="compile.tests" depends="compile"
  -   description="Compile unit test cases">
  -    <javac  srcdir="${test.home}"
  -           destdir="${build.home}/tests"
  -             debug="${compile.debug}"
  -       deprecation="${compile.deprecation}"
  -          optimize="${compile.optimize}">
  -      <classpath refid="test.classpath"/>
  -    </javac>
  -    <copy    todir="${build.home}/tests" filtering="on">
  -      <fileset dir="${test.home}" excludes="**/*.java"/>
  +  <target name="jar" description="o Create the jar" depends="compile,test">
  +    <jar jarfile="${defaulttargetdir}/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}">
  +    </jar>
  +  </target>
  +  <target name="clean" description="o Clean up the generated directories">
  +    <delete dir="${defaulttargetdir}">
  +    </delete>
  +    <delete dir="${distdir}">
  +    </delete>
  +  </target>
  +  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
  +    <mkdir dir="dist">
  +    </mkdir>
  +    <copy todir="dist">
  +      <fileset dir="${defaulttargetdir}" includes="*.jar">
  +      </fileset>
  +      <fileset dir="${basedir}" includes="LICENSE*, README*">
  +      </fileset>
       </copy>
     </target>
  -
  -
  -  <target name="clean"
  -   description="Clean build and distribution directories">
  -    <delete    dir="${build.home}"/>
  -    <delete    dir="${dist.home}"/>
  -  </target>
  -
  -
  -  <target name="all" depends="clean,compile"
  -   description="Clean and compile all components"/>
  -
  -
  -  <target name="javadoc" depends="compile"
  -   description="Create component Javadoc documentation">
  -    <mkdir      dir="${dist.home}"/>
  -    <mkdir      dir="${dist.home}/docs"/>
  -    <mkdir      dir="${dist.home}/docs/apidocs"/>
  -    <javadoc sourcepath="${source.home}"
  -           classpathref="compile.classpath"
  -                destdir="${dist.home}/docs/apidocs"
  -           packagenames="org.apache.commons.*"
  -                 author="true"
  -                private="false"
  -                version="true"
  -               doctitle="&lt;h1&gt;${component.title}&lt;/h1&gt;"
  -            windowtitle="${component.title} (Version ${component.version})"
  -                 bottom="Copyright (c) 2001 - Apache Software Foundation"/>
  -  </target>
  -
  -  <!-- ================================================================== -->
  -  <!-- J A R                                                              -->
  -  <!-- ================================================================== -->
  -  <target name="jar" depends="compile" description="Build jar">
  -    <mkdir      dir="${dist.home}"/>
  -    <copy      file="LICENSE.txt"
  -             tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
  -    <jar    jarfile="${dist.home}/${jar.name}"
  -            basedir="${build.home}/classes"
  -           manifest="${build.home}/conf/MANIFEST.MF"/>
  -  </target>
  -  
  -  <!-- ================================================================== -->
  -  <!-- I N S T A L L  J A R                                               -->
  -  <!-- ================================================================== -->
  -
  -  <target name="install-jar" depends="jar" 
  -          description="==> Installs .jar file in ${lib.repo}">
  -    <copy todir="${lib.repo}" filtering="no">
  -      <fileset dir="${dist.home}">
  -        <include name="${jar.name}"/>
  +  <target name="test" description="o Run the test cases" if="test.failure" depends="internal-test">
  +    <fail message="There were test failures.">
  +    </fail>
  +  </target>
  +  <target name="internal-test" depends="compile-tests">
  +    <mkdir dir="${testreportdir}">
  +    </mkdir>
  +    <junit dir="./" failureproperty="test.failure" printSummary="yes" fork="true" haltonerror="true">
  +      <sysproperty key="basedir" value=".">
  +      </sysproperty>
  +      <formatter type="xml">
  +      </formatter>
  +      <formatter usefile="false" type="plain">
  +      </formatter>
  +      <classpath>
  +        <fileset dir="${libdir}">
  +          <include name="*.jar">
  +          </include>
  +        </fileset>
  +        <pathelement path="${testclassesdir}">
  +        </pathelement>
  +        <pathelement path="${classesdir}">
  +        </pathelement>
  +      </classpath>
  +      <batchtest todir="${testreportdir}">
  +        <fileset dir="src/test">
  +          <include name="**/*Test.java">
  +          </include>
  +        </fileset>
  +      </batchtest>
  +    </junit>
  +  </target>
  +  <target name="compile-tests" depends="compile">
  +    <mkdir dir="${testclassesdir}">
  +    </mkdir>
  +    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
  +      <src>
  +        <pathelement location="src/test">
  +        </pathelement>
  +      </src>
  +      <classpath>
  +        <fileset dir="${libdir}">
  +          <include name="*.jar">
  +          </include>
  +        </fileset>
  +        <pathelement path="${classesdir}">
  +        </pathelement>
  +      </classpath>
  +    </javac>
  +    <copy todir="${testclassesdir}">
  +      <fileset dir="D:\jakarta-commons\jxpath\src\test">
  +        <include name="**/*.xml">
  +        </include>
         </fileset>
       </copy>
     </target>
  -
  -  <!-- ================================================================== -->
  -  <!-- D I S T                                                            -->
  -  <!-- ================================================================== -->
  -
  -  <target name="dist" depends="compile,jar,xdoc,javadoc"
  -   description="Create binary distribution">
  -    <mkdir      dir="${dist.home}"/>
  -    <copy      file="LICENSE.txt"
  -              todir="${dist.home}"/>
  -  </target>
  -
  -<!-- ========== Unit Test Targets ========================================= -->
  -
  -  <target name="test"  depends="compile.tests,
  -                                test.jxpath"
  -   description="Run all unit test cases">
  -  </target>
  -
  -  <target name="test.jxpath">
  -    <echo message="Running JXPath tests ..."/>
  -    <java classname="${test.runner}" fork="yes"
  -        failonerror="${test.failonerror}">
  -      <arg value="org.apache.commons.jxpath.JXPathTestSuite"/>
  -      <classpath refid="test.classpath"/>
  -    </java>
  -  </target>
  -
  -
  -<!-- ========== Documentation ========================================= -->
  -
  -  <target name="xdoc.fetch-stylesheet" unless="localstylesheet">
  -      <echo>
  -       ####################################################################
  -       #
  -       #  Fetching the latest stylesheet from jakarta-site2
  -       #
  -       #  NOTE : As this build target is meant for developers, this requires
  -       #    a properly setup CVS.  But you are encouraged to use this to
  -       #    experiment with Anakia - if the fetch fails, it may be because
  -       #    you haven't yet logged into CVS. The way to do it, assuming you
  -       #    have a resonable CVS client setup is
  -       #
  -       #  $ cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
  -       #  password: anoncvs
  -       #
  -       #  and that should solve it.
  -       #
  -       #  See http://jakarta.apache.org/site/cvsindex.html for more
  -       #      information, or http://www.cvshome.org/
  -       #
  -       #  Ant really is the bee's knees. http://jakarta.apache.org/ant/
  -       #
  -       ######################################################################
  -       </echo>
  -
  -      <cvs cvsRoot=":pserver:anoncvs@cvs.apache.org:/home/cvspublic"
  -          command="checkout -p jakarta-site2/xdocs/stylesheets/site.vsl"
  -          output="${docs.src}/stylesheets/site.vsl"
  -      />
  -  </target>
  -
  -  <target name="xdoc" depends="xdoc.fetch-stylesheet"
  -          description="Generates HTML documentation from XML source">
  -    <mkdir      dir="${dist.home}"/>
  -    <mkdir      dir="${dist.home}/docs"/>
  -
  -      <taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask">
  -          <classpath location="${velocity.jar}"/>
  -          <classpath location="${jdom.jar}"/>
  -          <classpath location="${xerces.jar}"/>
  -          <classpath location="${commons-collections.jar}"/>
  -          <classpath location="${logkit.jar}"/>
  -      </taskdef>
  -
  -      <echo>
  -       #######################################################
  -       #
  -       #  Now using Anakia to transform our XML documentation
  -       #  to HTML.
  -       #
  -       #######################################################
  -       </echo>
  -
  -      <anakia basedir="${docs.src}" destdir="${docs.dest}/"
  -           extension=".html" style="./site.vsl"
  -           projectFile="stylesheets/project.xml"
  -           excludes="**/stylesheets/** empty.xml"
  -           includes="**/*.xml"
  -           lastModifiedCheck="true"
  -           templatePath="xdocs/stylesheets">
  -      </anakia>
  -
  -      <copy todir="${docs.dest}/images" filtering="no">
  -          <fileset dir="${docs.src}/images">
  -              <include name="**/*.gif"/>
  -              <include name="**/*.jpeg"/>
  -              <include name="**/*.jpg"/>
  -          </fileset>
  -      </copy>
  +  <target name="javadoc" description="o Generate javadoc">
  +    <mkdir dir="${javadocdir}">
  +    </mkdir>
  +    <tstamp>
  +      <format pattern="2001-yyyy" property="year">
  +      </format>
  +    </tstamp>
  +    <property name="copyright" value="Copyright &amp;copy;  The Apache Software Foundation. All Rights Reserved.">
  +    </property>
  +    <property name="title" value="JXPath 1.2 API">
  +    </property>
  +    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames=".*">
  +      <classpath>
  +        <fileset dir="${libdir}">
  +          <include name="*.jar">
  +          </include>
  +        </fileset>
  +        <pathelement location="${defaulttargetdir}/${final.name}.jar">
  +        </pathelement>
  +      </classpath>
  +    </javadoc>
  +  </target>
  +  <target name="get-deps" unless="noget" depends="init">
  +    <get dest="${libdir}/xerces-1.2.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xerces/jars/xerces-1.2.3.jar">
  +    </get>
  +    <get dest="${libdir}/servletapi-2.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/servletapi/jars/servletapi-2.2.jar">
  +    </get>
  +    <get dest="${libdir}/junit-3.8.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.jar">
  +    </get>
  +    <get dest="${libdir}/ant-optional-1.5.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.1.jar">
  +    </get>
  +    <get dest="${libdir}/xml-apis-2.0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/xml-apis/jars/xml-apis-2.0.2.jar">
  +    </get>
  +    <get dest="${libdir}/jdom-b9.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/jdom/jars/jdom-b9.jar">
  +    </get>
  +    <get dest="${libdir}/commons-beanutils-1.4.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.4.jar">
  +    </get>
  +    <get dest="${libdir}/commons-logging-1.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.jar">
  +    </get>
  +    <get dest="${libdir}/commons-collections-2.0.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-collections/jars/commons-collections-2.0.jar">
  +    </get>
  +    <get dest="${libdir}/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar">
  +    </get>
  +    <get dest="${libdir}/ant-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-1.5.jar">
  +    </get>
  +    <get dest="${libdir}/ant-optional-1.5.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/ant/jars/ant-optional-1.5.jar">
  +    </get>
  +  </target>
  +  <target name="install-maven">
  +    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${repo}/maven/maven-install-latest.jar">
  +    </get>
  +    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar">
  +    </unjar>
     </target>
  -</project>
  +</project>
  \ No newline at end of file
  
  
  
  1.3       +2 -14     jakarta-commons/jxpath/checkstyle.properties
  
  Index: checkstyle.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/checkstyle.properties,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- checkstyle.properties	29 Feb 2004 14:17:37 -0000	1.2
  +++ checkstyle.properties	30 Jun 2004 00:30:01 -0000	1.3
  @@ -12,17 +12,5 @@
   # See the License for the specific language governing permissions and
   # limitations under the License.
   
  -#checkstyle.header.file=LICENSE.txt
  -# 2-5 = CVS Header in Commons license, 10 = copyright date, 32 = product name
  -checkstyle.header.ignoreline=2,3,4,5,10,32
  -
  -checkstyle.ignore.maxlinelen=2
  -
  -checkstyle.excludes=**/parser/*
  -checkstyle.lcurly.type=eol
  -checkstyle.lcurly.method=nlow
  -checkstyle.lcurly.other=eol
  -checkstyle.rcurly=alone
  -checkstyle.javadoc.scope=nothing
  -
  -checkstyle.allow.protected=true
  +checkstyle.cache.file=C:/temp/cache
  +basedir=D:/jakarta-commons/jxpath
  \ No newline at end of file
  
  
  
  1.18      +22 -21    jakarta-commons/jxpath/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/project.xml,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- project.xml	9 Apr 2004 19:58:06 -0000	1.17
  +++ project.xml	30 Jun 2004 00:30:01 -0000	1.18
  @@ -16,32 +16,31 @@
   -->
   <project>
     <pomVersion>3</pomVersion>
  -  
     <name>JXPath</name>
     <id>commons-jxpath</id>
  -  <currentVersion>1.1</currentVersion>
  +  <currentVersion>1.2</currentVersion>
     <inceptionYear>2001</inceptionYear>
     <shortDescription>XPath for Java Objects</shortDescription>
     <description>A package of Java utility methods for accessing and modifying object properties</description>
  -  <logo>/images/logo.png</logo>
  +  <logo>/images/logo-wbg.jpg</logo> 
     
     <url>http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>
     <package>org.apache.commons.${pom.artifactId.substring(8)}</package>
   
  -  <organization>
  +  <organization> 
       <name>The Apache Software Foundation</name>
       <url>http://jakarta.apache.org</url>
  -    <logo>http://jakarta.apache.org/images/original-jakarta-logo.gif</logo>
  -  </organization>
  +    <logo>/images/jakarta-logo.gif</logo>
  +  </organization> 
  +
  +  <licenses> 
  +    <license> 
  +      <name>The Apache Software License, Version 2.0</name>
  +      <url>/LICENSE.txt</url>
  +      <distribution>repo</distribution>
  +      </license>
  +   </licenses> 
   
  -  <licenses>
  -	<license>
  -    	<name>The Apache Software License, Version 2.0</name>
  -    	<url>/LICENSE.txt</url>
  -    	<distribution>repo</distribution>
  -	</license>
  -  </licenses>
  -  
     <gumpRepositoryId>jakarta</gumpRepositoryId>
     <issueTrackingUrl>http://issues.apache.org/bugzilla/</issueTrackingUrl>
     <siteAddress>jakarta.apache.org</siteAddress>
  @@ -67,12 +66,12 @@
         <archive>http://nagoya.apache.org/eyebrowse/SummarizeList?listName=commons-user@jakarta.apache.org</archive>
       </mailingList>
     </mailingLists>
  -  
  +    
     <versions>
       <version>
  -      <id>1.1</id>
  -      <name>1.1</name>
  -      <tag>JXPATH_1_1</tag>
  +      <id>1.2</id>
  +      <name>1.2</name>
  +      <tag>JXPATH_1_2</tag>
       </version>
     </versions>
   
  @@ -156,16 +155,18 @@
       <report>maven-junit-report-plugin</report>
       
       <report>maven-jdepend-plugin</report>
  -    <report>maven-checkstyle-plugin</report>
  +    <!--report>maven-checkstyle-plugin</report-->
       <!--report>maven-changelog-plugin</report-->
       <!--report>maven-developer-activity-plugin</report-->
       <!--report>maven-file-activity-plugin</report-->
       <!--report>maven-javadoc-plugin</report-->
       <report>maven-jxr-plugin</report>
  -    <!--report>maven-license-plugin</report-->
  +    <report>maven-license-plugin</report>
       <!--report>maven-linkcheck-plugin</report-->
  -    <!--report>maven-tasklist-plugin</report-->
  +    <report>maven-tasklist-plugin</report>
       <!--report>maven-clover-plugin</report-->
  +    <report>maven-junit-report-plugin</report> 
  +
       
     </reports>
   </project>
  
  
  
  1.10      +7 -2      jakarta-commons/jxpath/project.properties
  
  Index: project.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/project.properties,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- project.properties	29 Feb 2004 14:17:37 -0000	1.9
  +++ project.properties	30 Jun 2004 00:30:01 -0000	1.10
  @@ -16,11 +16,16 @@
   # Properties that override Maven build defaults
   ##
   
  -maven.checkstyle.properties=${basedir}/checkstyle.properties 
  +maven.checkstyle.properties=${basedir}/checkstyle.xml
   maven.checkstyle.excludes=**/parser/*
   maven.test.failure = false
   maven.junit.fork=true
   maven.linkcheck.enable=true
   
   # commons site L&F
  -maven.xdoc.jsl=../commons-build/commons-site.jsl
  \ No newline at end of file
  +maven.xdoc.jsl=../commons-build/commons-site.jsl
  +
  +#maven.proxy.host=
  +#maven.proxy.port=80
  +#maven.proxy.username=
  +#maven.proxy.password=
  
  
  
  1.1                  jakarta-commons/jxpath/checkstyle.xml
  
  Index: checkstyle.xml
  ===================================================================
  <?xml version="1.0"?>
  <!DOCTYPE module PUBLIC
        "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
        "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
    
    <!--
      Checkstyle checks configured for Maven.
    -->
    
    <module name="Checker">
    
        <!-- Checks that a package.html file exists for each package.     -->
        <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
        <module name="PackageHtml"/>
    
        <!-- Checks whether files end with a new line.                        -->
        <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
        <!-- module name="NewlineAtEndOfFile"/-->
    
        <!-- Checks that property files contain the same keys.         -->
        <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
        <module name="Translation"/>
    
        <module name="TreeWalker">
    
            <!--property name="cacheFile" value="${checkstyle.cache.file}"/-->
    
            <!-- ************************************************************** -->
            <!-- Checks that are different from the sun coding conventions ones -->
            <!-- ************************************************************** -->
            <module name="Header">
                <property name="headerFile" value="${basedir}/LICENSE.txt"/>
                <property name="ignoreLines" value="1,2,3,4,5,6"/>
            </module>
            <property name="tabWidth" value="4"/>
            <module name="LeftCurly">
              <property name="option" value="eol"/>
            </module>
            <module name="RightCurly">
              <property name="option" value="alone"/>
            </module>
            <module name="LineLength">
              <property name="max" value="132"/>
            </module>
            <module name="MethodLength">
              <property name="max" value="175"/>
            </module>
            <!-- No Paren pad check
            <module name="ParenPad"/>
            -->
            <module name="ConstantName">
              <property name="format" value="log|^[a-zA-Z][a-zA-Z0-9_]*$"/>
            </module>
            
            <!-- ************************************************************** -->
            <!-- Default Sun coding conventions checks                          -->
            <!-- ************************************************************** -->
    
            <!-- Checks for Javadoc comments.                     -->
            <!-- See http://checkstyle.sf.net/config_javadoc.html -->
            <module name="JavadocMethod"/>
            <module name="JavadocType"/>
            <module name="JavadocVariable"/>
    
    
            <!-- Checks for Naming Conventions.                  -->
            <!-- See http://checkstyle.sf.net/config_naming.html -->
            <module name="LocalFinalVariableName"/>
            <module name="LocalVariableName"/>
            <module name="MethodName"/>
            <module name="PackageName"/>
            <module name="ParameterName"/>
            <module name="StaticVariableName"/>
            <module name="TypeName"/>
            <module name="MemberName"/>
    
            <!-- Checks for imports                              -->
            <!-- See http://checkstyle.sf.net/config_import.html -->
            <module name="AvoidStarImport"/>
            <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
            <module name="RedundantImport"/>
            <module name="UnusedImports"/>
    
    
            <!-- Checks for Size Violations.                    -->
            <!-- See http://checkstyle.sf.net/config_sizes.html -->
            <module name="FileLength"/>
            <module name="ParameterNumber"/>
    
    
            <!-- Checks for whitespace                               -->
            <!-- See http://checkstyle.sf.net/config_whitespace.html -->
            <module name="EmptyForIteratorPad"/>
            <module name="NoWhitespaceAfter"/>
            <module name="NoWhitespaceBefore"/>
            <module name="OperatorWrap"/>
            <module name="TabCharacter"/>
            <module name="WhitespaceAfter"/>
            <module name="WhitespaceAround"/>
    
    
            <!-- Modifier Checks                                    -->
            <!-- See http://checkstyle.sf.net/config_modifiers.html -->
            <module name="ModifierOrder"/>
            <module name="RedundantModifier"/>
    
    
            <!-- Checks for blocks. You know, those {}'s         -->
            <!-- See http://checkstyle.sf.net/config_blocks.html -->
            <module name="AvoidNestedBlocks"/>
            <module name="EmptyBlock"/>
            
            <module name="NeedBraces"/>
    
    
            <!-- Checks for common coding problems               -->
            <!-- See http://checkstyle.sf.net/config_coding.html -->
            <module name="AvoidInlineConditionals"/>
            <module name="DoubleCheckedLocking"/>    <!-- MY FAVOURITE -->
            <module name="EmptyStatement"/>
            <module name="EqualsHashCode"/>
            <module name="HiddenField"/>
            <module name="IllegalInstantiation"/>
            <module name="InnerAssignment"/>
            <module name="MagicNumber"/>
            <module name="MissingSwitchDefault"/>
            <module name="RedundantThrows"/>
            <module name="SimplifyBooleanExpression"/>
            <module name="SimplifyBooleanReturn"/>
    
            <!-- Checks for class design                         -->
            <!-- See http://checkstyle.sf.net/config_design.html -->
            <module name="DesignForExtension"/>
            <module name="FinalClass"/>
            <module name="HideUtilityClassConstructor"/>
            <module name="InterfaceIsType"/>
            <module name="VisibilityModifier"/>
    
    
            <!-- Miscellaneous other checks.                   -->
            <!-- See http://checkstyle.sf.net/config_misc.html -->
            <module name="ArrayTypeStyle"/>
            <module name="FinalParameters"/>
            <module name="GenericIllegalRegexp">
                <property name="format" value="\s+$"/>
                <property name="message" value="Line has trailing spaces."/>
            </module>
            <module name="TodoComment"/>
            <module name="UpperEll"/>
    
        </module>
    
    </module>
  
  
  
  1.3       +15 -0     jakarta-commons/jxpath/maven.xml
  
  
  
  
  1.14      +179 -112  jakarta-commons/jxpath/xdocs/users-guide.xml
  
  Index: users-guide.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/xdocs/users-guide.xml,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- users-guide.xml	29 Feb 2004 14:17:43 -0000	1.13
  +++ users-guide.xml	30 Jun 2004 00:30:02 -0000	1.14
  @@ -27,7 +27,7 @@
     <body>
       <section name="What's JXPath">
         <p>
  -        JXPath provides APIs for the traversal of graphs of JavaBeans,
  +        JXPath provides APIs for traversal of graphs of JavaBeans,
           DOM and other types of objects using the XPath syntax.
         </p>
         <p>
  @@ -39,7 +39,7 @@
           that's the official standard.
         </p>
         <p>
  -        XPath is the official expression language of XSLT. In XSLT you
  +        XPath is the official expression language of XSLT. In XSLT, you
           mostly use XPath to access various elements of XML documents.
           You can do that with JXPath as well. In addition, you can read
           and write properties of JavaBeans, get and set elements of
  @@ -73,6 +73,8 @@
               </li>
               <li><a href="#DOM/JDOM Document Access">DOM/JDOM Document Access</a>
               </li>
  +            <li><a href="#Registering Namespaces">Registering Namespaces</a>
  +            </li>
               <li><a href="#Containers">Containers</a>
               </li>
               <li><a href="#Functions id() and key()">Functions id() and key()</a>
  @@ -169,7 +171,10 @@
         <p>
           The interpretation of the XPath syntax in the context of Java
           object graphs is quite intuitive: the <code>"child"</code>
  -        axis of XPath is mapped to JavaBean properties.
  +        axis of XPath is mapped to JavaBean properties. In fact, 
  +        the <code>"attribute:"</code> axis is mapped exactly the same way,
  +        so the <code>"child::"</code> and <code>"attribute:"</code> axes
  +        can be used interchangeably with JavaBeans.
         </p>
   
   
  @@ -201,6 +206,11 @@
             invocation of JXPath is equivalent to invocation of
             <code>getFirstName()</code>  on the bean.
           </p>
  +        <p>
  +          Note that using the XPath <code>"@firstName"</code> instead of 
  +          <code>"firstName"</code> whould produce the same result, because the 
  +          <code>"child::"</code> and <code>"attribute::"</code> axes are equivalent.
  +        </p>
         </subsection>
   
   
  @@ -322,7 +332,7 @@
   <!--============================ - SOURCE - ============================-->
   
           <p>
  -          This returns a list of at most three books from the array
  +          This returns an iterator over at most three books from the array
             of all books written by the author.
           </p>
         </subsection>
  @@ -330,7 +340,8 @@
   
         <subsection name="Map Element Access">
           <p>
  -          JXPath supports maps. To get a value use its key.
  +          JXPath supports maps. To get a value use its key as the name in 
  +          a <code>child::name</code> construct.
           </p>
   
   <!--============================ + SOURCE + ============================-->
  @@ -387,34 +398,96 @@
             strings for keys.
           </p>
           <p><b>Note:</b>  JXPath supports the extended notion of Map: any
  -          object with dynamic properties can be handled by JXPath
  +          object similar to Map, i.e. having some kind of API for accessing
  +          values by key, can be handled by JXPath
             provided that its class is registered with the
             <a href="apidocs/org/apache/commons/jxpath/JXPathIntrospector.html"><code>JXPathIntrospector</code></a>.
  +          The term JXPath uses for such objects is "objects with Dynamic Properties".
           </p>
         </subsection>
   
  +      <subsection name="DynaBean Access">
  +        <p>
  +          JXPath supports <a href="http://jakarta.apache.org/commons/beanutils/api/org/apache/commons/beanutils/DynaBean.html">DynaBeans</a> 
  +          as well. DynaBeans are treated exactly the same way as JavaBeans.
  +        </p>
  +      </subsection>
   
         <subsection name="DOM/JDOM Document Access">
           <p>
             JXPath supports access to DOM and JDOM Nodes. The DOM/JDOM node can be
             the context node of JXPathContext or it can be a value of a
  -          property, element of a collection, variable value etc.
  +          property, element of a collection, value of a variable etc.
             Let's say we have a path <code>"$foo/bar/baz"</code>.
  -          It will work if, for instance, the value of the variable
  +          It will find the desired node if, for instance, the value of the variable
             "foo" is a JavaBean, whose property "bar" contains a DOM/JDOM
             Node, which has a child element named "baz".
           </p>
           <p>
             The intepretation of XPath over DOM/JDOM structures is
             implemented in accordance with the XPath specification.
  +        </p>        
  +      </subsection>
  +
  +      <subsection name="Getting a Value vs. Selecting a Node">
  +        <p>
  +          JXPathContext has two similar sets of APIs: 
  +          <code>getValue(xpath)/iterate(xpath)</code> and
  +          <code>selectSingleNode(xpath)/selectNodes(xpath)</code>.  
  +          With JavaBeans and similar Java object
  +          models, these sets of APIs are effectively equivalent. However, with DOM/JDOM
  +          there is a difference: <code>selectSingleNode(xpath)</code> and
  +          <code>selectNodes(xpath)</code> return Nodes, while
  +          <code>getValue()</code> and <code>iterate(xpath)</code> return textual contents
  +          of those nodes. 
  +        </p>
  +        <p>
  +          Consider the following XML document:
  +        </p>
  +<!--============================ + SOURCE + ============================-->
  +<source>
  +    &lt;?xml version="1.0" ?&gt;
  +    &lt;address&gt;
  +      &lt;street&gt;Orchard Road&lt;/street&gt;
  +    &lt;/address&gt;
  +</source>
  +<!--============================ - SOURCE - ============================-->
  +
  +        <p>
  +          With the same XPath, <code>getValue("/address/street")</code>, will
  +          return the string <code>"Orchard Road"</code>, 
  +          while <code>selectSingleNode("/address/street")</code> -
  +          an object of type <code>Element</code> (DOM or JDOM, depending on the
  +          type of parser used). The returned <code>Element</code> is, of course,
  +          <code>&lt;street&gt;Orchard Road&lt;/street&gt;</code>.
           </p>
         </subsection>
   
  +      <subsection name="Registering Namespaces">
  +        <p>
  +          When using namespaces, it is important to remember that XPath matches 
  +          qualified names (QNames) based on the namespace URI, not on the prefix. 
  +          Therefore the XPath
  +          <code>"//foo:bar"</code> may not find a node named "foo:bar" if the prefix
  +          <code>"foo"</code> in the context of the node and in the execution context 
  +          of the XPath are mapped to different URIs.  Conversely, <code>"//foo:bar"</code>
  +          will find the node named <code>"biz:bar"</code>, if <code>"foo"</code> in the
  +          execution context and <code>"biz"</code> in the node context are mapped
  +          to the same URI.
  +        </p>
  +        <p>
  +          In order to use a namespace prefix with JXPath, that prefix should be
  +          known to JXPathContext. JXPathContext knows about namespace prefixes
  +          declared on the document element of the context node (the one passed
  +          to <code>JXPathContext.newContext(node)</code>), as well as the ones 
  +          explicitly registered using the <a href="apidocs/org/apache/commons/jxpath/JXPathContext.html#registerNamespace(java.lang.String, java.lang.String)">
  +          <code>JXPathContext.registerNamespace(prefix, namespaceURI)</code></a> method.
  +        </p>
  +      </subsection>
   
         <subsection name="Containers">
           <p>
  -          A
  -          <a href="apidocs/org/apache/commons/jxpath/Container.html">Container</a>
  +          A <a href="apidocs/org/apache/commons/jxpath/Container.html">Container</a>
             is an object implementing an indirection mechanism
             transparent to JXPath.
           </p>
  @@ -429,12 +502,14 @@
             <a href="apidocs/org/apache/commons/jxpath/XMLDocumentContainer.html">XMLDocumentContainer</a>.
             When you create an XMLDocumentContainer, you give it a
             pointer to an XML file (a <code>URL</code>  or a
  -          <code>javax.xml.transform.Source</code>. It will read
  +          <code>javax.xml.transform.Source</code>). It will read
             and parse the XML file only when it is accessed. You can
             create XMLDocumentContainers for various XML documents that
             may or may not be accessed by XPaths. If they are, they
             will be automatically read, parsed and traversed. If they
  -          are not- they won't be read at all.
  +          are not- they won't be read at all. Of course, once XMLDocumentContainer
  +          has read its XML file, it will cache the parse results for
  +          a future use.
           </p>
           <p>
             Let's say we have the the following XML file, which is
  @@ -497,7 +572,7 @@
         <subsection name="Functions id() and key()">
           <p>
             Functions <code>id()</code> and <code>key()</code> can be
  -          used with JXPath, however most of the time it requires custom
  +          used with JXPath, however most of the time that requires custom
             coding.
           </p>
           <p>
  @@ -520,14 +595,6 @@
             interface.
           </p>
         </subsection>
  -
  -      <p><b>Note:</b>  JXPath does not support DOM attributes for non-DOM
  -        objects. Even though XPaths like
  -        <code>"para[@type='warning']"</code>  are legitimate, they
  -        will always produce empty results. The only attributes
  -        supported for JavaBeans are <code>"name"</code>  and
  -        <code>"xml:lang"</code>.
  -      </p>
       </section>
   
       <section name="XPath Axes And Object Graphs">
  @@ -545,8 +612,8 @@
             one parent for every node except the root.
           </p>
           <p>
  -          With other models the situation is more complex. The model can no
  -          longer be described as a tree.  In many cases it is a complicated
  +          With other models the situation is more complex. An general object model 
  +          can not be described as a tree.  In many cases it is a complicated
             graph with many paths to the same node and even referential cycles
             where node A is node B's child, but also node B is node A's child.
             Even if the graph is a strict tree, a node of that tree may not have
  @@ -636,14 +703,14 @@
             The only two distinctions are the "xml:lang" and "name".
           </p>
           <p>
  -          Attribute <code><b>xml:lang</b></code> refers to the name of the locale
  +          Attribute <code>xml:lang</code> refers to the name of the locale
             associated with the node.  In XML the <code>xml:lang</code> attribute
             can be specifed for an element explicitly. In non-XML models,
             the locale is associated with the whole JXPathContext.  Unless
             explicitly set it is the application's default locale.
           </p>
           <p>
  -          The <code><b>name</b></code> attribute is primarily used when
  +          The <code>name</code> attribute is primarily used when
             working with Maps.  Often elements of a Map can be retrieved
             using the "child::" axis.  For example, if "foo" in <code>"foo/bar"</code>
             refers to a Map then the path extracts from the map the value for the key
  @@ -765,14 +832,14 @@
   <!--============================ - SOURCE - ============================-->
   
           <p>
  -          Note that it only makes sense to the automatic creation of
  +          Note that it only makes sense to use the automatic creation of
             nodes with very simple paths. In fact, JXPath will not
             attempt to create intermediate nodes for paths that don't
  -          follow these rules:
  +          follow these three rules:
             <ul>
               <li>
  -              The only axis used is "child::", e.g.
  -              <code>"foo/bar/baz"</code>
  +              The only axes used are "child::" and "attribute::", e.g.
  +              <code>"foo/bar/@baz"</code>
               </li>
               <li>
                 The only two types of predicates used are
  @@ -828,7 +895,7 @@
   
         <p><b>Note:</b>  generally speaking, you can only <i>change</i>  the
           value of an existing variable this way, you cannot <i>define</i>
  -        a new variable. If you do want to define a new variable
  +        a new variable. If you do want to be able to define a new variable
           dynamically, implement a <code>defineVariable()</code>
           method on your custom AbstractFactory and call
           <code>createPathAndSetValue()</code>  rather than
  @@ -951,10 +1018,35 @@
   
       <section name="Pointers">
         <p>
  -        JXPath supports so called Pointers. A Pointer is an object that
  -        represents a location of a node in an object graph. For
  -        example, you can call
  +        Often, rather than getting a node in the object graph, you need to 
  +        find out where in the graph that node is.  In such situations you
  +        will need to employ <i>Pointers</i>. A Pointer is an object that
  +        represents the specific location in the object graph. Effectively,
  +        it is a simple XPath leading from the context root to the selected
  +        node. That simple XPath can be used to repeatedly acquire the same
  +        node of the graph without performing a costly search. 
  +        Let's say, you invoke the JXPath search process by calling the 
  +        <code>getPointer()</code> method:
         </p>
  +<!--============================ + SOURCE + ============================-->
  +<source>
  +                                                                       <b/>
  +Pointer ptr = context.getPointer("//address[zipCode='90190']")
  +System.out.println(ptr);
  +</source>
  +<!--============================ - SOURCE - ============================-->
  +
  +       <p>
  +         This code will find the address with zipCode = 90190 and
  +         return a Pointer describing that node's location. The printed line 
  +         will look something like this:
  +         <code>/vendor[2]/location[1]/address[3]</code>.  It
  +         provides an unambiguous description of the node's location in the object graph
  +         and a fast XPath leading directly to that node.
  +       </p>
  +       <p>
  +         Here's another example:
  +       </p>
   
   <!--============================ + SOURCE + ============================-->
   <source>
  @@ -964,26 +1056,27 @@
   <!--============================ - SOURCE - ============================-->
   
         <p>
  -        Let's say the value of the variable i is 1 and j = 3. If we
  -        call <code>ptr.asPath()</code>, it returns an XPath that
  -        describes this concrete location:
  -        <code>"/employees[1]/addresses[3]"</code>.
  +        Let's say, at the time of execution the value of the variable i is 1 
  +        and j = 3. If we call <code>ptr.asPath()</code>, it returns a simple 
  +        XPath: <code>"/employees[1]/addresses[3]"</code>; this path does not
  +        have a dependency on the variables, it will remain the same when the
  +        variables change.
         </p>
         <p>
  -        If you have an XPath that finds many nodes in the graph, you
  -        can get JXPath to produce a collection of pointers for all of
  -        those found locations:
  +        If you need to perform an exhaustive search for all nodes in the graph
  +        matching a certain XPath, you can get JXPath to produce an iterator 
  +        returning pointers for all of discovered locations:
         </p>
   
   <!--============================ + SOURCE + ============================-->
   <source>
                                                                          <b/>
  -List homeAddresses = context.getPointer("//employee/address[@name='home']");
  +Iterator homeAddresses = context.iteratePointers("//employee/address[@name='home']");
   </source>
   <!--============================ - SOURCE - ============================-->
   
         <p>
  -        Each Pointer in the list will map to a home address object in
  +        Each Pointer returned by the iterator will represent a home address object in
           the graph.
         </p>
         <p>
  @@ -991,14 +1084,6 @@
           the same node of a graph repeatedly.
         </p>
         <p>
  -        Also, when an XPath is repeatedly evaluated in different
  -        contexts (for example, with different variable values) and you
  -        need to preseve results of those evaluations. A Pointer, as
  -        well as the XPath produced by <code>pointer.asPath()</code>
  -        is context-independent, it won't change if involved variables
  -        or expressions change.
  -      </p>
  -      <p>
           JXPath is optimized to interpret XPaths produced by Pointers
           much faster than many other types of XPaths.
         </p>
  @@ -1010,8 +1095,8 @@
           in the object graph, you might want to create a relative JXPathContext.
         </p>
         <p>
  -        First obtain the pointer for the location that is supposed to define
  -        the relative context.  Then obtain the relative context by calling
  +        First, obtain the pointer for the location that is supposed to be the root
  +        the relative context. Then obtain the relative context by calling
           <code>context.getRelativeContext(pointer)</code>.
         </p>
   
  @@ -1043,7 +1128,7 @@
         <p>
           JXPath supports standard XPath functions right out of the box.
           It also supports "standard" extension functions, which are
  -        basically a bridge to Java as well as entirely custom extension
  +        basically a bridge to Java, as well as entirely custom extension
           functions.
         </p>
   
  @@ -1158,8 +1243,8 @@
             is being evaluated. ClassFunctions and PackageFunctions
             have special support for methods and constructors that have
             <a href="apidocs/org/apache/commons/jxpath/ExpressionContext.html"><code>ExpressionContext</code></a>
  -          as the first argument. When such extension function is
  -          invoked, it is given an object that implements the
  +          as the first argument. When such an extension function is
  +          invoked, it is passed an object that implements the
             ExpressionContext interface. The function can then gain
             access to the "current" object in the currently evaluated
             context.
  @@ -1206,8 +1291,10 @@
            or as a Collection proper.  If the argument type is declared
            as NodeSet, JXPath will pass a NodeSet object, otherwise it will take values
            out of the node set and pass those to the function as a regular collection.
  -         Note that a collection is always passed to an extension function by value -
  -         it cannot be modified.
  +         NodeSet, in addition to providing access to the values, also provides access
  +         to pointers.
  +         Note that a collection is often passed to an extension function by value and
  +         cannot be modified. 
           </p>
   
   <!--============================ + SOURCE + ============================-->
  @@ -1259,7 +1346,7 @@
            A custom function can return a collection of arbitrary objects or a NodeSet.
            The simple implementation of NodeSet, 
            <a href="apidocs/org/apache/commons/jxpath/BasicNodeSet.html#setLocale">BasicNodeSet</a>,
  -         may come handy.
  +         may come in handy.
           </p>
         </subsection>
       </section>
  @@ -1330,30 +1417,6 @@
             </td>
           </tr>
           <tr>
  -          <td><i>array of length 1</i>
  -          </td>
  -          <td><i>any</i>
  -          </td>
  -          <td>
  -            Takes the single element of the array
  -            <br/>
  -             and (recursively) converts it to the needed
  -            type
  -          </td>
  -        </tr>
  -        <tr>
  -          <td><i>collection of size 1</i>
  -          </td>
  -          <td><i>any</i>
  -          </td>
  -          <td>
  -            Takes the single element of the array
  -            <br/>
  -             and (recursively) converts it to the needed
  -            type
  -          </td>
  -        </tr>
  -        <tr>
             <td><i>array</i>
             </td>
             <td><i>array</i>
  @@ -1398,34 +1461,41 @@
             </td>
           </tr>
           <tr>
  -          <td>
  -            ExpressionContext
  +          <td><i>non-empty array</i>
             </td>
  -          <td>
  -            Collection, List, Vector, Set
  +          <td><i>any</i>
             </td>
             <td>
  -            Creates a collection of type ArrayList,
  +            Takes the first element of the array
               <br/>
  -             ArrayList, Vector, HashSet respectively and
  -            <br/>
  -             populates it with all current context node
  -            pointers
  +             and (recursively) converts it to the needed
  +            type
             </td>
           </tr>
           <tr>
  -          <td>
  -            ExpressionContext
  +          <td><i>non-empty collection</i>
             </td>
             <td><i>any</i>
             </td>
             <td>
  -            Obtains value of the current context node pointer
  +            Takes the first element of the array
               <br/>
                and (recursively) converts it to the needed
               type
             </td>
           </tr>
  +        <tr>
  +          <td>
  +            NodeSet
  +          </td>
  +          <td>
  +            any
  +          </td>
  +          <td>
  +            Extracts a list of values from the NodeSet and
  +            (recursively) converts the list to the needed type.
  +          </td>
  +        </tr>
         </table>
       </section>
   
  @@ -1472,17 +1542,14 @@
   
       <section name="Nested Contexts">
         <p>
  -        If you need to use the same set of variables while interpreting
  -        XPaths with different beans, it makes sense to put the
  -        variables in a separate context and specify that context as a
  +        If you need to use the same configuration (variables, functions, abstract
  +        factories, locale, leniency etc.)
  +        while interpreting XPaths with different beans, it makes sense to put the
  +        configuration in a separate context and specify that context as a
           parent context every time you allocate a new JXPathContext for
           a JavaBean. This way you don't need to waste time fully
           configuring every context.
         </p>
  -      <p>
  -        The same logic applies to shared extension functions, abstract
  -        factories and locale.
  -      </p>
   
   <!--============================ + SOURCE + ============================-->
   <source>
  @@ -1509,10 +1576,10 @@
         <p>
           When JXPath is asked to evaluate an expression for the first
           time, it compiles it and caches its compiled representation.
  -        This mechanism reduces the overhead caused by compilation. In
  -        some cases though, JXPath's own caching may not be sufficient-
  -        JXPath caches have limited size and they are cleared once in a
  -        while.
  +        This mechanism reduces the overhead caused by compilation. However, in
  +        some cases JXPath's own caching may not be sufficient-
  +        JXPath caches have limited size and they are automatically cleared 
  +        once in a while.
         </p>
         <p>
           Here's how you can precompile an XPath expression:
  @@ -1528,8 +1595,8 @@
   <!--============================ - SOURCE - ============================-->
   
         <p>
  -        The following requirements can be addressed with compiled
  -        expressions:
  +        Use compiled expressions if you need to satisfy any of the following 
  +        requirements:
         </p>
         <ul>
           <li>
  @@ -1538,11 +1605,11 @@
             XPaths multiple times.
           </li>
           <li>
  -          Some XPaths need to be precompiled at initialization time
  +          Some XPaths need to be precompiled at initialization time for speed.
           </li>
           <li>
             The syntax of some XPaths needs to be checked before they
  -          are used for the first time
  +          are used for the first time.
           </li>
         </ul>
       </section>
  @@ -1567,7 +1634,7 @@
             You can add support for types of object models JXPath does
             not support out of the box. An example of such model would
             be an alternative implementation of XML parse tree (e.g.
  -          JDOM etc). You will need to implement one or two APIs to
  +          DOM4J etc). You will need to implement two or three classes to
             allow JXPath to traverse properties of these custom
             objects.
           </li>
  @@ -1657,8 +1724,8 @@
   
         <subsection name="Alternative JXPath Implementation">
           <p>
  -          JXPathContext allows alternative implementations. This is
  -          why instead of allocating JXPathContext directly, you
  +          The core JXPath class, JXPathContext, allows for alternative implementations. 
  +          This is why instead of allocating JXPathContext directly, you
             should call a static <code>newContext</code>  method.
             This method will utilize the JXPathContextFactory API to
             locate a suitable implementation of JXPath. JXPath comes
  
  
  
  1.6       +16 -4     jakarta-commons/jxpath/xdocs/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/xdocs/index.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- index.xml	29 Feb 2004 14:17:43 -0000	1.5
  +++ index.xml	30 Jun 2004 00:30:02 -0000	1.6
  @@ -16,7 +16,7 @@
   -->
   <document>
      <properties>
  -      <title>Home</title>
  +      <title>JXPath Home</title>
         <author email="commons-dev@jakarta.apache.org">Commons Documentation Team</author>
         <author email="dmitri@apache.org">Dmitri Plotnikov</author>
         <revision>$Id$</revision>
  @@ -88,12 +88,24 @@
         <section name="Releases">
           <ul>
             <li>
  -            <a href="http://jakarta.apache.org/builds/jakarta-commons/release/commons-jxpath/v1.0/">Version 1.0</a>
  +            <a href="http://jakarta.apache.org/site/binindex.cgi#commons-jxpath">Version 1.2 (mirror, bin)</a>
             </li>
             <li>
  -            <a href="http://jakarta.apache.org/builds/jakarta-commons/release/commons-jxpath/v1.1/">Version 1.1</a>
  +            <a href="http://jakarta.apache.org/site/sourceindex.cgi#commons-jxpath">Version 1.2 (mirror, source)</a>
  +          </li>
  +          <li>
  +            <a href="http://archive.apache.org/dist/jakarta/commons/jxpath/old/v1.1/">Version 1.1</a>
  +          </li>
  +          <li>
  +            <a href="http://archive.apache.org/dist/jakarta/commons/jxpath/old/v1.0/">Version 1.0</a>
             </li>
           </ul>
  +      </section>
  +
  +      <section name="Nightly Build">
  +        <p>
  +          Nightly build can be found <a href="http://cvs.apache.org/builds/jakarta-commons/nightly/commons-jxpath/">here</a>.
  +        </p>
         </section>
   
      </body>
  
  
  
  1.2       +12 -1     jakarta-commons/jxpath/xdocs/navigation.xml
  
  Index: navigation.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jxpath/xdocs/navigation.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- navigation.xml	2 Mar 2004 02:36:17 -0000	1.1
  +++ navigation.xml	30 Jun 2004 00:30:02 -0000	1.2
  @@ -17,8 +17,19 @@
   <!DOCTYPE org.apache.commons.menus SYSTEM '../../commons-build/menus/menus.dtd'>
   <project name="JXPath">
     <title>JXPath</title>
  -  <organizationLogo href="http://jakarta.apache.org/images/jakarta-logo.gif">Jakarta</organizationLogo>
  +  <organizationLogo href="/images/temp.gif">Jakarta</organizationLogo>
     <body>
  +    <menu name="Commons JXPath">
  +      <item name="Overview" href="/index.html"/>
  +      <item name="User's Guide" href="/users-guide.html"/>
  +      <item name="Javadoc (Release 1.2)" href="apidocs/index.html"/>
  +      <item name="Release Notes (1.2)" href="/release-notes-1.2.html"/>
  +      <item name="Mailing lists" href="/mail-lists.html"/>
  +      <item name="Team" href="/team-list.html"/>
  +      <!--item name="Tasks" href="/tasks.html"/-->
  +      <item name="CVS" href="http://cvs.apache.org/viewcvs/jakarta-commons/jxpath/"/>
  +    </menu>
  +    
       &common-menus;
     </body>
   </project>
  
  
  
  1.1                  jakarta-commons/jxpath/xdocs/release-notes-1.2.xml
  
  Index: release-notes-1.2.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!--
     Copyright 2001-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.
  -->
  <document>
    <properties>
      <title>
         JXPath Release Notes 1.2
      </title>
      <author email="dmitri@apache.org">
         Dmitri Plotnikov
      </author>
    </properties>
  
    <body>
  
    <section name="JXPath 1.2 Release Notes">
      <p>
        Most changes in 1.2 are in the internal implementation and do not affect
        public APIs. However there are a couple of publicly visible features:
        <ul>
          <li>
            Namespace registration. Namespace URIs can now be associated with prefixes
            at the level of JXPathContext.
            <br/>
          </li>
          <li>
            JXPathContext has two new convenience methods: <code>selectNodes</code> and
            <code>selectSingleNode</code>.
            <br/>
          </li>
          <li>
            Type conversion is integrated with BeanUtils.
            <br/>
          </li>
        </ul>
       </p>
       <p>
        This release also includes countless bug fixes and implementation improvements.
       </p>
  
      </section>
  
      <section name="Acknowledgements">
        <p>
          Great thanks to everybody who reported problems, helped to trace them,
          suggested changed or simply provided encouragement. Special thanks to
          <ul>
            <li>Jim Alateras</li>
            <li>Psi Aushilfe3</li>
            <li>Richard Barnett</li>
            <li>Martin John Bartlett</li>
            <li>Christian Beer</li>
            <li>Jochen Bedersdorfer</li>
            <li>Heiko Bensch</li>
            <li>Noel J. Bergman</li>
            <li>Timothy H. Bessie</li>
            <li>Luca Biolcati</li>
            <li>John C Bledsoe</li>
            <li>Doug Borland</li>
            <li>Vladimir R. Bossicard</li>
            <li>Lloyd Boucher</li>
            <li>Don Brown</li>
            <li>Louis Calisi</li>
            <li>Jerome Candat</li>
            <li>Nassim Chalfouh</li>
            <li>Prasad Rao Challakonda</li>
            <li>Adam Chesney</li>
            <li>Prasad Chodavarapu</li>
            <li>David Chung</li>
            <li>Mark R. Diggory</li>
            <li>Robert Burrell Donkin</li>
            <li>Juergen Donnerstag</li>
            <li>Yann Duponchel</li>
            <li>Xavier Dury</li>
            <li>Erik Earle</li>
            <li>Nagesh Eranki</li>
            <li>JP Fielding</li>
            <li>Gary Gregory</li>
            <li>Peter Franken</li>
            <li>Eric D. Friedman</li>
            <li>Matthew Hawthorne</li>
            <li>Joerg Heinicke</li>
            <li>Reidar Hoerning</li>
            <li>Nick Hofstede</li>
            <li>Jason Horman</li>
            <li>Ted Husted</li>
            <li>Ivelin Ivanov</li>
            <li>Uwe Janner</li>
            <li>Kees Jongenburger</li>
            <li>Adrian Perez Jorge</li>
            <li>Snehal Khanna</li>
            <li>John C. Landers</li>
            <li>Jeff Lansing</li>
            <li>Jonathan Layes</li>
            <li>David Leangen</li>
            <li>Joerg Lensing</li>
            <li>Pato Loco</li>
            <li>Tony Lodge</li>
            <li>Joachim Maes</li>
            <li>Thomas Mathis</li>
            <li>Brian McCallister</li>
            <li>Markus Menner</li>
            <li>Stephan Mikaty</li>
            <li>Shahar Mosek</li>
            <li>Russell Neufeld</li>
            <li>Peter Neumcke</li>
            <li>Christopher Oliver</li>
            <li>Steve Pannier</li>
            <li>Adrian Price</li>
            <li>Venkatesh Prasad Ranganath</li>
            <li>Simon Raess</li>
            <li>Sudhir Rao</li>
            <li>Stan Reinis</li>
            <li>Jean-Baptiste Reure</li>
            <li>Michael Nascimento Santos</li>
            <li>Dmitry Sklyut</li>
            <li>Phil Steitz</li>
            <li>Nikolay Tsankov</li>
            <li>Joerg Troester</li>
            <li>Joern Turner</li>
            <li>Rob Walker</li>
            <li>Sylvain Wallez</li>
            <li>Knut Wannheden</li>          
            <li>Chris White</li>
            <li>Jeremy Wohl</li>
            <li>Henri Yandell</li>
            <li>Guanqun Zhang</li>
            <li>Chuck (bigfishsmallpond)</li>
          </ul>
          Thanks!
        </p>
  
      </section>
    </body>
  </document>
  
  
  1.1                  jakarta-commons/jxpath/xdocs/images/logo-wbg.jpg
  
  	<<Binary file>>
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org