mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

neil_a_wilson
28.55.2007 b7d4b7fe4faa066678983b7ff69a166bbf11886c
Add features into our build process that can make use of the SVNKit library to
interact with the Subversion workspace. This includes three components:

- A new Ant task that stores the current workspace revision number in an Ant
property which gets built into DynamicConstants.java and exposed in the
--fullversion and "cn=version,cn=monitor" information.

- A new Ant task that checks all files that have been locally modified in the
current workspace for potential cases in which a copyright date needs to be
updated to include the current year.

- A change to the coveragediff tool so that it uses the SVNKit library to
obtain the diff rather than trying to execute the external svn/svn.exe
command.
19 files added
5 files modified
1264 ■■■■■ changed files
opends/build-tools/src/org/opends/build/tools/CheckCopyrightDates.java 300 ●●●●● patch | view | raw | blame | history
opends/build-tools/src/org/opends/build/tools/CoverageDiff.java 111 ●●●●● patch | view | raw | blame | history
opends/build-tools/src/org/opends/build/tools/GetSubversionRevision.java 140 ●●●●● patch | view | raw | blame | history
opends/build.xml 83 ●●●● patch | view | raw | blame | history
opends/ext/svnkit/COPYING 47 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/GANYMED-LICENSE 57 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/JAVAHL-LICENSE 55 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/README.txt 40 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/SEQUENCE-LICENSE 48 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/changelog.txt 288 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/doc.tar.gz patch | view | raw | blame | history
opends/ext/svnkit/ganymed.jar patch | view | raw | blame | history
opends/ext/svnkit/logging.properties.disabled 9 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/svn 26 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/svn.bat 11 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/svnkit-cli.jar patch | view | raw | blame | history
opends/ext/svnkit/svnkit-javahl.jar patch | view | raw | blame | history
opends/ext/svnkit/svnkit.jar patch | view | raw | blame | history
opends/ext/svnkit/svnkitsrc.zip patch | view | raw | blame | history
opends/ext/svnkit/svnsync 26 ●●●●● patch | view | raw | blame | history
opends/ext/svnkit/svnsync.bat 11 ●●●●● patch | view | raw | blame | history
opends/resource/DynamicConstants.java.stubs 7 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/core/DirectoryServer.java 1 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java 4 ●●● patch | view | raw | blame | history
opends/build-tools/src/org/opends/build/tools/CheckCopyrightDates.java
New file
@@ -0,0 +1,300 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2007 Sun Microsystems, Inc.
 */
package org.opends.build.tools;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.GregorianCalendar;
import java.util.LinkedList;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.FileSet;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.wc.SVNStatus;
import org.tmatesoft.svn.core.wc.SVNStatusClient;
import org.tmatesoft.svn.core.wc.SVNStatusType;
/**
 * This class provides an implementation of an Ant task that may be used to
 * verify that the copyright dates of all modified files in the workspace have
 * been updated to include the current year.  In particular, for all files in
 * one of the specified filesets that have been created or modified in the
 * local workspace, it will parse the file for any line which appears to be
 * a comment and contains the word "copyright".  If the line does not also
 * contain the current year, then it will be flagged as a potential violation to
 * be addressed.
 */
public class CheckCopyrightDates
       extends Task
{
  /**
   * The name of the system property that may be used to prevent copyright date
   * problems from failing the build.
   */
  public static final String IGNORE_ERRORS_PROPERTY =
       "org.opends.server.IgnoreCopyrightDateErrors";
  // A list of all the filesets to be checked.
  private LinkedList<FileSet> filesetList = new LinkedList<FileSet>();
  // The path to the root of the Subversion workspace for which to retrieve the
  // revision number.
  private String workspace = null;
  /**
   * Adds the provided fileset to the list of filesets that should be checked.
   *
   * @param  fileset  A fileset containing a list of files that should be
   *                  checked.
   */
  public void addFileset(FileSet fileset)
  {
    filesetList.add(fileset);
  }
  /**
   * Specifies the path to the root of the Subversion workspace for which to
   * retrieve the revision number.
   *
   * @param  workspace  The path to the root of the Subversion workspace for
   *                    which to retrieve the revision number.
   */
  public void setWorkspace(String workspace)
  {
    this.workspace = workspace;
  }
  /**
   * Performs the appropriate processing needed for this task.  In this case,
   * it uses SVNKit to identify all modified files in the current workspace.
   * For all source files
   *
   * the current revision number for the local
   * workspace and store it in a specified property.
   */
  @Override()
  public void execute()
  {
    // Make sure that at least one fileset was provided.
    if (filesetList.isEmpty())
    {
      throw new BuildException("ERROR:  No filesets were specified to " +
                               "indicate which files should be checked.");
    }
    File workspacePath;
    if ((workspace == null) || (workspace.length() == 0))
    {
      workspacePath = getProject().getBaseDir();
    }
    else
    {
      workspacePath = new File(workspace);
    }
    String workspacePathString = workspacePath.getAbsolutePath() +
                                 File.separator;
    // Get the year to use in the determination.
    GregorianCalendar calendar = new GregorianCalendar();
    int year = calendar.get(GregorianCalendar.YEAR);
    String yearString = String.valueOf(year);
    // Get the current status for all files in the fileset.  For any files with
    // local changes, see if there are any files that potentially have the wrong
    // copyright year.
    SVNStatusClient svnClient = new SVNStatusClient(null, null);
    LinkedList<String> problemFiles = new LinkedList<String>();
    for (FileSet fileSet : filesetList)
    {
      DirectoryScanner scanner = fileSet.getDirectoryScanner(getProject());
      for (String relativePath : scanner.getIncludedFiles())
      {
        String filePath = scanner.getBasedir() + File.separator + relativePath;
        try
        {
          SVNStatus svnStatus = svnClient.doStatus(new File(filePath), false);
          if (svnStatus == null)
          {
            System.err.println("WARNING:  Could not determine Subversion " +
                               "status for file " + filePath);
            System.err.println("No further copyright date checking will be " +
                               "performed.");
            return;
          }
          SVNStatusType statusType = svnStatus.getContentsStatus();
          if ((statusType == SVNStatusType.STATUS_ADDED) ||
              (statusType == SVNStatusType.STATUS_MODIFIED) ||
              (statusType == SVNStatusType.STATUS_UNVERSIONED))
          {
            BufferedReader reader = null;
            try
            {
              boolean copyrightFound   = false;
              boolean correctYearFound = false;
              reader = new BufferedReader(new FileReader(filePath));
              String line = reader.readLine();
              while (line != null)
              {
                String lowerLine = line.toLowerCase().trim();
                if (isCommentLine(lowerLine))
                {
                  int copyrightPos = lowerLine.indexOf("copyright");
                  if (copyrightPos > 0)
                  {
                    copyrightFound = true;
                    if (lowerLine.indexOf(yearString) > 0)
                    {
                      correctYearFound = true;
                      break;
                    }
                  }
                }
                line = reader.readLine();
              }
              if (copyrightFound && (! correctYearFound))
              {
                if (filePath.startsWith(workspacePathString))
                {
                  problemFiles.add(filePath.substring(
                                                 workspacePathString.length()));
                }
                else
                {
                  problemFiles.add(filePath);
                }
              }
            }
            catch (IOException ioe)
            {
              System.err.println("ERROR:  Could not read file " + filePath +
                                 " to check copyright date.");
              System.err.println("No further copyright date checking will be " +
                                 "performed.");
              return;
            }
            finally
            {
              try
              {
                if (reader != null)
                {
                  reader.close();
                }
              } catch (Exception e) {}
            }
          }
        }
        catch (SVNException svnException)
        {
          System.err.println("WARNING:  Could not determine Subversion " +
                             "status for file " + filePath + ":  " +
                             svnException);
          System.err.println("No further copyright date checking will be " +
                             "performed.");
          return;
        }
      }
    }
    if (! problemFiles.isEmpty())
    {
      System.err.println("WARNING:  Potential copyright year updates needed " +
                         "for the following files:");
      for (String filename : problemFiles)
      {
        System.err.println("     " + filename);
      }
      String ignoreStr = getProject().getProperty(IGNORE_ERRORS_PROPERTY);
      if ((ignoreStr == null) || (! ignoreStr.equalsIgnoreCase("true")))
      {
        throw new BuildException("Fix copyright date problems before " +
                                 "proceeding, or use '-D" +
                                 IGNORE_ERRORS_PROPERTY + "=true' to " +
                                 "ignore copyright warnings.");
      }
    }
  }
  /**
   * Indicates whether the provided line appears to be a comment line.  It will
   * check for a number of common comment indicators in Java source files,
   * shell scripts, XML files, and LDIF files.
   *
   * @param  lowerLine  The line to be checked.  It should have been coverted to
   *                    all lowercase characters and any leading spaces
   *                    removed.
   *
   * @return  {@code true} if it appears that the line is a comment line, or
   *          {@code false} if not.
   */
  private static boolean isCommentLine(String lowerLine)
  {
    if (lowerLine.startsWith("/*") ||
        lowerLine.startsWith("*") ||
        lowerLine.startsWith("//") ||
        lowerLine.startsWith("#") ||
        lowerLine.startsWith("<!--") ||
        lowerLine.startsWith("!"))
    {
      return true;
    }
    else
    {
      return false;
    }
  }
}
opends/build-tools/src/org/opends/build/tools/CoverageDiff.java
@@ -1,3 +1,29 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2007 Sun Microsystems, Inc.
 */
package org.opends.build.tools;
import com.vladium.emma.report.*;
@@ -11,6 +37,10 @@
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.wc.SVNDiffClient;
import org.tmatesoft.svn.core.wc.SVNRevision;
public class CoverageDiff extends Task {
@@ -78,7 +108,6 @@
  private File emmaDataPath;
  private File outputPath;
  private String diffPath;
  private File svnPath;
  public void setEmmaDataPath(String file)
  {
@@ -95,11 +124,6 @@
    diffPath = diffArgs;
  }
  public void setSvnPath(String file)
  {
    svnPath = new File(file);
  }
  public void setVerbose(String bol)
  {
    verbose = bol.toLowerCase().equals("true");
@@ -120,7 +144,7 @@
    }
  }
  private void innerExecute() throws BuildException
  private void innerExecute() throws BuildException, SVNException
  {
    long start = System.currentTimeMillis();
    verboseOut("Starting to execute coveragediff.");
@@ -246,68 +270,21 @@
    return m_view;
  }
  private BufferedReader getDiffOutputReader() throws IOException {
  private BufferedReader getDiffOutputReader()
          throws IOException, SVNException {
    File workspaceRoot = getProject().getBaseDir();
    StringBuilder svnExecCommand = new StringBuilder();
    SVNDiffClient svnClient = new SVNDiffClient(null, null);
    verboseOut("svnPath = " + svnPath);
    if(svnPath != null && svnPath.isAbsolute() && svnPath.isFile())
    {
      svnExecCommand.append(svnPath.getAbsolutePath());
    }
    else
    {
      //Just hope its in the path.  On Windows, we need to look for svn.exe instead of just svn.
      if (System.getProperty("os.name").toLowerCase().indexOf("windows") >= 0) {
        svnExecCommand.append("svn.exe");
      } else {
        svnExecCommand.append("svn");
      }
    }
    File diffFile = File.createTempFile("coverage", "diff");
    diffFile.deleteOnExit();
    //First verify svn is in path
    final Process checkChild = Runtime.getRuntime().exec(new String[]{svnExecCommand.toString(), "--version"});
    svnClient.doDiff(workspaceRoot, SVNRevision.BASE, workspaceRoot,
                     SVNRevision.WORKING, true, false,
                     new FileOutputStream(diffFile));
    verboseOut("Waiting for '" + svnExecCommand + " --version' to complete.");
    try
    {
      // We have to consume the output of the process (at least on Windows).
      BufferedReader reader =
              new BufferedReader(new InputStreamReader(checkChild.getInputStream()));
      while (reader.readLine() != null) {
        // Skip over the output of the process
      }
      checkChild.waitFor();
    }
    catch(InterruptedException ie)
    {
      throw new IOException("svn --version process interrupted");
    }
    verboseOut("'" + svnExecCommand + " --version' has completed.");
    if(checkChild.exitValue() != 0)
    {
      throw new IOException("Error returned from SVN call");
    }
    checkChild.destroy();
    List<String> cmdArray = new ArrayList<String>();
    // TODO: ideally, this should build up a command arg array instead of a single string
    // to guard against svn having spaces in the path.  But that isn't too likely
    svnExecCommand.append(" diff ");
    if(diffPath != null)
    {
      svnExecCommand.append(diffPath);
    }
    verboseOut("About to execute " + svnExecCommand.toString());
    final Process child = Runtime.getRuntime().exec(svnExecCommand.toString());
    InputStream diffOutputStream = child.getInputStream();
    return new BufferedReader(new InputStreamReader(diffOutputStream));
    return new BufferedReader(new InputStreamReader(new FileInputStream(
                                                             diffFile)));
  }
  private void processDiffOutput(BufferedReader diffOutput,
@@ -644,7 +621,7 @@
    int workingCopyRange;
    int otherCopyBegin;
    int otherCopyRange;
    Double[] modCoverage = new Double[4];
    modCoverage[COVERED_MOD_EXE_LINES] = 0.0;
    modCoverage[MOD_EXE_LINES] = 0.0;
@@ -796,7 +773,7 @@
    {
      return null;
    }
    for(Iterator packages = rootItem.getChildren(); packages.hasNext();)
    {
      IItem packageItem = (IItem)packages.next();
opends/build-tools/src/org/opends/build/tools/GetSubversionRevision.java
New file
@@ -0,0 +1,140 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2007 Sun Microsystems, Inc.
 */
package org.opends.build.tools;
import java.io.File;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.wc.SVNInfo;
import org.tmatesoft.svn.core.wc.SVNRevision;
import org.tmatesoft.svn.core.wc.SVNWCClient;
/**
 * This class provides an implementation of an Ant task that may be used to
 * determine the current Subversion revision number of the current working
 * copy.  The value of the revision number will be stored in an Ant property.
 */
public class GetSubversionRevision
       extends Task
{
  // The name of the property in which the revision number should be set.
  private String propertyName = null;
  // The path to the root of the Subversion workspace for which to retrieve the
  // revision number.
  private String workspace = null;
  /**
   * Specifies the name of the Ant property into which the Subversion revision
   * number will be stored.
   *
   * @param  propertyName  The name of the Ant property into which the
   *                       Subversion revision number will be stored.
   */
  public void setProperty(String propertyName)
  {
    this.propertyName = propertyName;
  }
  /**
   * Specifies the path to the root of the Subversion workspace for which to
   * retrieve the revision number.
   *
   * @param  workspace  The path to the root of the Subversion workspace for
   *                    which to retrieve the revision number.
   */
  public void setWorkspace(String workspace)
  {
    this.workspace = workspace;
  }
  /**
   * Performs the appropriate processing needed for this task.  In this case,
   * it uses SVNKit to identify the current revision number for the local
   * workspace and store it in a specified property.
   */
  @Override()
  public void execute()
  {
    if ((propertyName == null) || (propertyName.length() == 0))
    {
      throw new BuildException("ERROR:  No property was specified for " +
                               "storing the revision number value.");
    }
    File workspacePath;
    if ((workspace == null) || (workspace.length() == 0))
    {
      workspacePath = getProject().getBaseDir();
    }
    else
    {
      workspacePath = new File(workspace);
    }
    SVNWCClient svnClient = new SVNWCClient(null, null);
    try
    {
      SVNInfo svnInfo = svnClient.doInfo(workspacePath, SVNRevision.WORKING);
      SVNRevision revision = svnInfo.getRevision();
      if (revision == null)
      {
        System.err.println("WARNING:  Could not determine Subversion " +
                           "revision number for current workspace.");
        getProject().setNewProperty(propertyName, "-1");
      }
      else
      {
        getProject().setNewProperty(propertyName,
                                    String.valueOf(revision.getNumber()));
      }
    }
    catch (SVNException svnException)
    {
      System.err.println("WARNING:  Could not determine Subversion " +
                         "revision number for current workspace:  " +
                         svnException);
      getProject().setNewProperty(propertyName, "-1");
    }
  }
}
opends/build.xml
@@ -22,7 +22,7 @@
 ! CDDL HEADER END
 !
 !
 !      Portions Copyright 2006 Sun Microsystems, Inc.
 !      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 ! -->
<project name="Directory Server" basedir="." default="package">
@@ -111,6 +111,9 @@
  <!-- Properties for the checkstyle tool.                         -->
  <property name="checkstyle.dir"  location="${ext.dir}/checkstyle" />
  <!-- Properties for the SVNKit tool.                         -->
  <property name="svnkit.dir"  location="${ext.dir}/svnkit" />
  <!-- Properties for Directory Server version information.              -->
  <property name="dynconstants.file"
       location="${src.dir}/org/opends/server/util/DynamicConstants.java" />
@@ -129,7 +132,7 @@
  <!-- The build target that should be used before committing code. -->
  <target name="precommit" depends="checkstyle,clean,dsml,javadoc,testwithcoverage"
  <target name="precommit" depends="checkstyle,clean,copyrightdates,dsml,javadoc,testwithcoverage"
       description="Perform all processing needed before committing code." />
@@ -152,7 +155,7 @@
  <!-- The build target that should be used to build everything. -->
  <target name="all"
       depends="checkstyle,dsml,javadoc,testallwithcoverage"
       depends="checkstyle,clean,copyrightdates,dsml,javadoc,testallwithcoverage"
       description="Build using all defined targets." />
@@ -208,13 +211,34 @@
        <isset property="JVM_VENDOR" />
      </not>
    </condition>
  </target>
  <!-- Build the DynamicConstants.java file and any of its dependencies. -->
  <target name="dynamicconstants" depends="init,buildtools">
    <!-- Get the revision number of the current Subversion workspace -->
    <taskdef name="getsvnrevision"
             classname="org.opends.build.tools.GetSubversionRevision">
      <classpath>
        <fileset dir="${build.dir}/build-tools">
          <include name="*.jar" />
        </fileset>
        <fileset dir="${svnkit.dir}">
          <include name="*.jar" />
        </fileset>
      </classpath>
    </taskdef>
    <getsvnrevision property="REVISION_NUMBER" />
    <!-- Generate the DynamicConstants.java file.
      Be warned that the .stubs file references the following properties
      PRODUCT_NAME, SHORT_NAME, MAJOR_VERSION, MINOR_VERSION, POINT_VERSION,
      VERSION_QUALIFIER, FIX_IDS, timestamp, user.name, java.version,
      java.vendor, java.vm.version, JVM_VENDOR, DEBUG_BUILD
      java.vendor, java.vm.version, JVM_VENDOR, DEBUG_BUILD, REVISION_NUMBER
      If you change the name of any of those properties in this build.xml
      you'll need to relfect the same change in the .stubs file
    -->
@@ -230,6 +254,37 @@
  <!-- Check modified files to see any copyright updates are needed. -->
  <target name="copyrightdates" depends="buildtools"
       description="Ensure updated files have the correct copyright year" >
    <taskdef name="checkcopyrightdates"
             classname="org.opends.build.tools.CheckCopyrightDates">
      <classpath>
        <fileset dir="${build.dir}/build-tools">
          <include name="*.jar" />
        </fileset>
        <fileset dir="${svnkit.dir}">
          <include name="*.jar" />
        </fileset>
      </classpath>
    </taskdef>
    <checkcopyrightdates>
      <fileset dir="${src.dir}" includes="**/*.java" />
      <fileset dir="${quicksetup.src.dir}" includes="**/*.java" />
      <fileset dir="${statuspanel.src.dir}" includes="**/*.java" />
      <fileset dir="${unittest.testng.src.dir}" includes="**/*.java" />
      <fileset dir="${functest.testng.src.dir}" includes="**/*.java" />
      <fileset dir="${basedir}" includes="**/*.xml" excludes="build/**/*" />
      <fileset dir="${basedir}" includes="**/*.sh" excludes="build/**/*" />
      <fileset dir="${basedir}" includes="**/*.bat" excludes="build/**/* " />
      <fileset dir="${basedir}" includes="**/*.ldif" excludes="build/**/*" />
    </checkcopyrightdates>
  </target>
  <!-- Ensure that the source code meets basic style requirements. -->
  <target name="checkstyle" description="Perform basic source style checks">
@@ -280,13 +335,14 @@
  <!-- Compile the Directory Server source files. -->
  <target name="cleancompile" depends="cleaninit,compile,compilequicksetup,compilestatuspanel"
  <target name="cleancompile"
       depends="cleaninit,compile,compilequicksetup,compilestatuspanel"
       description="Recompile the Directory Server source files.">
  </target>
  <!-- Compile the Directory Server source files. -->
  <target name="compile"
       depends="init"
       depends="init,dynamicconstants"
       description="Compile the Directory Server source files.">
    <mkdir dir="${classes.dir}" />
@@ -815,12 +871,6 @@
      </not>
    </condition>
    <condition property="test.diff.svnpath" value="">
      <not>
        <isset property="test.diff.svnpath" />
      </not>
    </condition>
    <condition property="test.diff.enabled" value="true">
      <not>
        <isset property="test.diff.disable" />
@@ -846,13 +896,15 @@
        <fileset dir="${emma.dir}">
          <include name="*.jar" />
        </fileset>
        <fileset dir="${svnkit.dir}">
          <include name="*.jar" />
        </fileset>
      </classpath>
    </taskdef>
    <coveragediff emmadatapath="${coverage.data.dir}"
                  outputpath="${cvgdiff.report.dir}"
                  diffpath="${test.diff.srcpath}"
                  svnpath="${test.diff.svnpath}"
                  enabled="${test.diff.enabled}"
                  verbose="${test.diff.verbose}" />
@@ -1081,6 +1133,11 @@
        <fileset dir="${emma.dir}">
          <include name="*.jar" />
        </fileset>
        <fileset dir="${svnkit.dir}">
          <include name="*.jar" />
        </fileset>
        <path refid="run.classpath" />
      </classpath>
    </javac>
opends/ext/svnkit/COPYING
New file
@@ -0,0 +1,47 @@
The TMate License
This license applies to all portions of TMate SVNKit library, which
are not externally-maintained libraries (e.g. Ganymed SSH library).
All the source code and compiled classes in package org.trigris.subversion.javahl
except SvnClient class are covered by the license in JAVAHL-LICENSE file
Copyright (c) 2004-2006 TMate Software. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    * Redistributions in any form must be accompanied by information on how to
      obtain complete source code for the software that uses SVNKit and any
      accompanying software that uses the software that uses SVNKit. The source
      code must either be included in the distribution or be available for no
      more than the cost of distribution plus a nominal fee, and must be freely
      redistributable under reasonable conditions. For an executable file, complete
      source code means the source code for all modules it contains. It does not
      include source code for modules or files that typically accompany the major
      components of the operating system on which the executable file runs.
    * Redistribution in any form without redistributing source code for software
      that uses SVNKit is possible only when such redistribution is explictly permitted
      by TMate Software. Please, contact TMate Software at support@svnkit.com to
      get such permission.
THIS SOFTWARE IS PROVIDED BY TMATE SOFTWARE ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE
DISCLAIMED.
IN NO EVENT SHALL TMATE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
opends/ext/svnkit/GANYMED-LICENSE
New file
@@ -0,0 +1,57 @@
Copyright (c) 2005 - 2006 Swiss Federal Institute of Technology (ETH Zurich),
  Department of Computer Science (http://www.inf.ethz.ch),
  Christian Plattner. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
a.) Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
b.) Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
c.) Neither the name of ETH Zurich nor the names of its contributors may
    be used to endorse or promote products derived from this software
    without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
The Java implementations of the AES, Blowfish and 3DES ciphers have been
taken (and slightly modified) from the cryptography package released by
"The Legion Of The Bouncy Castle".
Their license states the following:
Copyright (c) 2000 - 2004 The Legion Of The Bouncy Castle
(http://www.bouncycastle.org)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
opends/ext/svnkit/JAVAHL-LICENSE
New file
@@ -0,0 +1,55 @@
This license applies to all portions of Subversion which are not
externally-maintained libraries (e.g. apr/, apr-util/, and neon/).
Such libraries have their own licenses; we recommend you read them, as
their terms may differ from the terms below.
This is version 1 of this license.  It is also available online at
http://subversion.tigris.org/license-1.html.  If newer versions of
this license are posted there (the same URL, but with the version
number incremented: .../license-2.html, .../license-3.html, and so
on), you may use a newer version instead, at your option.
====================================================================
Copyright (c) 2000-2005 CollabNet.  All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if
any, must include the following acknowledgment: "This product includes
software developed by CollabNet (http://www.Collab.Net/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The hosted project names must not be used to endorse or promote
products derived from this software without prior written
permission. For written permission, please contact info@collab.net.
5. Products derived from this software may not use the "Tigris" name
nor may "Tigris" appear in their names without prior written
permission of CollabNet.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL COLLABNET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
====================================================================
This software consists of voluntary contributions made by many
individuals on behalf of CollabNet.
opends/ext/svnkit/README.txt
New file
@@ -0,0 +1,40 @@
This is a README.txt file for SVNKit - pure Java Subversion client library.
1. DESCRIPTION
SVNKit is a pure Java Subversion client library.
2. LICENSING
SVNKit is open source product. The complete source code, documentation, and files required
to build the library are available for download from our Web site at http://svnkit.com/
The TMate open source license permits you to use SVNKit at no charge under the condition
that if you use the software in an application you redistribute, the complete source code for
your application must be available and freely redistributable under reasonable conditions.
If you do not want to release the source code for your application, you may purchase a license
from TMate Software. For pricing information, or if you have further questions on licensing,
please contact us at support@svnkit.com.
You may find the TMate open source license in COPYING file that is located within the same
directory as this file or at http://svnkit.com/license.html
3. FEATURES
SVNKit allows to work with Subversion repositories and Subversion working copies. SVNKit features
direct repository access as well as support for all high level Subversion operation that are
available with the command line Subversion client.
This version of SVNKit supports all Subversion 1.2 features and supports older Subversion repositories.
4. RESOURCES
SVNKit Web Site: http://svnkit.com/
SVNKit Documentation: http://svnkit.com/kb/index.html
SVNKit Mailing List: http://svnkit.com/kb/mailinglist.html
SVNKit Issues Tracker: http://svnkit.com/tracker/
5. CONTACTS
On all questions related to SVNKit please contact us at support@svnkit.com
opends/ext/svnkit/SEQUENCE-LICENSE
New file
@@ -0,0 +1,48 @@
Sequence Library License
This license applies to all portions of the Sequence library, which
are not externally-maintained libraries (e.g. junit or jsch).
====================================================================
Copyright (c) 2000-2005 SyntEvo GmbH, Bayerisch Gmain, GERMANY.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if
any, must include the following acknowledgment: "This product includes
software developed by SyntEvo GmbH, Bayerisch Gmain, GERMANY."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The hosted project names must not be used to endorse or promote
products derived from this software without prior written
permission. For written permission, please contact
sequence-library@syntevo.com.
5. Neither the name of SyntEvo GmbH nor the names of its contributors
may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL SyntEvo GmbH OR HIS CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
====================================================================
opends/ext/svnkit/changelog.txt
New file
@@ -0,0 +1,288 @@
= version 1.1.0
+ command line application and API to perform svnsync.
+ bugfixes.
= version 1.1.0.beta5
+ support for Subversion 1.4 working copy and new fsfs repository format.
+ support for new features introduced by Subversion 1.4.
+ bugfixes.
= version 1.1.0.beta4
+ bug introduced in beta3 version fixed:
  Eclipse keyring credentials storage support was broken.
= version 1.1.0.beta3
+ Minor API improvements.
+ Minor bugfixes.
= version 1.1.0.beta2
+ NTLM authentication method support.
+ Javadoc updated to match new SVNKit features.
+ Minor bugfixes.
= version 1.1.0.beta
+ 'file' protocol support (for 'fsfs' repositories).
= version 1.0.3
+ improved cancellation support
+ improved versioned symlinks handling
+ improved HTTP proxies support
+ bugfixes
= version 1.0.2
+ full support of the new Subversion 1.3.0 features.
+ ssh 'keyboard-interactive' authentication support.
+ ssl client certificate prompt support.
+ error codes and error messages hierarchy support in the API.
+ utility classes to genereta operatios output in XML format.
+ faster delta generation and delta processing code.
+ utility API classes to process and generate deltas.
+ documentations improved, Commit and Export examples simplified.
+ bugfixes
! Note:
  This version includes minor API changes and is not binary compatible
  with the previous versions. API changes are:
  * String error messages replaced with SVNErrorMessage objects
  * ISVNFileRevisionHanlder callback interface changed
  * all callback interfaces methods now declared as throwing SVNException
= version 1.0.1
+ bugfixes
= version 1.0.0
+ documentation related improvements
+ bugfixes
= version 0.9.3
+ licensing conditions changed
+ support for atomic commit from different working copies
+ persistent connections support
+ improvements in performance and memory consumption
+ bugfixes
= version 0.9.2
+ RC2: bugfixes related to configuration handling and svn+ssh authentication
= version 0.9.1
+ RC1: All features planned for 1.0 version are completed.
= version 0.8.8.1
+ critical bug in SVNKit Eclipse plugin fixed.
= version 0.8.8
+ http digest auth support (requires apache version > 2.0.48)
+ wc->url and url->wc copy operations
+ use-commit-times option support
+ bugfixes
= version 0.8.7.2
+ Subclipse v0.9.30 compatible
= version 0.8.7.1
+ Subclipse v0.9.29 compatible
= version 0.8.7
+ http proxy support
+ svn "keywords" are expanded properly
+ different eol's in a file are handled correctly
+ other minor bugfixes
= version 0.8.6
+ annotate (blame) operation is implemented.
+ http: server socket close detected properly and doesn't result in operation failure.
+ SVNClient: absolute paths are used in notifications.
+ SVNClient: fileContent method traces file renames.
+ SVNClient: list and logMessages methods return paths sorted alphabetically.
+ SVNClient: auth info is stored in Eclipse key ring when used within Eclipse.
= version 0.8.5
+ SVNClient: WC copy and move operations work properly on Linux and OS X.
+ SVNClient: "conflicted" status is reported correctly during update
             ("merged" was reported instead).
= version 0.8.4
+ Subclipse Extension supports Subclipse 0.9.28
+ tabulations in externals definitions processed correctly.
= version 0.8.3
+ children of copied or moved directories were not committed properly when
  their wc revision was different from the parent's one.
+ http: all DAV requests (including commit comments) are sent in UTF-8 encoding.
+ SvnClient: add and remove methods didn't work for directories, fixed.
+ SvnClient: commit of single file deletion didn't work, fixed.
+ Eclipse: SVNKit features installed from update site supports automatic update
= version 0.8.2
+ svn+ssh: persistent ssh connection is used to improve svn+ssh performance.
+ http: problems with accessing repository location that needs different credentials then
  repository root is fixed.
+ http: all paths in requests are canonicalized, some svn server versions failed to
  process non-canonicalized paths.
+ wc: changes in externals were not committed correctly over http when using ISVNWorkspace.commit(...), fixed.
+ SvnClient: diff method implemented (so that Eclipse "generate patch" action works).
+ SvnClient: copy and move methods fixed to work properly in Subclipse repository view.
+ SvnClient: setPrompt support, better notifications, "windows" paths are handled correctly.
+ logging: Pluggable loggers support and detailed http logging added (thanks to Marc Strapez).
+ logging: Eclipse SVNKit version uses Eclipse logging facilities.
= version 0.8.1
+ bugs with committing files within moved directories fixed
+ bugfixes related to operations over http connection
+ for subclipse users: more detailed console notifications on svn operations
= version 0.8.0
+ new builds versioning schema introduced
+ update site with eclipse plugin and subclipse extension added
= build 20050131
+ import works properly with single file and when importing to
  non-yet-existing directories
+ switch works properly when switching single file
+ more minor bugfixes
= build 20050120
+ bugs with commiting locally copied files fixed
+ DAV '/' repository location handled correctly
= build 20050112
+ lot of incompatibilities with native svn fixed
+ SVNClient supports remote deletion, copy and move operations
= build 20050106
+ number of bugs in remote status implementation fixed
+ ISVNWorkspace.getFileContent method restored to keep binary compatibility
+ Diff generators framework added, now SVNKit provides API for
  generating diff in different formats ('unified' and 'normal') for arbitrary
  input sources
= build 20050105
+ svn+ssh authentication failed to work in some cases - fixed
+ revisions in working copy now updated correctly after update
+ got rid of number of minor inconsistences between SVNKit and native SVN
+ http and https protocols supports compressed data (gzip)
= build 20041223
+ ISVNWorkspace.delete now accepts 'force' parameter
+ bug fixed that prevented Subclipse committing single
  file in non-windows systems
+ complete svn and svn+ssh protocol logging may be enabled
  with -Dsvnkit.log.svn=true command line switch
= build 20041221
+ when using svn+ssh SVNKit takes private key path from the java property,
  if it is not defined explicitly
+ svn+ssh bugfixes
+ bugfixes
= build 20041219
+ infinite loop on commits that includes workspace root fixed
+ JavaHL: SVNClient accepts all revision kinds (DATE, HEAD, etc.)
= build 20041217
+ bugfixes
= build 20041216
+ bugfixes
= build 20041211
+ command line svn client (status, import, checkout are implemented)
+ python tests launcher to reuse original svn python tests suite
+ bugfixes
= build 20041209
+ bugfixes
= build 20041204
+ bugfixes
+ SVNKit works with Subclipse 0.9.24
= build 20041130
+ bugfixes
= build 20041126
+ svn+shh protocol support (with the jsch library)
+ bugfixes
= build 20041124
+ javahl copy, move and mkdir methods implementation
+ methods to manage global ignore added to ISVNWorkspace
+ bugfixes
= build 20041123
+ recursive property set operation
+ ISVNWorkspace accepts credentials provider
+ SSLContext made pluggable
+ javahl replacement works with Subclipse
+ bugfixes
= build 20041118
+ javahl implementation (SvnClient) is included into the library
+ workspace accepts credentials provider
= build 20041116
+ bugfixes
= build 20041110
+ svn:externals support
+ bugfixes
= build 20041109
+ bug that prevents checkout sometimes fixed
= build 20041108
+ authentication API simplified
+ performance improvements
+ bugfixes
= build 20041105
+ switch and relocate operations
+ bugfixes
opends/ext/svnkit/doc.tar.gz
Binary files differ
opends/ext/svnkit/ganymed.jar
Binary files differ
opends/ext/svnkit/logging.properties.disabled
New file
@@ -0,0 +1,9 @@
svnkit.level=FINE
handlers = java.util.logging.FileHandler
java.util.logging.FileHandler.pattern = %h/.svnkit/svnkit.%u.log
java.util.logging.FileHandler.limit = 0
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.append = true
java.util.logging.FileHandler.formatter = org.tmatesoft.svn.core.internal.util.DefaultSVNDebugFormatter
opends/ext/svnkit/svn
New file
@@ -0,0 +1,26 @@
#!/bin/sh
cygwin=false;
case "`uname`" in
  CYGWIN*) cygwin=true ;;
esac
SVNKIT_HOME=`dirname $0`
SVNKIT_HOME=`cd "$SVNKIT_HOME" ; pwd`
SVNKIT_CP=$SVNKIT_HOME/svnkit.jar:$SVNKIT_HOME/svnkit-cli.jar:$SVNKIT_HOME/ganymed.jar
if $cygwin ; then
  SVNKIT_CP=`cygpath --windows --path "$SVNKIT_CP"`
  [ -n "$SVNKIT_LOGDIR" ] &&
    SVNKIT_LOGDIR=`cygpath --unix "$SVNKIT_LOGDIR"`
fi
if [ ! -d $SVNKIT_LOGDIR ]; then
    mkdir $SVNKIT_LOGDIR
fi
SVNKIT_VM_OPTIONS="-Dsun.io.useCanonCaches=false -Djava.util.logging.config.file=$SVNKIT_HOME/logging.properties"
SVNKIT_MAINCLASS=org.tmatesoft.svn.cli.SVN
$JAVA_HOME/bin/java $SVNKIT_VM_OPTIONS -cp $SVNKIT_CP $SVNKIT_MAINCLASS "$@"
opends/ext/svnkit/svn.bat
New file
@@ -0,0 +1,11 @@
@echo off
set DEFAULT_SVNKIT_HOME=%~dp0
if "%SVNKIT_HOME%"=="" set SVNKIT_HOME=%DEFAULT_SVNKIT_HOME%
set SVNKIT_CLASSPATH= "%SVNKIT_HOME%svnkit.jar";"%SVNKIT_HOME%svnkit-cli.jar";"%SVNKIT_HOME%ganymed.jar"
set SVNKIT_MAINCLASS=org.tmatesoft.svn.cli.SVN
set SVNKIT_OPTIONS=-Djava.util.logging.config.file="%SVNKIT_HOME%/logging.properties"
"%JAVA_HOME%\bin\java" %SVNKIT_OPTIONS% -cp %SVNKIT_CLASSPATH% %SVNKIT_MAINCLASS% %*
opends/ext/svnkit/svnkit-cli.jar
Binary files differ
opends/ext/svnkit/svnkit-javahl.jar
Binary files differ
opends/ext/svnkit/svnkit.jar
Binary files differ
opends/ext/svnkit/svnkitsrc.zip
Binary files differ
opends/ext/svnkit/svnsync
New file
@@ -0,0 +1,26 @@
#!/bin/sh
cygwin=false;
case "`uname`" in
  CYGWIN*) cygwin=true ;;
esac
SVNKIT_HOME=`dirname $0`
SVNKIT_HOME=`cd "$SVNKIT_HOME" ; pwd`
SVNKIT_CP=$SVNKIT_HOME/svnkit.jar:$SVNKIT_HOME/svnkit-cli.jar:$SVNKIT_HOME/ganymed.jar
if $cygwin ; then
  SVNKIT_CP=`cygpath --windows --path "$SVNKIT_CP"`
  [ -n "$SVNKIT_LOGDIR" ] &&
    SVNKIT_LOGDIR=`cygpath --unix "$SVNKIT_LOGDIR"`
fi
if [ ! -d $SVNKIT_LOGDIR ]; then
    mkdir $SVNKIT_LOGDIR
fi
SVNKIT_VM_OPTIONS="-Dsun.io.useCanonCaches=false -Djava.util.logging.config.file=$SVNKIT_HOME/logging.properties"
SVNKIT_MAINCLASS=org.tmatesoft.svn.cli.SVNSync
$JAVA_HOME/bin/java $SVNKIT_VM_OPTIONS -cp $SVNKIT_CP $SVNKIT_MAINCLASS "$@"
opends/ext/svnkit/svnsync.bat
New file
@@ -0,0 +1,11 @@
@echo off
set DEFAULT_SVNKIT_HOME=%~dp0
if "%SVNKIT_HOME%"=="" set SVNKIT_HOME=%DEFAULT_SVNKIT_HOME%
set SVNKIT_CLASSPATH= "%SVNKIT_HOME%svnkit.jar";"%SVNKIT_HOME%svnkit-cli.jar";"%SVNKIT_HOME%ganymed.jar"
set SVNKIT_MAINCLASS=org.tmatesoft.svn.cli.SVNSync
set SVNKIT_OPTIONS=-Djava.util.logging.config.file="%SVNKIT_HOME%/logging.properties"
"%JAVA_HOME%\bin\java" %SVNKIT_OPTIONS% -cp %SVNKIT_CLASSPATH% %SVNKIT_MAINCLASS% %*
opends/resource/DynamicConstants.java.stubs
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 */
package org.opends.server.util;
@@ -112,6 +112,11 @@
  public static final boolean DEBUG_BUILD = ${DEBUG_BUILD};
  /**
   * The Subversion revision number on which this build is based.
   */
  public static final long REVISION_NUMBER = ${REVISION_NUMBER};
  /**
   * A compact version string for this product, suitable for use in path
   * names and similar cases.
   */
opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -7915,6 +7915,7 @@
      System.out.println("Minor Version:       " + MINOR_VERSION);
      System.out.println("Point Version:       " + POINT_VERSION);
      System.out.println("Version Qualifier:   " + VERSION_QUALIFIER);
      System.out.println("Revision Number:     " + REVISION_NUMBER);
      System.out.println("Fix IDs:             " + FIX_IDS);
      System.out.println("Debug Build:         " + DEBUG_BUILD);
      System.out.println("Build OS:            " + BUILD_OS);
opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2006 Sun Microsystems, Inc.
 *      Portions Copyright 2007-2006 Sun Microsystems, Inc.
 */
package org.opends.server.monitors;
@@ -174,6 +174,8 @@
                              String.valueOf(DynamicConstants.POINT_VERSION)));
    attrs.add(createAttribute("versionQualifier",
                              DynamicConstants.VERSION_QUALIFIER));
    attrs.add(createAttribute("revisionNumber",
                   String.valueOf(DynamicConstants.REVISION_NUMBER)));
    attrs.add(createAttribute("debugBuild",
                              String.valueOf(DynamicConstants.DEBUG_BUILD)));
    attrs.add(createAttribute("fixIDs", DynamicConstants.FIX_IDS));