From b7d4b7fe4faa066678983b7ff69a166bbf11886c Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Sun, 28 Jan 2007 18:55:53 +0000
Subject: [PATCH] Add features into our build process that can make use of the SVNKit library to interact with the Subversion workspace. This includes three components:
---
opends/build-tools/src/org/opends/build/tools/GetSubversionRevision.java | 140 ++++++
opends/ext/svnkit/SEQUENCE-LICENSE | 48 ++
opends/build-tools/src/org/opends/build/tools/CheckCopyrightDates.java | 300 +++++++++++++
opends/ext/svnkit/GANYMED-LICENSE | 57 ++
opends/ext/svnkit/svnkit-cli.jar | 0
opends/ext/svnkit/JAVAHL-LICENSE | 55 ++
opends/ext/svnkit/svn | 26 +
opends/ext/svnkit/svnkit-javahl.jar | 0
opends/ext/svnkit/svnsync | 26 +
opends/resource/DynamicConstants.java.stubs | 7
opends/src/server/org/opends/server/core/DirectoryServer.java | 1
opends/ext/svnkit/ganymed.jar | 0
opends/ext/svnkit/COPYING | 47 ++
opends/build.xml | 83 +++
opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java | 4
opends/ext/svnkit/doc.tar.gz | 0
opends/ext/svnkit/changelog.txt | 288 +++++++++++++
opends/ext/svnkit/svn.bat | 11
opends/ext/svnkit/svnsync.bat | 11
opends/ext/svnkit/svnkitsrc.zip | 0
opends/build-tools/src/org/opends/build/tools/CoverageDiff.java | 111 ++---
opends/ext/svnkit/svnkit.jar | 0
opends/ext/svnkit/README.txt | 40 +
opends/ext/svnkit/logging.properties.disabled | 9
24 files changed, 1,182 insertions(+), 82 deletions(-)
diff --git a/opends/build-tools/src/org/opends/build/tools/CheckCopyrightDates.java b/opends/build-tools/src/org/opends/build/tools/CheckCopyrightDates.java
new file mode 100644
index 0000000..31452f7
--- /dev/null
+++ b/opends/build-tools/src/org/opends/build/tools/CheckCopyrightDates.java
@@ -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;
+ }
+ }
+}
+
diff --git a/opends/build-tools/src/org/opends/build/tools/CoverageDiff.java b/opends/build-tools/src/org/opends/build/tools/CoverageDiff.java
index 3f1d287..4790385 100644
--- a/opends/build-tools/src/org/opends/build/tools/CoverageDiff.java
+++ b/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();
diff --git a/opends/build-tools/src/org/opends/build/tools/GetSubversionRevision.java b/opends/build-tools/src/org/opends/build/tools/GetSubversionRevision.java
new file mode 100644
index 0000000..2133080
--- /dev/null
+++ b/opends/build-tools/src/org/opends/build/tools/GetSubversionRevision.java
@@ -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");
+ }
+ }
+}
+
diff --git a/opends/build.xml b/opends/build.xml
index 8cd4294..01c1aba 100644
--- a/opends/build.xml
+++ b/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>
diff --git a/opends/ext/svnkit/COPYING b/opends/ext/svnkit/COPYING
new file mode 100644
index 0000000..2e7d2e3
--- /dev/null
+++ b/opends/ext/svnkit/COPYING
@@ -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.
diff --git a/opends/ext/svnkit/GANYMED-LICENSE b/opends/ext/svnkit/GANYMED-LICENSE
new file mode 100644
index 0000000..ba93009
--- /dev/null
+++ b/opends/ext/svnkit/GANYMED-LICENSE
@@ -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.
+
diff --git a/opends/ext/svnkit/JAVAHL-LICENSE b/opends/ext/svnkit/JAVAHL-LICENSE
new file mode 100644
index 0000000..9c3e114
--- /dev/null
+++ b/opends/ext/svnkit/JAVAHL-LICENSE
@@ -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.
+
diff --git a/opends/ext/svnkit/README.txt b/opends/ext/svnkit/README.txt
new file mode 100644
index 0000000..99ef74a
--- /dev/null
+++ b/opends/ext/svnkit/README.txt
@@ -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
\ No newline at end of file
diff --git a/opends/ext/svnkit/SEQUENCE-LICENSE b/opends/ext/svnkit/SEQUENCE-LICENSE
new file mode 100644
index 0000000..d578624
--- /dev/null
+++ b/opends/ext/svnkit/SEQUENCE-LICENSE
@@ -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.
+====================================================================
+
+
diff --git a/opends/ext/svnkit/changelog.txt b/opends/ext/svnkit/changelog.txt
new file mode 100644
index 0000000..440eb5b
--- /dev/null
+++ b/opends/ext/svnkit/changelog.txt
@@ -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
\ No newline at end of file
diff --git a/opends/ext/svnkit/doc.tar.gz b/opends/ext/svnkit/doc.tar.gz
new file mode 100644
index 0000000..672368e
--- /dev/null
+++ b/opends/ext/svnkit/doc.tar.gz
Binary files differ
diff --git a/opends/ext/svnkit/ganymed.jar b/opends/ext/svnkit/ganymed.jar
new file mode 100644
index 0000000..e3bde26
--- /dev/null
+++ b/opends/ext/svnkit/ganymed.jar
Binary files differ
diff --git a/opends/ext/svnkit/logging.properties.disabled b/opends/ext/svnkit/logging.properties.disabled
new file mode 100644
index 0000000..26c67f5
--- /dev/null
+++ b/opends/ext/svnkit/logging.properties.disabled
@@ -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
+
diff --git a/opends/ext/svnkit/svn b/opends/ext/svnkit/svn
new file mode 100755
index 0000000..1cad163
--- /dev/null
+++ b/opends/ext/svnkit/svn
@@ -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 "$@"
diff --git a/opends/ext/svnkit/svn.bat b/opends/ext/svnkit/svn.bat
new file mode 100644
index 0000000..fceca79
--- /dev/null
+++ b/opends/ext/svnkit/svn.bat
@@ -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% %*
\ No newline at end of file
diff --git a/opends/ext/svnkit/svnkit-cli.jar b/opends/ext/svnkit/svnkit-cli.jar
new file mode 100644
index 0000000..99e6233
--- /dev/null
+++ b/opends/ext/svnkit/svnkit-cli.jar
Binary files differ
diff --git a/opends/ext/svnkit/svnkit-javahl.jar b/opends/ext/svnkit/svnkit-javahl.jar
new file mode 100644
index 0000000..2ebb052
--- /dev/null
+++ b/opends/ext/svnkit/svnkit-javahl.jar
Binary files differ
diff --git a/opends/ext/svnkit/svnkit.jar b/opends/ext/svnkit/svnkit.jar
new file mode 100644
index 0000000..2e08b93
--- /dev/null
+++ b/opends/ext/svnkit/svnkit.jar
Binary files differ
diff --git a/opends/ext/svnkit/svnkitsrc.zip b/opends/ext/svnkit/svnkitsrc.zip
new file mode 100644
index 0000000..2d42a98
--- /dev/null
+++ b/opends/ext/svnkit/svnkitsrc.zip
Binary files differ
diff --git a/opends/ext/svnkit/svnsync b/opends/ext/svnkit/svnsync
new file mode 100644
index 0000000..d872810
--- /dev/null
+++ b/opends/ext/svnkit/svnsync
@@ -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 "$@"
diff --git a/opends/ext/svnkit/svnsync.bat b/opends/ext/svnkit/svnsync.bat
new file mode 100644
index 0000000..b4f21a8
--- /dev/null
+++ b/opends/ext/svnkit/svnsync.bat
@@ -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% %*
\ No newline at end of file
diff --git a/opends/resource/DynamicConstants.java.stubs b/opends/resource/DynamicConstants.java.stubs
index 7c371cb..5c19014 100644
--- a/opends/resource/DynamicConstants.java.stubs
+++ b/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.
*/
diff --git a/opends/src/server/org/opends/server/core/DirectoryServer.java b/opends/src/server/org/opends/server/core/DirectoryServer.java
index d4654fd..c438890 100644
--- a/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/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);
diff --git a/opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java b/opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java
index c19a45c..b372e86 100644
--- a/opends/src/server/org/opends/server/monitors/VersionMonitorProvider.java
+++ b/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));
--
Gitblit v1.10.0