From 786cb5065fbd109b3dce35358977eb3dadbdc707 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Fri, 27 Aug 2010 16:55:38 +0000
Subject: [PATCH] Fix experimental/build.xml to work with xalan and match the top build.xml file. This now allow to build the example-plugin with the following sequence: "cd experimental, unzip example-plugin.zip, cd example-plugin/, ant"

---
 opends/experimental/build.xml |  445 +++++++++++++++++++++++++++++++------------------------
 1 files changed, 249 insertions(+), 196 deletions(-)

diff --git a/opends/experimental/build.xml b/opends/experimental/build.xml
index 5d7e36f..283de7f 100644
--- a/opends/experimental/build.xml
+++ b/opends/experimental/build.xml
@@ -26,71 +26,113 @@
  ! -->
 
 <project name="extension" basedir="." default="package">
-    <description>
+  <description>
       This Ant build file contains common targets for extensions. It
       should not be invoked directly.
-    </description>
+  </description>
 
     <!-- OpenDS base directory -->
-    <dirname property="extension.basedir" file="${ant.file.extension}" />
-    <property name="base.dir" location="${extension.basedir}/.." />
-    <property name="opends.install.dir"
+  <dirname property="extension.basedir" file="${ant.file.extension}" />
+  <property name="base.dir" location="${extension.basedir}/.." />
+  <property name="opends.install.dir"
               location="${base.dir}/build/package/OpenDS-2.3.0" />
 
     <!-- Source paths relative to extension -->
-    <property name="src.dir" location="src" />
-    <property name="src.gen.dir" location="src-generated" />
-    <property name="lib.dir" location="lib" />
-    <property name="config.dir" location="config" />
-    <property name="schema.dir" location="schema" />
+  <property name="src.dir" location="src" />
+  <property name="src.gen.dir" location="src-generated" />
+  <property name="lib.dir" location="lib" />
+  <property name="config.dir" location="config" />
+  <property name="schema.dir" location="schema" />
+
+    <!-- CONFIGURE: The path of Xalan-Java distribution. -->
+  <property name="xalan.directory" location="${base.dir}/ext/xalan-j" />
 
     <!-- Build paths relative to extension -->
-    <property name="build.dir" location="build" />
-    <property name="classes.dir" location="${build.dir}/classes" />
-    <property name="javadoc.dir" location="${build.dir}/javadoc" />
-    <property name="package.dir" location="${build.dir}/package" />
-    <property name="message.dir" location="${build.dir}/message" />
+  <property name="build.dir" location="build" />
+  <property name="classes.dir" location="${build.dir}/classes" />
+  <property name="javadoc.dir" location="${build.dir}/javadoc" />
+  <property name="package.dir" location="${build.dir}/package" />
+  <property name="message.dir" location="${build.dir}/message" />
 
     <!-- Files based on extension name -->
-    <property name="jar.file" value="${extension.name}.jar" />
-    <property name="properties.file" value="${extension.name}.properties" />
+  <property name="jar.file" value="${extension.name}.jar" />
+  <property name="properties.file" value="${extension.name}.properties" />
 
     <!-- Paths relative to OpenDS source tree -->
-    <property name="resource.dir" location="${base.dir}/resource" />
-    <property name="admin.dir" location="${resource.dir}/admin" />
+  <property name="resource.dir" location="${base.dir}/resource" />
+  <property name="admin.dir" location="${resource.dir}/admin" />
 
     <!-- Build class path -->
-    <path id="build.classpath">
-        <fileset dir="${lib.dir}">
-            <include name="*.jar" />
-        </fileset>
-        <pathelement path="${base.dir}/build/classes" />
-    </path>
+  <path id="build.classpath">
+    <fileset dir="${lib.dir}">
+      <include name="*.jar" />
+    </fileset>
+    <pathelement path="${base.dir}/build/classes" />
+  </path>
 
     <!-- Condition variable used for deciding if messages need generating -->
-    <available property="hasmessages" file="${properties.file}" type="file">
-        <filepath>
-            <dirset dir="${src.dir}" />
-        </filepath>
-    </available>
+  <available property="hasmessages" file="${properties.file}" type="file">
+    <filepath>
+      <dirset dir="${src.dir}" />
+    </filepath>
+  </available>
 
     <!-- Clean up any files generated during the build process. -->
-    <target name="clean"
+  <target name="clean"
             description="Clean up any files generated during the build process.">
-        <delete includeemptydirs="true">
-            <fileset dir="${src.gen.dir}" includes="**/*" />
-        </delete>
-        <delete includeemptydirs="true">
-            <fileset dir="${build.dir}" includes="**/*" />
-        </delete>
-    </target>
+    <delete includeemptydirs="true">
+      <fileset dir="${src.gen.dir}" includes="**/*" />
+    </delete>
+    <delete includeemptydirs="true">
+      <fileset dir="${build.dir}" includes="**/*" />
+    </delete>
+  </target>
+
+  <!-- Perform verification for Xalan dependency -->
+  <target name="ensurexalan" description="Verify that the Xalan-Java jar files are accessibles.">
+    <fail message="Please use -Dxalan.directory to reference the directory that contains Xalan-Java">
+      <condition>
+        <not>
+          <available property="xalan.directory.exists" file="${xalan.directory}" />
+        </not>
+      <!-- >
+      <then>
+        <echo message="Please use -Dxalan.directory to point to a directory " />
+        <echo message="that contains an unzipped delivery of Xalan-Java." />
+        <echo message="You can download Xalan-Java from the Apache website :" />
+        <echo message="  http://xml.apache.org/xalan-j/" />
+        <echo message="" />
+      < -->
+      </condition>
+    </fail>
+
+    <!-- Xalan-J Class Path : refer to it explicitly from each XSLT task. -->
+    <path id="xalan.class.path">
+      <fileset dir="${xalan.directory}">
+        <include name="*.jar" />
+      </fileset>
+    </path>
+
+    <!-- Verify that all required Xalan jars are present -->
+    <property name="xalan.jar.files" value="serializer.jar,xalan.jar,xercesImpl.jar,xml-apis.jar" />
+    <fail message="Missing at least one Xalan-Java jar files in directory ${xalan.directory} (expecting : ${xalan.jar.files}).">
+      <condition>
+        <not>
+          <resourcecount count="4">
+            <fileset dir="${xalan.directory}" includes="${xalan.jar.files}" />
+          </resourcecount>
+        </not>
+      </condition>
+    </fail>
+
+  </target>
 
     <!-- Compile the Directory Server extension source files. -->
-    <target name="compile"
+  <target name="compile"
             depends="init,compileadmin,generate-messages"
             description="Compile the Directory Server extension source files.">
-        <mkdir dir="${classes.dir}" />
-        <javac srcdir="${src.dir}:${src.gen.dir}"
+    <mkdir dir="${classes.dir}" />
+    <javac srcdir="${src.dir}:${src.gen.dir}"
                destdir="${classes.dir}"
                optimize="true"
                excludes="**/package-info.java"
@@ -102,260 +144,271 @@
                fork="true"
                memoryInitialSize="${MEM}"
                memoryMaximumSize="${MEM}">
-            <compilerarg value="-Xlint:all" />
-            <classpath refid="build.classpath" />
-        </javac>
-    </target>
+      <compilerarg value="-Xlint:all" />
+      <classpath refid="build.classpath" />
+    </javac>
+  </target>
 
     <!-- Generate JavaDoc documentation from the source files. -->
-    <target name="javadoc"
+  <target name="javadoc"
             depends="init,compile"
             description="Generate JavaDoc documentation.">
-        <mkdir dir="${javadoc.dir}" />
-        <javadoc destdir="${javadoc.dir}"
+    <mkdir dir="${javadoc.dir}" />
+    <javadoc destdir="${javadoc.dir}"
                  source="1.5"
                  additionalparam="-quiet"
                  linksource="yes"
                  windowtitle="${extension.description} API Documentation"
                  maxmemory="${MEM}">
-            <classpath refid="build.classpath" />
-            <packageset dir="${src.dir}" />
-            <packageset dir="${src.gen.dir}" />
-        </javadoc>
-    </target>
+      <classpath refid="build.classpath" />
+      <packageset dir="${src.dir}" />
+      <packageset dir="${src.gen.dir}" />
+    </javadoc>
+  </target>
 
     <!-- Package the Directory Server extension for distribution. -->
-    <target name="package"
+  <target name="package"
             depends="clean,compile"
             description="Package the Directory Server extension for distribution.">
-        <mkdir dir="${package.dir}" />
-        <jar jarfile="${package.dir}/${jar.file}"
+    <mkdir dir="${package.dir}" />
+    <jar jarfile="${package.dir}/${jar.file}"
              basedir="${classes.dir}"
              compress="true"
              index="true" />
-    </target>
+  </target>
 
     <!-- Install the Directory Server extension in an existing OpenDS installation. -->
-    <target name="install"
+  <target name="install"
             depends="package"
             description="Install the Directory Server extension in an existing OpenDS installation.">
 
-        <echo message="Use the following Ant option to change the install location:" />
-        <echo message="" />
-        <echo message="  -Dopends.install.dir=path" />
-        <echo message="      The path of an OpenDS installation where the extension will be installed." />
-        <echo message="      Used by the install target [default: ${opends.install.dir}]." />
-        <echo message="" />
+    <echo message="Use the following Ant option to change the install location:" />
+    <echo message="" />
+    <echo message="  -Dopends.install.dir=path" />
+    <echo message="      The path of an OpenDS installation where the extension will be installed." />
+    <echo message="      Used by the install target [default: ${opends.install.dir}]." />
+    <echo message="" />
 
-        <mkdir dir="${opends.install.dir}/lib" />
-        <copy todir="${opends.install.dir}/lib">
-            <fileset file="${lib.dir}/*.jar" />
-        </copy>
-        <mkdir dir="${opends.install.dir}/lib/extensions" />
-        <copy todir="${opends.install.dir}/lib/extensions">
-            <fileset file="${package.dir}/*.jar" />
-        </copy>
-        <copy todir="${opends.install.dir}/config">
-            <fileset file="${config.dir}/*.ldif" />
-        </copy>
-        <copy todir="${opends.install.dir}/config/schema">
-            <fileset file="${schema.dir}/*.ldif" />
-        </copy>
-    </target>
+    <mkdir dir="${opends.install.dir}/lib" />
+    <copy todir="${opends.install.dir}/lib">
+      <fileset file="${lib.dir}/*.jar" />
+    </copy>
+    <mkdir dir="${opends.install.dir}/lib/extensions" />
+    <copy todir="${opends.install.dir}/lib/extensions">
+      <fileset file="${package.dir}/*.jar" />
+    </copy>
+    <copy todir="${opends.install.dir}/config">
+      <fileset file="${config.dir}/*.ldif" />
+    </copy>
+    <copy todir="${opends.install.dir}/config/schema">
+      <fileset file="${schema.dir}/*.ldif" />
+    </copy>
+  </target>
 
     <!-- Perform common initialization common to several targets. -->
-    <target name="init">
-        <tstamp>
-            <format property="timestamp" pattern="yyyyMMddHHmmss" />
-        </tstamp>
-        <condition property="DEBUG_BUILD" value="false">
-            <not>
-                <isset property="DEBUG_BUILD" />
-            </not>
-        </condition>
-        <condition property="MEM" value="128M">
-            <not>
-                <isset property="MEM" />
-            </not>
-        </condition>
-    </target>
+  <target name="init">
+    <tstamp>
+      <format property="timestamp" pattern="yyyyMMddHHmmss" />
+    </tstamp>
+    <condition property="DEBUG_BUILD" value="false">
+      <not>
+        <isset property="DEBUG_BUILD" />
+      </not>
+    </condition>
+    <condition property="MEM" value="128M">
+      <not>
+        <isset property="MEM" />
+      </not>
+    </condition>
+  </target>
 
     <!-- Compile the Directory Server extension configuration definition files. -->
-    <target name="compileadmin" depends="validateadmin">
-        <!-- Copy XML definitions for this extension and core server into the same location -->
-        <tempfile property="admin.temp.dir" destDir="${classes.dir}" />
-        <mkdir dir="${admin.temp.dir}" />
+  <target name="compileadmin" depends="ensurexalan,validateadmin">
 
-        <copy todir="${admin.temp.dir}">
-            <fileset dir="${src.dir}" includes="**/*.xml" />
-            <fileset dir="${base.dir}/src/admin/defn" includes="**/*.xml" />
-        </copy>
+    <echo message="classpath = ${xalan.class.path}" />
+    <!-- Copy XML definitions for this extension and core server into the same location -->
+    <tempfile property="admin.temp.dir" destDir="${classes.dir}" />
+    <mkdir dir="${admin.temp.dir}" />
+
+    <copy todir="${admin.temp.dir}">
+      <fileset dir="${src.dir}" includes="**/*.xml" />
+      <fileset dir="${base.dir}/src/admin/defn" includes="**/*.xml" />
+    </copy>
 
         <!-- Compile the Directory Server extension configuration meta classes. -->
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${src.gen.dir}"
               style="${admin.dir}/metaMO.xsl">
-            <include name="**/*Configuration.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-            <regexpmapper handledirsep="true"
+      <include name="**/*Configuration.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <regexpmapper handledirsep="true"
                           from="^(.*)/([^/]+)Configuration\.xml$$"
                           to="\1/meta/\2CfgDefn.java" />
-            <param name="base-dir" expression="${admin.temp.dir}" />
-        </xslt>
+      <param name="base-dir" expression="${admin.temp.dir}" />
+      <classpath refid="xalan.class.path" />
+    </xslt>
 
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${src.gen.dir}"
               style="${admin.dir}/package-info.xsl">
-            <include name="**/Package.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-            <regexpmapper handledirsep="true"
+      <include name="**/Package.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <regexpmapper handledirsep="true"
                           from="^(.*)/([^/]+)\.xml$$"
                           to="\1/meta/package-info.java" />
-            <param name="type" expression="meta" />
-        </xslt>
+      <param name="type" expression="meta" />
+      <classpath refid="xalan.class.path" />
+    </xslt>
 
         <!-- Compile the Directory Server extension configuration client classes. -->
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${src.gen.dir}"
               style="${admin.dir}/clientMO.xsl">
-            <include name="**/*Configuration.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-            <regexpmapper handledirsep="true"
+      <include name="**/*Configuration.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <regexpmapper handledirsep="true"
                           from="^(.*)/([^/]+)Configuration\.xml$$"
                           to="\1/client/\2CfgClient.java" />
-            <param name="base-dir" expression="${admin.temp.dir}" />
-        </xslt>
+      <param name="base-dir" expression="${admin.temp.dir}" />
+      <classpath refid="xalan.class.path" />
+    </xslt>
 
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${src.gen.dir}"
               style="${admin.dir}/package-info.xsl">
-            <include name="**/Package.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-            <regexpmapper handledirsep="true"
+      <include name="**/Package.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <regexpmapper handledirsep="true"
                           from="^(.*)/([^/]+)\.xml$$"
                           to="\1/client/package-info.java" />
-            <param name="type" expression="client" />
-        </xslt>
+      <param name="type" expression="client" />
+      <classpath refid="xalan.class.path" />
+    </xslt>
 
         <!-- Compile the Directory Server extension configuration server classes. -->
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${src.gen.dir}"
               style="${admin.dir}/serverMO.xsl">
-            <include name="**/*Configuration.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-            <regexpmapper handledirsep="true"
+      <include name="**/*Configuration.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <regexpmapper handledirsep="true"
                           from="^(.*)/([^/]+)Configuration\.xml$$"
                           to="\1/server/\2Cfg.java" />
-            <param name="base-dir" expression="${admin.temp.dir}" />
-        </xslt>
+      <param name="base-dir" expression="${admin.temp.dir}" />
+      <classpath refid="xalan.class.path" />
+    </xslt>
 
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${src.gen.dir}"
               style="${admin.dir}/package-info.xsl">
-            <include name="**/Package.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-            <regexpmapper handledirsep="true"
+      <include name="**/Package.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <regexpmapper handledirsep="true"
                           from="^(.*)/([^/]+)\.xml$$"
                           to="\1/server/package-info.java" />
-            <param name="type" expression="server" />
-        </xslt>
+      <param name="type" expression="server" />
+    </xslt>
 
         <!-- Compile the Directory Server extension configuration ldap profile property files. -->
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${classes.dir}/admin/profiles/ldap"
               style="${admin.dir}/ldapMOProfile.xsl">
-            <include name="**/*Configuration.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-            <regexpmapper handledirsep="true"
+      <include name="**/*Configuration.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <regexpmapper handledirsep="true"
                           from="^(.*)/([^/]+)Configuration\.xml$$"
                           to="\1/meta/\2CfgDefn.properties" />
-            <param name="base-dir" expression="${admin.temp.dir}" />
-        </xslt>
+      <param name="base-dir" expression="${admin.temp.dir}" />
+      <classpath refid="xalan.class.path" />
+    </xslt>
 
         <!-- Compile the Directory Server extension configuration cli profile property files. -->
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${classes.dir}/admin/profiles/cli"
               style="${admin.dir}/cliMOProfile.xsl">
-            <include name="**/*Configuration.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-            <regexpmapper handledirsep="true"
+      <include name="**/*Configuration.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <regexpmapper handledirsep="true"
                           from="^(.*)/([^/]+)Configuration\.xml$$"
                           to="\1/meta/\2CfgDefn.properties" />
-            <param name="base-dir" expression="${admin.temp.dir}" />
-        </xslt>
+      <param name="base-dir" expression="${admin.temp.dir}" />
+      <classpath refid="xalan.class.path" />
+    </xslt>
 
         <!-- Compile the Directory Server extension configuration I18N message files. -->
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${classes.dir}/admin/messages"
               style="${admin.dir}/messagesMO.xsl">
-            <include name="**/*Configuration.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-            <regexpmapper handledirsep="true"
+      <include name="**/*Configuration.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <regexpmapper handledirsep="true"
                           from="^(.*)/([^/]+)Configuration\.xml$$"
                           to="\1/meta/\2CfgDefn.properties" />
-            <param name="base-dir" expression="${admin.temp.dir}" />
-        </xslt>
+      <param name="base-dir" expression="${admin.temp.dir}" />
+      <classpath refid="xalan.class.path" />
+    </xslt>
 
         <!-- Compile the Directory Server extension configuration manifest file. -->
-        <xslt basedir="${admin.temp.dir}"
+    <xslt basedir="${admin.temp.dir}"
               destdir="${admin.temp.dir}"
               extension=".manifest"
               style="${admin.dir}/manifestMO.xsl">
-            <include name="**/*Configuration.xml" />
-            <exclude name="org/opends/server/admin/std/*.xml" />
-        </xslt>
-        <concat destfile="${classes.dir}/admin/extension.manifest">
-            <fileset dir="${admin.temp.dir}" includes="**/*.manifest" />
-        </concat>
+      <include name="**/*Configuration.xml" />
+      <exclude name="org/opends/server/admin/std/*.xml" />
+      <classpath refid="xalan.class.path" />
+    </xslt>
+    <concat destfile="${classes.dir}/admin/extension.manifest">
+      <fileset dir="${admin.temp.dir}" includes="**/*.manifest" />
+    </concat>
 
         <!-- Clean up -->
-        <delete dir="${admin.temp.dir}" />
-    </target>
+    <delete dir="${admin.temp.dir}" />
+  </target>
 
     <!-- Validate the Directory Server extension configuration definitions. -->
-    <target name="validateadmin">
-        <schemavalidate>
-            <fileset dir="${src.dir}" includes="**/*.xml" />
-            <schema namespace="http://www.opends.org/admin"
+  <target name="validateadmin">
+    <schemavalidate>
+      <fileset dir="${src.dir}" includes="**/*.xml" />
+      <schema namespace="http://www.opends.org/admin"
                     file="${admin.dir}/admin.xsd" />
-            <schema namespace="http://www.opends.org/admin-ldap"
+      <schema namespace="http://www.opends.org/admin-ldap"
                     file="${admin.dir}/admin-ldap.xsd" />
-            <schema namespace="http://www.opends.org/admin-cli"
+      <schema namespace="http://www.opends.org/admin-cli"
                     file="${admin.dir}/admin-cli.xsd" />
-        </schemavalidate>
-    </target>
+    </schemavalidate>
+  </target>
 
     <!-- Generate messages from messages.properties file
          located in the message directory and declared in a package
      -->
-    <target name="generate-messages" if="hasmessages">
-        <typedef name="genmsg"
+  <target name="generate-messages" if="hasmessages">
+    <typedef name="genmsg"
                  classname="org.opends.build.tools.GenerateMessageFile">
-            <classpath>
-                <fileset dir="${base.dir}/build/build-tools">
-                    <include name="*.jar" />
-                </fileset>
-            </classpath>
-        </typedef>
+      <classpath>
+        <fileset dir="${base.dir}/build/build-tools">
+          <include name="*.jar" />
+        </fileset>
+      </classpath>
+    </typedef>
 
-        <path id="messages.src.path">
-            <fileset dir="${src.dir}">
-                <include name="**/${properties.file}" />
-            </fileset>
-        </path>
-        <property name="messages.src.file" refid="messages.src.path" />
+    <path id="messages.src.path">
+      <fileset dir="${src.dir}">
+        <include name="**/${properties.file}" />
+      </fileset>
+    </path>
+    <property name="messages.src.file" refid="messages.src.path" />
 
-        <pathconvert property="messages.dst.file" refid="messages.src.path">
-            <map from="${src.dir}" to="${src.gen.dir}" />
-        </pathconvert>
-        <dirname property="messages.dst.dir" file="${messages.dst.file}" />
+    <pathconvert property="messages.dst.file" refid="messages.src.path">
+      <map from="${src.dir}" to="${src.gen.dir}" />
+    </pathconvert>
+    <dirname property="messages.dst.dir" file="${messages.dst.file}" />
 
 
         <!-- Needed by genmsg task -->
-        <property name="msg.dir" location="${src.dir}" />
-        <property name="msg.javagen.dir" location="${src.gen.dir}" />
+    <property name="msg.dir" location="${src.dir}" />
+    <property name="msg.javagen.dir" location="${src.gen.dir}" />
 
-        <genmsg sourceProps="${messages.src.file}" />
-        <copy file="${messages.src.file}" todir="${classes.dir}/messages" />
-    </target>
+    <genmsg sourceProps="${messages.src.file}" />
+    <copy file="${messages.src.file}" todir="${classes.dir}/messages" />
+  </target>
 </project>

--
Gitblit v1.10.0