You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/11/27 12:52:46 UTC
svn commit: r1546002 [6/39] - in /subversion/branches/verify-keep-going: ./
build/ build/ac-macros/ build/generator/ build/generator/swig/
build/generator/templates/ build/win32/ contrib/client-side/emacs/
contrib/server-side/ contrib/server-side/svncu...
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/SVNClient.cpp?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/SVNClient.cpp Wed Nov 27 11:52:35 2013
@@ -449,12 +449,7 @@ void SVNClient::copy(CopySources ©So
SVN::Pool subPool(pool);
apr_array_header_t *srcs = copySources.array(subPool);
- if (srcs == NULL)
- {
- JNIUtil::throwNativeException(JAVA_PACKAGE "/ClientException",
- "Invalid copy sources");
- return;
- }
+ SVN_JNI_NULL_PTR_EX(srcs, "sources", );
SVN_JNI_NULL_PTR_EX(destPath, "destPath", );
Path destinationPath(destPath, subPool);
SVN_JNI_ERR(destinationPath.error_occurred(), );
@@ -1120,7 +1115,7 @@ void SVNClient::streamFileContent(const
return;
SVN_JNI_ERR(svn_client_cat2(outputStream.getStream(subPool),
- path, pegRevision.revision(),
+ intPath.c_str(), pegRevision.revision(),
revision.revision(), ctx, subPool.getPool()),
);
}
@@ -1343,10 +1338,10 @@ jstring SVNClient::getVersionInfo(const
}
else
{
- char *message = JNIUtil::getFormatBuffer();
- apr_snprintf(message, JNIUtil::formatBufferSize,
+ char buffer[2048];
+ apr_snprintf(buffer, sizeof(buffer),
_("'%s' not versioned, and not exported\n"), path);
- return JNIUtil::makeJString(message);
+ return JNIUtil::makeJString(buffer);
}
}
@@ -1419,16 +1414,11 @@ jobject SVNClient::revProperties(const c
return CreateJ::PropertyMap(props, subPool.getPool());
}
-struct info_baton
-{
- std::vector<info_entry> infoVect;
- apr_pool_t *pool;
-};
-
void
-SVNClient::info2(const char *path, Revision &revision, Revision &pegRevision,
- svn_depth_t depth, StringArray &changelists,
- InfoCallback *callback)
+SVNClient::info2(const char *path,
+ Revision &revision, Revision &pegRevision, svn_depth_t depth,
+ svn_boolean_t fetchExcluded, svn_boolean_t fetchActualOnly,
+ StringArray &changelists, InfoCallback *callback)
{
SVN_JNI_NULL_PTR_EX(path, "path", );
@@ -1443,7 +1433,7 @@ SVNClient::info2(const char *path, Revis
SVN_JNI_ERR(svn_client_info3(checkedPath.c_str(),
pegRevision.revision(),
revision.revision(),
- depth, FALSE, TRUE,
+ depth, fetchExcluded, fetchActualOnly,
changelists.array(subPool),
InfoCallback::callback, callback,
ctx, subPool.getPool()), );
@@ -1516,10 +1506,6 @@ SVNClient::openRemoteSession(const char*
ctx, subPool.getPool()),
NULL);
- jobject jctx = context.getSelf();
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
/* Decouple the RemoteSession's context from SVNClient's context
by creating a copy of the prompter here. */
Prompter* prompter = new Prompter(context.getPrompter());
@@ -1529,9 +1515,9 @@ SVNClient::openRemoteSession(const char*
jobject jremoteSession = RemoteSession::open(
retryAttempts, path_info.url.c_str(), path_info.uuid.c_str(),
context.getConfigDirectory(),
- context.getConfigCallback(),
context.getUsername(), context.getPassword(),
- prompter, jctx);
+ prompter, context.getSelf(),
+ context.getConfigEventHandler(), context.getTunnelCallback());
if (JNIUtil::isJavaExceptionThrown())
delete prompter;
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/SVNClient.h?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/SVNClient.h Wed Nov 27 11:52:35 2013
@@ -66,9 +66,10 @@ class SVNClient :public SVNBase
void patch(const char *patchPath, const char *targetPath, bool dryRun,
int stripCount, bool reverse, bool ignoreWhitespace,
bool removeTempfiles, PatchCallback *callback);
- void info2(const char *path, Revision &revision, Revision &pegRevision,
- svn_depth_t depth, StringArray &changelists,
- InfoCallback *callback);
+ void info2(const char *path,
+ Revision &revision, Revision &pegRevision, svn_depth_t depth,
+ svn_boolean_t fetchExcluded, svn_boolean_t fetchActualOnly,
+ StringArray &changelists, InfoCallback *callback);
void unlock(Targets &targets, bool force);
void lock(Targets &targets, const char *comment, bool force);
jobject revProperties(const char *path, Revision &revision);
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/StateReporter.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/StateReporter.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp Wed Nov 27 11:52:35 2013
@@ -28,11 +28,11 @@
#include "JNIUtil.h"
#include "../include/org_apache_subversion_javahl_NativeResources.h"
-JNIEXPORT void JNICALL
+JNIEXPORT jboolean JNICALL
Java_org_apache_subversion_javahl_NativeResources_initNativeLibrary
(JNIEnv *env, jclass jclazz)
{
// No usual JNIEntry here, as the prerequisite native library
// initialization is performed here.
- JNIUtil::JNIGlobalInit(env);
+ return jboolean(JNIUtil::JNIGlobalInit(env));
}
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Wed Nov 27 11:52:35 2013
@@ -275,6 +275,21 @@ Java_org_apache_subversion_javahl_SVNCli
}
JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_SVNClient_setTunnelAgent
+(JNIEnv *env, jobject jthis, jobject jtunnelcb)
+{
+ JNIEntry(SVNClient, setPrompt);
+ SVNClient *cl = SVNClient::getCppObject(jthis);
+ if (cl == NULL)
+ {
+ JNIUtil::throwError(_("bad C++ this"));
+ return;
+ }
+
+ cl->getClientContext().setTunnelCallback(jtunnelcb);
+}
+
+JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_logMessages
(JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
jobject jranges, jboolean jstopOnCopy, jboolean jdisoverPaths,
@@ -384,7 +399,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- PropertyTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -498,7 +513,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- PropertyTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -539,7 +554,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- PropertyTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -577,7 +592,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- PropertyTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -610,7 +625,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- PropertyTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -761,7 +776,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- PropertyTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -1012,7 +1027,7 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- PropertyTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -1634,11 +1649,27 @@ Java_org_apache_subversion_javahl_SVNCli
cl->getClientContext().setConfigDirectory(configDir);
}
+JNIEXPORT jstring JNICALL
+Java_org_apache_subversion_javahl_SVNClient_getConfigDirectory
+(JNIEnv *env, jobject jthis)
+{
+ JNIEntry(SVNClient, getConfigDirectory);
+ SVNClient *cl = SVNClient::getCppObject(jthis);
+ if (cl == NULL)
+ {
+ JNIUtil::throwError(_("bad C++ this"));
+ return NULL;
+ }
+
+ const char *configDir = cl->getClientContext().getConfigDirectory();
+ return JNIUtil::makeJString(configDir);
+}
+
JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_setConfigEventHandler
-(JNIEnv *env, jobject jthis, jobject jconfigHandler)
+Java_org_apache_subversion_javahl_SVNClient_setConfigEventHandler(
+ JNIEnv* env, jobject jthis, jobject jcallback)
{
- JNIEntry(SVNClient, setConfigDirectory);
+ JNIEntry(SVNClient, setConfigEventHandler);
SVNClient *cl = SVNClient::getCppObject(jthis);
if (cl == NULL)
{
@@ -1646,14 +1677,14 @@ Java_org_apache_subversion_javahl_SVNCli
return;
}
- cl->getClientContext().setConfigCallback(jconfigHandler);
+ cl->getClientContext().setConfigEventHandler(jcallback);
}
-JNIEXPORT jstring JNICALL
-Java_org_apache_subversion_javahl_SVNClient_getConfigDirectory
-(JNIEnv *env, jobject jthis)
+JNIEXPORT jobject JNICALL
+Java_org_apache_subversion_javahl_SVNClient_getConfigEventHandler(
+ JNIEnv* env, jobject jthis)
{
- JNIEntry(SVNClient, getConfigDirectory);
+ JNIEntry(SVNClient, getConfigEventHandler);
SVNClient *cl = SVNClient::getCppObject(jthis);
if (cl == NULL)
{
@@ -1661,8 +1692,7 @@ Java_org_apache_subversion_javahl_SVNCli
return NULL;
}
- const char *configDir = cl->getClientContext().getConfigDirectory();
- return JNIUtil::makeJString(configDir);
+ return cl->getClientContext().getConfigEventHandler();
}
JNIEXPORT void JNICALL
@@ -1810,8 +1840,9 @@ Java_org_apache_subversion_javahl_SVNCli
JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_info2
(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
- jobject jpegRevision, jobject jdepth, jobject jchangelists,
- jobject jinfoCallback)
+ jobject jpegRevision, jobject jdepth,
+ jboolean jfetchExcluded, jboolean jfetchActualOnly,
+ jobject jchangelists, jobject jinfoCallback)
{
JNIEntry(SVNClient, info2);
SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -1838,6 +1869,7 @@ Java_org_apache_subversion_javahl_SVNCli
InfoCallback callback(jinfoCallback);
cl->info2(path, revision, pegRevision, EnumMapper::toDepth(jdepth),
+ svn_boolean_t(jfetchExcluded), svn_boolean_t(jfetchActualOnly),
changelists, &callback);
}
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.cpp?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.cpp Wed Nov 27 11:52:35 2013
@@ -56,13 +56,15 @@ Java_org_apache_subversion_javahl_remote
JNIEXPORT jlong JNICALL
Java_org_apache_subversion_javahl_remote_CommitEditor_nativeCreateInstance(
JNIEnv *env, jclass thisclass, jobject jsession, jobject jrevprops,
- jobject jcommit_callback, jobject jlock_tokens, jboolean jkeep_locks)
+ jobject jcommit_callback, jobject jlock_tokens, jboolean jkeep_locks,
+ jobject jget_base_cb, jobject jget_props_cb, jobject jget_kind_cb)
{
jobject jthis = NULL; // Placeholder -- this is a static method
JNIEntry(CommitEditor, nativeCreateInstance);
- return CommitEditor::createInstance(jsession, jrevprops, jcommit_callback,
- jlock_tokens, jkeep_locks);
+ return CommitEditor::createInstance(
+ jsession, jrevprops, jcommit_callback, jlock_tokens, jkeep_locks,
+ jget_base_cb, jget_props_cb, jget_kind_cb);
}
JNIEXPORT void JNICALL
@@ -182,16 +184,6 @@ Java_org_apache_subversion_javahl_remote
editor->move(jsrc_relpath, jsrc_revision, jdst_relpath, jreplaces_revision);
}
-//JNIEXPORT void JNICALL
-//Java_org_apache_subversion_javahl_remote_CommitEditor_rotate(
-// JNIEnv* env, jobject jthis, jobject jelements)
-//{
-// JNIEntry(CommitEditor, rotate);
-// CommitEditor *editor = CommitEditor::getCppObject(jthis);
-// CPPADDR_NULL_PTR(editor,);
-// editor->rotate(jelements);
-//}
-
JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_remote_CommitEditor_complete(
JNIEnv* env, jobject jthis)
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.cpp?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.cpp Wed Nov 27 11:52:35 2013
@@ -36,23 +36,23 @@
JNIEXPORT jobject JNICALL
Java_org_apache_subversion_javahl_remote_RemoteFactory_open(
- JNIEnv *env, jclass jclass, jint jretryAttempts,
+ JNIEnv *env, jclass jclazz, jint jretryAttempts,
jstring jurl, jstring juuid,
- jstring jconfigDirectory, jobject jconfigHandler,
+ jstring jconfigDirectory,
jstring jusername, jstring jpassword,
- jobject jprompter, jobject jprogress)
+ jobject jprompter, jobject jprogress,
+ jobject jcfgcb, jobject jtunnelcb)
{
//JNI macros need jthis but this is a static call
- jobject jthis = NULL;
- JNIEntry(Remotefactory, open);
+ JNIEntryStatic(RemoteFactory, open);
/*
* Create RemoteSession C++ object and return its java wrapper to the caller
*/
jobject jremoteSession = RemoteSession::open(
jretryAttempts, jurl, juuid,
- jconfigDirectory, jconfigHandler,
- jusername, jpassword, jprompter, jprogress);
+ jconfigDirectory, jusername, jpassword, jprompter, jprogress,
+ jcfgcb, jtunnelcb);
if (JNIUtil::isJavaExceptionThrown())
return NULL;
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp Wed Nov 27 11:52:35 2013
@@ -272,10 +272,61 @@ Java_org_apache_subversion_javahl_remote
return ras->checkPath(jpath, jrevision);
}
-// TODO: stat
-// TODO: getLocations
-// TODO: getLocationSegments
-// TODO: getFileRevisions
+JNIEXPORT jobject JNICALL
+Java_org_apache_subversion_javahl_remote_RemoteSession_stat(
+ JNIEnv *env, jobject jthis, jstring jpath, jlong jrevision)
+{
+ JNIEntry(SVNReposAccess, stat);
+ RemoteSession *ras = RemoteSession::getCppObject(jthis);
+ CPPADDR_NULL_PTR(ras, NULL);
+
+ return ras->stat(jpath, jrevision);
+}
+
+JNIEXPORT jobject JNICALL
+Java_org_apache_subversion_javahl_remote_RemoteSession_getLocations(
+ JNIEnv *env, jobject jthis, jstring jpath, jlong jpeg_revision,
+ jobject jlocation_revisions)
+{
+ JNIEntry(SVNReposAccess, getLocations);
+ RemoteSession *ras = RemoteSession::getCppObject(jthis);
+ CPPADDR_NULL_PTR(ras, NULL);
+
+ return ras->getLocations(jpath, jpeg_revision, jlocation_revisions);
+}
+
+JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_remote_RemoteSession_getLocationSegments(
+ JNIEnv *env, jobject jthis, jstring jpath, jlong jpeg_revision,
+ jlong jstart_revision, jlong jend_revision, jobject jcallback)
+{
+ JNIEntry(SVNReposAccess, getLocationSegments);
+ RemoteSession *ras = RemoteSession::getCppObject(jthis);
+ CPPADDR_NULL_PTR(ras, );
+
+ if (jcallback == NULL)
+ JNIUtil::throwNullPointerException("handler");
+ ras->getLocationSegments(jpath, jpeg_revision,
+ jstart_revision, jend_revision,
+ jcallback);
+}
+
+JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_remote_RemoteSession_getFileRevisions(
+ JNIEnv *env, jobject jthis, jstring jpath,
+ jlong jstart_revision, jlong jend_revision,
+ jboolean jinclude_merged_revisions, jobject jcallback)
+{
+ JNIEntry(SVNReposAccess, getFileRevisions);
+ RemoteSession *ras = RemoteSession::getCppObject(jthis);
+ CPPADDR_NULL_PTR(ras, );
+
+ if (jcallback == NULL)
+ JNIUtil::throwNullPointerException("handler");
+ ras->getFileRevisions(jpath, jstart_revision, jend_revision,
+ jinclude_merged_revisions, jcallback);
+}
+
// TODO: lock
// TODO: unlock
// TODO: getLock
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_StateReporter.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientException.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientException.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientException.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientException.java Wed Nov 27 11:52:35 2013
@@ -30,13 +30,9 @@ import java.util.List;
*/
public class ClientException extends NativeException
{
- // Update the serialVersionUID when there is a incompatible change
- // made to this class. See any of the following, depending upon
- // the Java release.
- // http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/version.doc7.html
- // http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf
- // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html#6678
- // http://java.sun.com/javase/6/docs/platform/serialization/spec/version.html#6678
+ // Update the serialVersionUID when there is a incompatible change made to
+ // this class. See the java documentation for when a change is incompatible.
+ // http://java.sun.com/javase/7/docs/platform/serialization/spec/version.html#6678
private static final long serialVersionUID = 2L;
/**
@@ -79,10 +75,10 @@ public class ClientException extends Nat
* @param messageStack The whole stack of error messages
* @since 1.9
*/
- ClientException(String message, String source, int aprError,
- List<ErrorMessage> messageStack)
+ ClientException(String message, Throwable cause, String source,
+ int aprError, List<ErrorMessage> messageStack)
{
- super(message, source, aprError);
+ super(message, source, cause, aprError);
this.messageStack = messageStack;
}
@@ -96,7 +92,7 @@ public class ClientException extends Nat
*/
ClientException(String message, String source, int aprError)
{
- this(message, source, aprError, null);
+ this(message, null, source, aprError, null);
}
public List<ErrorMessage> getAllMessages()
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java Wed Nov 27 11:52:35 2013
@@ -23,10 +23,12 @@
package org.apache.subversion.javahl;
+import org.apache.subversion.javahl.types.*;
+import org.apache.subversion.javahl.callback.ClientNotifyCallback;
+
+import java.util.List;
import java.util.Map;
import java.util.EventObject;
-import org.apache.subversion.javahl.callback.ClientNotifyCallback;
-import org.apache.subversion.javahl.types.*;
/**
* The event passed to the {@link ClientNotifyCallback#onNotify}
@@ -34,14 +36,18 @@ import org.apache.subversion.javahl.type
*/
public class ClientNotifyInformation extends EventObject
{
- // Update the serialVersionUID when there is a incompatible change
- // made to this class. See any of the following, depending upon
- // the Java release.
- // http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/version.doc7.html
- // http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf
- // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html#6678
- // http://java.sun.com/javase/6/docs/platform/serialization/spec/version.html#6678
- private static final long serialVersionUID = 1L;
+ // Update the serialVersionUID when there is a incompatible change made to
+ // this class. See the java documentation for when a change is incompatible.
+ // http://java.sun.com/javase/7/docs/platform/serialization/spec/version.html#6678
+ private static final long serialVersionUID = 2L;
+
+ /**
+ * Path, either absolute or relative to the current working
+ * directory (i.e., not relative to an anchor). <code>path</code>
+ * is <code>null</vode> when the real target is an URL that is
+ * available in {@link #url}.
+ */
+ private String path;
/**
* The {@link Action} which triggered this event.
@@ -69,6 +75,12 @@ public class ClientNotifyInformation ext
private String errMsg;
/**
+ * A detailed stack of error messages for the item.
+ * @see ClientException
+ */
+ private List<ClientException.ErrorMessage> errMsgStack;
+
+ /**
* The {@link Status} of the content of the item.
*/
private Status contentState;
@@ -99,6 +111,12 @@ public class ClientNotifyInformation ext
private RevisionRange mergeRange;
/**
+ * Similar to {@link #path}, but when not <code>null</code>, the
+ * notification is about a UR>.
+ */
+ private String url;
+
+ /**
* A common absolute path prefix that can be subtracted from .path.
*/
private String pathPrefix;
@@ -139,30 +157,35 @@ public class ClientNotifyInformation ext
* @param changelistName The name of the changelist.
* @param mergeRange The range of the merge just beginning to occur.
* @param pathPrefix A common path prefix.
+ * @since 1.9
*/
public ClientNotifyInformation(String path, Action action, NodeKind kind,
String mimeType, Lock lock, String errMsg,
+ List<ClientException.ErrorMessage> errMsgStack,
Status contentState, Status propState,
LockStatus lockState, long revision,
String changelistName, RevisionRange mergeRange,
- String pathPrefix, String propName,
+ String url, String pathPrefix, String propName,
Map<String, String> revProps, long oldRevision,
long hunkOriginalStart, long hunkOriginalLength,
long hunkModifiedStart, long hunkModifiedLength,
long hunkMatchedLine, int hunkFuzz)
{
- super(path == null ? "" : path);
+ super(path != null ? path : (url != null ? url : ""));
+ this.path = path;
this.action = action;
this.kind = kind;
this.mimeType = mimeType;
this.lock = lock;
this.errMsg = errMsg;
+ this.errMsgStack = errMsgStack;
this.contentState = contentState;
this.propState = propState;
this.lockState = lockState;
this.revision = revision;
this.changelistName = changelistName;
this.mergeRange = mergeRange;
+ this.url = url;
this.pathPrefix = pathPrefix;
this.propName = propName;
this.revProps = revProps;
@@ -176,7 +199,33 @@ public class ClientNotifyInformation ext
}
/**
+ * @deprecated Constructor compatible with teh 1.8 API; uses
+ * <code>null</code> URL and errMsgStack values.
+ */
+ @Deprecated
+ public ClientNotifyInformation(String path, Action action, NodeKind kind,
+ String mimeType, Lock lock, String errMsg,
+ Status contentState, Status propState,
+ LockStatus lockState, long revision,
+ String changelistName, RevisionRange mergeRange,
+ String pathPrefix, String propName,
+ Map<String, String> revProps, long oldRevision,
+ long hunkOriginalStart, long hunkOriginalLength,
+ long hunkModifiedStart, long hunkModifiedLength,
+ long hunkMatchedLine, int hunkFuzz)
+ {
+ this(path, action, kind, mimeType, lock, errMsg, null,
+ contentState, propState, lockState, revision,
+ changelistName, mergeRange, null, pathPrefix,
+ propName, revProps, oldRevision,
+ hunkOriginalStart, hunkOriginalLength,
+ hunkModifiedStart, hunkModifiedLength,
+ hunkMatchedLine, hunkFuzz);
+ }
+
+ /**
* @return The path of the item, which is the source of the event.
+ * This may actually be a URL.
*/
public String getPath()
{
@@ -184,6 +233,15 @@ public class ClientNotifyInformation ext
}
/**
+ * @return {@link #path}, which may be <code>null</code>.
+ * @since 1.9
+ */
+ public String getNotifiedPath()
+ {
+ return this.path;
+ }
+
+ /**
* @return The {@link Action} which triggered this event.
*/
public Action getAction()
@@ -224,6 +282,14 @@ public class ClientNotifyInformation ext
}
/**
+ * @return Details about the error message for the item.
+ */
+ public List<ClientException.ErrorMessage> getErrMsgDetails()
+ {
+ return errMsgStack;
+ }
+
+ /**
* @return The {@link Status} of the content of the item.
*/
public Status getContentState()
@@ -272,6 +338,15 @@ public class ClientNotifyInformation ext
}
/**
+ * @return {@link #url}, which may be <code>null</code>
+ * @since 1.9
+ */
+ public String getUrl()
+ {
+ return this.url;
+ }
+
+ /**
* @return The common absolute path prefix.
*/
public String getPathPrefix()
@@ -567,7 +642,16 @@ public class ClientNotifyInformation ext
/** A move in the working copy has been broken
* @since New in 1.8. */
- move_broken ("move broken");
+ move_broken ("move broken"),
+
+ /** Running cleanup on an external module.
+ * @since New in 1.9. */
+ cleanup_external ("cleanup external"),
+
+ /** The operation failed because the operation (E.g. commit)
+ * is only valid if the operation includes this path.
+ * @since New in 1.9. */
+ failed_requires_target ("failed requires target");
/**
* The description of the action.
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitInfo.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitInfo.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitInfo.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitInfo.java Wed Nov 27 11:52:35 2013
@@ -32,13 +32,9 @@ import org.apache.subversion.javahl.type
*/
public class CommitInfo implements java.io.Serializable
{
- // Update the serialVersionUID when there is a incompatible change
- // made to this class. See any of the following, depending upon
- // the Java release.
- // http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/version.doc7.html
- // http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf
- // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html#6678
- // http://java.sun.com/javase/6/docs/platform/serialization/spec/version.html#6678
+ // Update the serialVersionUID when there is a incompatible change made to
+ // this class. See the java documentation for when a change is incompatible.
+ // http://java.sun.com/javase/7/docs/platform/serialization/spec/version.html#6678
private static final long serialVersionUID = 1L;
/** the revision committed */
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java Wed Nov 27 11:52:35 2013
@@ -30,13 +30,9 @@ import org.apache.subversion.javahl.type
*/
public class CommitItem implements java.io.Serializable
{
- // Update the serialVersionUID when there is a incompatible change
- // made to this class. See any of the following, depending upon
- // the Java release.
- // http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/version.doc7.html
- // http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf
- // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html#6678
- // http://java.sun.com/javase/6/docs/platform/serialization/spec/version.html#6678
+ // Update the serialVersionUID when there is a incompatible change made to
+ // this class. See the java documentation for when a change is incompatible.
+ // http://java.sun.com/javase/7/docs/platform/serialization/spec/version.html#6678
private static final long serialVersionUID = 1L;
/**
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java Wed Nov 27 11:52:35 2013
@@ -33,13 +33,9 @@ import org.apache.subversion.javahl.type
*/
public class DiffSummary extends EventObject
{
- // Update the serialVersionUID when there is a incompatible change
- // made to this class. See any of the following, depending upon
- // the Java release.
- // http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/version.doc7.html
- // http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf
- // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html#6678
- // http://java.sun.com/javase/6/docs/platform/serialization/spec/version.html#6678
+ // Update the serialVersionUID when there is a incompatible change made to
+ // this class. See the java documentation for when a change is incompatible.
+ // http://java.sun.com/javase/7/docs/platform/serialization/spec/version.html#6678
private static final long serialVersionUID = 1L;
private DiffKind diffKind;
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Wed Nov 27 11:52:35 2013
@@ -51,6 +51,11 @@ public interface ISVNClient
public Version getVersion();
/**
+ * @return Runtime version information about the loaded libsvn_client.
+ */
+ public RuntimeVersion getRuntimeVersion();
+
+ /**
* @return Extended version information about the underlying
* native libraries and operating system.
*/
@@ -134,6 +139,12 @@ public interface ISVNClient
void setPrompt(UserPasswordCallback prompt);
/**
+ * Set callbacks for ra_svn tunnel handling.
+ * @since 1.9
+ */
+ void setTunnelAgent(TunnelAgent tunnelAgent);
+
+ /**
* Retrieve the log messages for an item.
* @param path path or url to get the log message for.
* @param pegRevision revision to interpret path
@@ -308,6 +319,7 @@ public interface ISVNClient
* @param handler the commit message callback, may be <code>null</code>
* if <code>destPath</code> is not a URL
* @throws ClientException If the copy operation fails.
+ * @throws NullPointerException if the <code>sources</code> list is empty.
*/
void copy(List<CopySource> sources, String destPath,
boolean copyAsChild, boolean makeParents,
@@ -347,6 +359,7 @@ public interface ISVNClient
* @deprecated Provided for backward compatibility with 1.7. Passes
* metadataOnly false and allowMixRev true.
*/
+ @Deprecated
void move(Set<String> srcPaths, String destPath, boolean force,
boolean moveAsChild, boolean makeParents,
Map<String, String> revpropTable,
@@ -590,7 +603,7 @@ public interface ISVNClient
* Merge set of revisions into a new local path.
* <p>
* <b>Note:</b> Behaves like the 1.8 version where ignoreAncestry
- * maps to both ignoreMergeinfo and diffIgnoreAncestry
+ * maps to both ignoreMergeinfo and diffIgnoreAncestry.
*
* @param path path or url
* @param pegRevision revision to interpret path
@@ -627,6 +640,7 @@ public interface ISVNClient
* @throws ClientException
* @deprecated Will be removed in a future release
*/
+ @Deprecated
void mergeReintegrate(String path, Revision pegRevision,
String localPath, boolean dryRun)
throws ClientException;
@@ -649,7 +663,7 @@ public interface ISVNClient
* @param pegRevision peg rev for pathOrUrl
* @param mergeSourceUrl the source of the merge
* @param srcPegRevision peg rev for mergeSourceUrl
- * @param srcStartRevieion lower bound of the source revision range
+ * @param srcStartRevision lower bound of the source revision range
* @param srcEndRevision upper bound of the source revision range
* @param discoverChangedPaths return paths of changed items
* @param depth the depth to recurse to
@@ -696,7 +710,7 @@ public interface ISVNClient
* @param target2 second path or url
* @param revision2 second revision
* @param relativeToDir index path is relative to this path
- * @param outFileName file name where difference are written
+ * @param outStream the stream to which difference are written
* @param depth how deep to traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param noDiffDeleted no output on deleted files
@@ -717,6 +731,26 @@ public interface ISVNClient
DiffOptions options)
throws ClientException;
+ /**
+ * Display the differences between two paths
+ * @param target1 first path or url
+ * @param revision1 first revision
+ * @param target2 second path or url
+ * @param revision2 second revision
+ * @param relativeToDir index path is relative to this path
+ * @param outFileName file name where difference are written
+ * @param depth how deep to traverse into subdirectories
+ * @param ignoreAncestry ignore if files are not related
+ * @param noDiffDeleted no output on deleted files
+ * @param force diff even on binary files
+ * @param copiesAsAdds if set, copied files will be shown in their
+ * entirety, not as diffs from their sources
+ * @param ignoreProps don't show property diffs
+ * @param propsOnly show property changes only
+ * @param options additional options for controlling the output
+ * @throws ClientException
+ * @since 1.8
+ */
void diff(String target1, Revision revision1, String target2,
Revision revision2, String relativeToDir, String outFileName,
Depth depth, Collection<String> changelists,
@@ -732,7 +766,7 @@ public interface ISVNClient
* @param target2 second path or url
* @param revision2 second revision
* @param relativeToDir index path is relative to this path
- * @param outFileName file name where difference are written
+ * @param outStream the stream to which difference are written
* @param depth how deep to traverse into subdirectories
* @param ignoreAncestry ignore if files are not related
* @param noDiffDeleted no output on deleted files
@@ -750,6 +784,24 @@ public interface ISVNClient
boolean copiesAsAdds, boolean ignoreProps, boolean propsOnly)
throws ClientException;
+ /**
+ * Display the differences between two paths
+ * @param target1 first path or url
+ * @param revision1 first revision
+ * @param target2 second path or url
+ * @param revision2 second revision
+ * @param relativeToDir index path is relative to this path
+ * @param outFileName file name where difference are written
+ * @param depth how deep to traverse into subdirectories
+ * @param ignoreAncestry ignore if files are not related
+ * @param noDiffDeleted no output on deleted files
+ * @param force diff even on binary files
+ * @param copiesAsAdds if set, copied files will be shown in their
+ * entirety, not as diffs from their sources
+ * @param ignoreProps don't show property diffs
+ * @param propsOnly show property changes only
+ * @throws ClientException
+ */
void diff(String target1, Revision revision1, String target2,
Revision revision2, String relativeToDir, String outFileName,
Depth depth, Collection<String> changelists,
@@ -764,7 +816,7 @@ public interface ISVNClient
* @param startRevision first Revision to compare
* @param endRevision second Revision to compare
* @param relativeToDir index path is relative to this path
- * @param outFileName file name where difference are written
+ * @param outStream the stream to which difference are written
* @param depth how deep to traverse into subdirectories
* @param changelists if non-null, filter paths using changelists
* @param ignoreAncestry ignore if files are not related
@@ -786,6 +838,27 @@ public interface ISVNClient
DiffOptions options)
throws ClientException;
+ /**
+ * Display the differences between two paths.
+ * @param target path or url
+ * @param pegRevision revision tointerpret target
+ * @param startRevision first Revision to compare
+ * @param endRevision second Revision to compare
+ * @param relativeToDir index path is relative to this path
+ * @param outFileName file name where difference are written
+ * @param depth how deep to traverse into subdirectories
+ * @param changelists if non-null, filter paths using changelists
+ * @param ignoreAncestry ignore if files are not related
+ * @param noDiffDeleted no output on deleted files
+ * @param force diff even on binary files
+ * @param copiesAsAdds if set, copied files will be shown in their
+ * entirety, not as diffs from their sources
+ * @param ignoreProps don't show property diffs
+ * @param propsOnly show property changes only
+ * @param options additional options for controlling the output
+ * @throws ClientException
+ * @since 1.8
+ */
void diff(String target, Revision pegRevision, Revision startRevision,
Revision endRevision, String relativeToDir, String outFileName,
Depth depth, Collection<String> changelists,
@@ -801,7 +874,7 @@ public interface ISVNClient
* @param startRevision first Revision to compare
* @param endRevision second Revision to compare
* @param relativeToDir index path is relative to this path
- * @param outFileName file name where difference are written
+ * @param outStream the stream to which difference are written
* @param depth how deep to traverse into subdirectories
* @param changelists if non-null, filter paths using changelists
* @param ignoreAncestry ignore if files are not related
@@ -821,6 +894,25 @@ public interface ISVNClient
boolean copiesAsAdds, boolean ignoreProps, boolean propsOnly)
throws ClientException;
+ /**
+ * Display the differences between two paths.
+ * @param target path or url
+ * @param pegRevision revision tointerpret target
+ * @param startRevision first Revision to compare
+ * @param endRevision second Revision to compare
+ * @param relativeToDir index path is relative to this path
+ * @param outFileName file name where difference are written
+ * @param depth how deep to traverse into subdirectories
+ * @param changelists if non-null, filter paths using changelists
+ * @param ignoreAncestry ignore if files are not related
+ * @param noDiffDeleted no output on deleted files
+ * @param force diff even on binary files
+ * @param copiesAsAdds if set, copied files will be shown in their
+ * entirety, not as diffs from their sources
+ * @param ignoreProps don't show property diffs
+ * @param propsOnly show property changes only
+ * @throws ClientException
+ */
void diff(String target, Revision pegRevision, Revision startRevision,
Revision endRevision, String relativeToDir, String outFileName,
Depth depth, Collection<String> changelists,
@@ -860,7 +952,7 @@ public interface ISVNClient
*
* @param target Path or URL.
* @param pegRevision Revision at which to interpret
- * <code>target</code>. If {@link Revision.Kind#unspecified} or
+ * <code>target</code>. If {@link Revision#UNSPECIFIED} or
* <code>null</code>, behave identically to {@link
* #diffSummarize(String, Revision, String, Revision, Depth,
* Collection, boolean, DiffSummaryCallback)}, using
@@ -925,14 +1017,11 @@ public interface ISVNClient
*
* @param paths paths of the items
* @param name name of the property
- * @param value new value of the property. Set value to <code>
- * null</code> to delete a property
+ * @param value new value of the property. Set value to
+ * <code>null</code> to delete a property
* @param depth the depth to recurse into subdirectories
* @param changelists changelists to filter by
* @param force do not check if the value is valid
- * @param revpropTable A string-to-string mapping of revision properties
- * to values which will be set if this operation
- * results in a commit.
* @throws ClientException
*/
void propertySetLocal(Set<String> paths, String name, byte[] value,
@@ -940,6 +1029,21 @@ public interface ISVNClient
boolean force)
throws ClientException;
+ /**
+ * Sets one property of an item with a String value
+ *
+ * @param paths paths of the items
+ * @param name name of the property
+ * @param value new value of the property. Set value to <code>
+ * null</code> to delete a property
+ * @param depth the depth to recurse into subdirectories
+ * @param changelists changelists to filter by
+ * @param force do not check if the value is valid
+ * @param revpropTable A string-to-string mapping of revision properties
+ * to values which will be set if this operation
+ * results in a commit.
+ * @throws ClientException
+ */
void propertySetRemote(String path, long baseRev, String name,
byte[] value, CommitMessageCallback handler,
boolean force, Map<String, String> revpropTable,
@@ -1069,12 +1173,6 @@ public interface ISVNClient
void setConfigDirectory(String configDir) throws ClientException;
/**
- * Set an event handler that will be called every time the
- * configuration is loaded.
- */
- void setConfigEventHandler(ConfigEvent configHandler);
-
- /**
* Get the configuration directory
* @return the directory
* @throws ClientException
@@ -1082,6 +1180,19 @@ public interface ISVNClient
String getConfigDirectory() throws ClientException;
/**
+ * Set an event handler that will be called every time the
+ * configuration is loaded by this client object.
+ */
+ void setConfigEventHandler(ConfigEvent configHandler)
+ throws ClientException;
+
+ /**
+ * Return a reference to the installed configuration event
+ * handler. The returned value may be <code>null</code>.
+ */
+ ConfigEvent getConfigEventHandler() throws ClientException;
+
+ /**
* cancel the active operation
* @throws ClientException
*/
@@ -1139,7 +1250,56 @@ public interface ISVNClient
throws ClientException;
/**
+ * Invoke <code>callback</code> to return information
+ * <code>pathOrUrl</code> in <code>revision</code>. The
+ * information returned is system-generated metadata, not the sort
+ * of "property" metadata created by users.
+ * <p>
+ * If both revision arguments are either <code>null</code> or
+ * {@link Revision#START}, then information will be pulled solely
+ * from the working copy; no network connections will be made.
+ * <p>
+ * Otherwise, information will be pulled from a repository. The
+ * actual node revision selected is determined by the
+ * <code>pathOrUrl</code> as it exists in
+ * <code>pegRevision</code>. If <code>pegRevision</code> is
+ * {@link Revision#START}, then it defaults to {@link
+ * Revision#HEAD} for URLs or {@link Revision#WORKING} for WC
+ * targets.
+ * <p>
+ * If <code>pathOrUrl</code> is not a local path, then if
+ * <code>revision</code> is {@link Revision#PREVIOUS} (or some
+ * other kind that requires a local path), an error will be
+ * returned, because the desired revision cannot be determined.
+ * <p>
+ * If <code>pathOrUrl</code> is a file, just invoke the callback on it. If it
+ * is a directory, then descend according to <code>depth</code>.
+ * <p>
+ * @param pathOrUrl the path or the url of the item
+ * @param revision the revision of the item to return
+ * @param pegRevision the revision to interpret pathOrUrl
+ * @param depth the depth to recurse
+ * @param fetchExcluded when <code>true</code>, retreive
+ * information about nodes that are excluded from the working copy
+ * @param fetchActualOnly when <code>true</code>, retreive
+ * information about node that are not versioned, but are still
+ * tree conflicted.
+ * @param changelists if non-null, filter paths using changelists
+ * @param callback a callback to receive the infos retrieved
+ * @since 1.9
+ */
+ void info2(String pathOrUrl,
+ Revision revision, Revision pegRevision, Depth depth,
+ boolean fetchExcluded, boolean fetchActualOnly,
+ Collection<String> changelists, InfoCallback callback)
+ throws ClientException;
+
+ /**
* Retrieve information about repository or working copy items.
+ * <p>
+ * Behaves like the 1.9 version, with <code>fetchExcluded</code>
+ * set to <code>false</code> and <code>fetchActualOnly</code> set
+ * to <code>true</code>.
* @param pathOrUrl the path or the url of the item
* @param revision the revision of the item to return
* @param pegRevision the revision to interpret pathOrUrl
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java Wed Nov 27 11:52:35 2013
@@ -112,19 +112,19 @@ public interface ISVNConfig
public static final String HTTP_CHUNKED_REQUESTS = "http-chunked-requests";
/**
- * "true" value in configuraition. One of the values returned by
+ * "true" value in configuration. One of the values returned by
* {@link Category#getYesNoAsk}.
*/
public static final String TRUE = "TRUE";
/**
- * "false" value in configuraition. One of the values returned by
+ * "false" value in configuration. One of the values returned by
* {@link Category#getYesNoAsk}.
*/
public static final String FALSE = "FALSE";
/**
- * "ask" value in configuraition. One of the values returned by
+ * "ask" value in configuration. One of the values returned by
* {@link Category#getYesNoAsk}.
*/
public static final String ASK = "ASK";
@@ -132,7 +132,7 @@ public interface ISVNConfig
/**
* Interface for reading and modifying configuration
* categories. Returned by {@link #config()} and
- * {@link servers()}.
+ * {@link #servers()}.
*/
public interface Category
{
@@ -160,7 +160,7 @@ public interface ISVNConfig
/**
* Returns the long integer value of a configuration option.
- * @see #get(String,String,Boolean)
+ * @see #get(String,String,boolean)
*/
long get(String section,
String option,
@@ -169,8 +169,8 @@ public interface ISVNConfig
/**
* Returns the {@link Tristate} value of a configuration option.
- * @param unknown The value used for {@link Tristate.Unknown}.
- * @see #get(String,String,Boolean)
+ * @param unknown The value used for {@link Tristate#Unknown}.
+ * @see #get(String,String,boolean)
*/
Tristate get(String section,
String option,
@@ -181,7 +181,7 @@ public interface ISVNConfig
/**
* Check that the configuration option's value is true, false
* or "ask". The boolean representations are the same as those
- * understood by {@link #get(String,String,Boolean)}. If the
+ * understood by {@link #get(String,String,boolean)}. If the
* option is not found, the default value will be parsed
* instead.
* @return {@link ISVNConfig#TRUE}, {@link ISVNConfig#FALSE}
@@ -207,7 +207,7 @@ public interface ISVNConfig
/**
* Set the value of a configuration option to represent a boolean.
- * @see @set(String,String,String)
+ * @see #set(String,String,String)
*/
void set(String section,
String option,
@@ -215,7 +215,7 @@ public interface ISVNConfig
/**
* Set the value of a configuration option to represent a long integer.
- * @see @set(String,String,String)
+ * @see #set(String,String,String)
*/
void set(String section,
String option,
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java Wed Nov 27 11:52:35 2013
@@ -31,8 +31,8 @@ import java.util.Map;
/**
* Editor interface (implements the EV2 abstraction).
- * @see <a href="http://svn.apache.org/repos/asf/subversion/trunk/subversion/include/private/svn_editor.h"
- * >svn_editor.h</a> for all restrictions on driving an editor.
+ * @see <a href="http://svn.apache.org/repos/asf/subversion/trunk/subversion/include/private/svn_editor.h">svn_editor.h</a>
+ * for all restrictions on driving an editor.
* @since 1.9
*/
public interface ISVNEditor
@@ -261,8 +261,7 @@ public interface ISVNEditor
* <code>sourceRelativePath</code> at the start of the whole edit
* and<code>sourceRelativePath</code> at
* <code>sourceRevision</code> must lie within the same node-rev
- * (aka history-segment). This is just like the #delete() and
- * #rotate().
+ * (aka history-segment). This is just like the #delete().
* <p>
* For a description of <code>replacesRevision</code>, see #addFile().
*
@@ -274,42 +273,6 @@ public interface ISVNEditor
long replacesRevision)
throws ClientException;
-// Not implemented in the native API
-// /**
-// * Perform a rotation among multiple nodes in the target tree.
-// * <p>
-// * The <code>elements</code> list specifies the nodes in the tree
-// * which are located at a path and expected to be at a specific
-// * revision. These nodes are simultaneously moved in a rotation
-// * pattern. For example, the node at index 0
-// * <code>elements</code> will be moved to the relative path
-// * specified at index 1 of <code>elements</code>. The node at
-// * index 1 will be moved to the location at index 2. The node at
-// * index N-1 will be moved to the relative path specified at index 0.
-// * <p>
-// * The simplest form of this operation is to swap nodes A and
-// * B. One may think to move A to a temporary location T, then move
-// * B to A, then move T to B. However, this last move violations
-// * the Once Rule by moving T (which had already by edited by the
-// * move from A). In order to keep the restrictions against
-// * multiple moves of a single node, the rotation operation is
-// * needed for certain types of tree edits.
-// *
-// * @throws ClientException
-// */
-// void rotate(Iterable<RotatePair> elements) throws ClientException;
-//
-// public static final class RotatePair
-// {
-// public RotatePair(String relativePath, long revision)
-// {
-// this.relativePath = relativePath;
-// this.revision = revision;
-// }
-// public final String relativePath;
-// public final long revision;
-// }
-
/**
* Signal that the edit has been completed successfully.
* After this method is called, the editor is considered closed.
@@ -325,4 +288,86 @@ public interface ISVNEditor
* @throws ClientException
*/
void abort() throws ClientException;
+
+
+ /**
+ * Callback interface for providing the base contents of a file
+ * that is being modified.
+ * @see ISVNRemote.getCommitEditor(Map,CommitCallback,Set,boolean,ISVNEditor.ProvideBaseCallback,ISVNEditor.ProvidePropsCallback,ISVNEditor.GetNodeKindCallback)
+ */
+ public interface ProvideBaseCallback
+ {
+ public static class ReturnValue
+ {
+ /**
+ * @param contents The base ({@link Revision#BASE}) contents
+ * of the file.
+ * @param revision The base revision number.
+ */
+ public ReturnValue(InputStream contents, long revision)
+ {
+ this.contents = contents;
+ this.revision = revision;
+ }
+
+ final InputStream contents;
+ final long revision;
+ }
+
+ /**
+ * Returns the base contents and revision number of the file.
+ * @param reposRelpath The repository path of the file,
+ * relative to the session base URL.
+ */
+ ReturnValue getContents(String reposRelpath);
+ }
+
+ /**
+ * Callback interface for providing the base properties of a file
+ * or directory that is being modified.
+ * @see ISVNRemote.getCommitEditor(Map,CommitCallback,Set,boolean,ISVNEditor.ProvideBaseCallback,ISVNEditor.ProvidePropsCallback,ISVNEditor.GetNodeKindCallback)
+ */
+ public interface ProvidePropsCallback
+ {
+ public static class ReturnValue
+ {
+ /**
+ * @param properties The base ({@link Revision#BASE}) properties
+ * of the file or directory.
+ * @param revision The base revision number.
+ */
+ public ReturnValue(Map<String, byte[]> properties, long revision)
+ {
+ this.properties = properties;
+ this.revision = revision;
+ }
+
+ final Map<String, byte[]> properties;
+ final long revision;
+ }
+
+ /**
+ * Returns the base properties and revision number of the file
+ * or directory.
+ * @param reposRelpath The repository path of the file or directory,
+ * relative to the session base URL.
+ */
+ ReturnValue getProperties(String reposRelpath);
+ }
+
+ /**
+ * Callback interface for providing the kind of the node that was
+ * the source of a copy.
+ * @see ISVNRemote.getCommitEditor(Map,CommitCallback,Set,boolean,ISVNEditor.ProvideBaseCallback,ISVNEditor.ProvidePropsCallback,ISVNEditor.GetNodeKindCallback)
+ */
+ public interface GetNodeKindCallback
+ {
+ /**
+ * Returns the kind of the node that was the source of a copy.
+ * @param reposRelpath The repository path of the node,
+ * relative to the session base URL.
+ * @param revision The copy-from revision.
+ */
+ NodeKind getKind(String reposRelpath, long revision);
+ }
}
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java Wed Nov 27 11:52:35 2013
@@ -27,13 +27,15 @@ import org.apache.subversion.javahl.type
import org.apache.subversion.javahl.callback.*;
import java.util.Date;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.io.OutputStream;
/**
* Encapsulates an RA session object and related operations.
- * @see subversion/include/svn_ra.h#svn_ra_open
+ * @see <a href="http://svn.apache.org/repos/asf/subversion/trunk/subversion/include/svn_ra.h">svn_ra.h</a>,
+ * the documentation of the <code>svn_ra_open</code> function.
* @since 1.9
*/
public interface ISVNRemote
@@ -52,9 +54,11 @@ public interface ISVNRemote
/** Change the URL of the session to point to a new path in the
* same repository.
+ *<p>
+ * <b>Note:</b> The operation fails if the URL has a different
+ * repository root than the current session URL.
+ *<p>
* @throws ClientException
- * @note The operation fails if the URL has a different repository
- * root than the current session URL.
*/
void reparent(String url) throws ClientException;
@@ -114,20 +118,22 @@ public interface ISVNRemote
/**
* Change the value of an unversioned property.
+ *<p>
+ * <b>Note:</b> If the server has Capability.atomic_revprops and
+ * <code>oldValue</code> is not <code>null</code>, and the present
+ * value of the propery is not <code>oldValue</code> (e.g., if
+ * another client changed the property), then the operation will
+ * fail.
+ *<p>
+ * <b>Note:</b> If the server does not adveritse
+ * Capability.atomic_revprops, then <code>oldValue</code>
+ * <em>must</em> be <code>null</code>.
+ *<p>
* @param revision The revision to which the propery is attached
* @param propertyName The name of the propery
* @param oldValue The previous value of the property (see note below)
* @param newValue The new value of the property. If <code>newValue</code>
* is <code>null</code>, the property will be deleted.
- *
- * @node If the server has Capability.atomic_revprops and
- * <code>oldValue</code> is not <code>null</code>, and the
- * present value of the propery is not <code>oldValue</code>
- * (e.g., if another client changed the property), then
- * the operation will fail.
- * @note If the server does not adveritse Capability.atomic_revprops,
- * then <code>oldValue</code> <em>must</em> be <code>null</code>.
- *
* @throws IllegalArgumentException if <code>oldValue</code> is not
* <code>null</code> and the server does not advertise the
* atomic_revprops capability.
@@ -189,14 +195,35 @@ public interface ISVNRemote
* locks on committed objects. Else, automatically release such
* locks.
* <p>
+ * The callbacks <code>getBase</code>, <code>getProps</code> and
+ * <code>getCopyfromKind</code> are invoked by the editor to fetch
+ * the contents, preoprties and copyfrom kind of an entry during
+ * the commit drive. They may be <code>null</code>; in that case,
+ * the commit may be less efficient because the client will not be
+ * able to delta-compress the data sent to the server, and more
+ * server connections may have to be opened.
+ * <p>
* The caller may not perform any remote operations using this session
* before finishing the edit.
* @throws ClientException
*/
ISVNEditor getCommitEditor(Map<String, byte[]> revisionProperties,
CommitCallback commitCallback,
- Set<Lock> lockTokens,
- boolean keepLocks)
+ Set<Lock> lockTokens, boolean keepLocks,
+ ISVNEditor.ProvideBaseCallback getBase,
+ ISVNEditor.ProvidePropsCallback getProps,
+ ISVNEditor.GetNodeKindCallback getCopyfromKind)
+ throws ClientException;
+
+ /**
+ * Like {@link #getCommitEditor(Map,CommitCallback<Set,boolean,
+ * ISVNEditor.ProvideBaseCallback,ISVNEditor.ProvidePropsCallback,
+ * ISVNEditor.GetNodeKindCallback)}, but with all callbacks set to
+ * <code>null</code>.
+ */
+ ISVNEditor getCommitEditor(Map<String, byte[]> revisionProperties,
+ CommitCallback commitCallback,
+ Set<Lock> lockTokens, boolean keepLocks)
throws ClientException;
/**
@@ -291,7 +318,7 @@ public interface ISVNRemote
*
* @param revision The revision to look for <code>paths</code>
* in. Defaults to the youngest revision when
- * {@link Revision.SVN_INVALID_REVNUM}.
+ * {@link Revision#SVN_INVALID_REVNUM}.
* @param inherit Indicates whether explicit, explicit or
* inherited, or only inherited mergeinfo for
* <code>paths</code> is retrieved.
@@ -433,28 +460,276 @@ public interface ISVNRemote
throws ClientException;
/**
- * Return the kind of the node in path at revision.
+ * Return the kind of the node in <code>path</code> at
+ * <code>revision</code>.
* @param path A path relative to the sessionn URL
* @throws ClientException
*/
NodeKind checkPath(String path, long revision)
throws ClientException;
- // TODO: stat
- // TODO: getLocations
- // TODO: getLocationSegments
- // TODO: getFileRevisions
+ /**
+ * Return the directory entry object for <code>path</code> at
+ * <code>revision</code>.
+ * @param path A path relative to the sessionn URL
+ * @return A directory entry obeject, or <code>null</code> if
+ * <code>path</code> at <code>revision</code> does not exist.
+ * @throws ClientException
+ */
+ DirEntry stat(String path, long revision)
+ throws ClientException;
+
+ /**
+ * Find the locations of the object identified by
+ * <code>path</code> and <code>pegRevision</code> in the
+ * repository at the given revisions. If the object does not exist
+ * in a given revision, that revision will be ignored.
+ * <p>
+ * <b>Note:</b> None of the parameters may be NULL.
+ * @param path A path relative to the session URL
+ * @param pegRevision The peg revision to use for locating the object
+ * @param locationRevisions The set of revisions to find locations for
+ * @throws ClientException
+ */
+ Map<Long, String> getLocations(String path, long pegRevision,
+ Iterable<Long> locationRevisions)
+ throws ClientException;
+
+ /**
+ * The object returned from {@link #getLocationSegments}.
+ */
+ public static class LocationSegment implements java.io.Serializable
+ {
+ // Update the serialVersionUID when there is a incompatible change
+ // made to this class.
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Private constructor called by the native implementation.
+ */
+ private LocationSegment(String path,
+ long startRevision,
+ long endRevision)
+ {
+ this.path = path;
+ this.startRevision = startRevision;
+ this.endRevision = endRevision;
+ }
+
+ /**
+ * @return The repository-relative path of the obejct in this
+ * history segment.
+ */
+ public String getPath() { return path; }
+
+ /**
+ * @return The start revision of the history segment.
+ */
+ public long getStartRevision() { return startRevision; }
+
+ /**
+ * @return The end revision of the history segment.
+ */
+ public long getEndRevision() { return endRevision; }
+
+ private String path;
+ private long startRevision;
+ private long endRevision;
+ }
+
+ /**
+ * Call <code>handler</code> for every segment in the location
+ * history of <code>path</code> at <code>pegRevision</code>,
+ * working backwards in time from <code>startRevision</code> to
+ * <code>endRevision</code>.
+ *
+ * @param path A session-relative path.
+ * @param pegRevision The peg revision to find <code>path</code> in.
+ * @param startRevision The upper bound of the revision range. Use
+ * {@link org.apache.subversion.javahl.types.Revision#SVN_INVALID_REVNUM}
+ * to indicate HEAD.
+ * @param endRevision The lower bound of the revision range. Use
+ * {@link org.apache.subversion.javahl.types.Revision#SVN_INVALID_REVNUM}
+ * to trace the history of the object to its origin.
+ * @param handler The callback handler.
+ * @throws ClientException
+ */
+ void getLocationSegments(String path,
+ long pegRevision,
+ long startRevision,
+ long endRevision,
+ RemoteLocationSegmentsCallback handler)
+ throws ClientException;
+
+ /**
+ * Return a list of segments in the location history of <code>path</code>
+ * at <code>pegRevision</code>, working backwards in time from
+ * <code>startRevision</code> to <code>endRevision</code>.
+ *
+ * @param path A session-relative path.
+ * @param pegRevision The peg revision to find <code>path</code> in.
+ * @param startRevision The upper bound of the revision range. Use
+ * {@link org.apache.subversion.javahl.types.Revision#SVN_INVALID_REVNUM}
+ * to indicate HEAD.
+ * @param endRevision The lower bound of the revision range. Use
+ * {@link org.apache.subversion.javahl.types.Revision#SVN_INVALID_REVNUM}
+ * to trace the history of the object to its origin.
+ * @throws ClientException
+ */
+ List<LocationSegment> getLocationSegments(String path,
+ long pegRevision,
+ long startRevision,
+ long endRevision)
+ throws ClientException;
+
+ /**
+ * The object returned by {@link #getFileRevisions}.
+ */
+ public final class FileRevision implements java.io.Serializable
+ {
+ // Update the serialVersionUID when there is a incompatible change
+ // made to this class.
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Private constructor called by the native implementation.
+ */
+ private FileRevision(String path, long revision,
+ boolean resultOfMerge,
+ Map<String, byte[]> revisionProperties,
+ Map<String, byte[]> propertiesDelta)
+ {
+ this.path = path;
+ this.revision = revision;
+ this.resultOfMerge = resultOfMerge;
+ this.revisionProperties = revisionProperties;
+ this.propertiesDelta = propertiesDelta;
+ }
+
+ /**
+ * @return The path of the file in this revision.
+ */
+ public String getPath() { return path; }
+
+ /**
+ * @return The revision associated with the path.
+ */
+ public long getRevision() { return revision; }
+
+ /**
+ * @return A flag indicating that this revision was the result
+ * of a merge.
+ */
+ public boolean isResultOfMerge() { return resultOfMerge; }
+
+ /**
+ * @return The list of revision properties.
+ */
+ public Map<String, byte[]> getRevisionProperties()
+ {
+ return revisionProperties;
+ }
+
+ /**
+ * @return The changes that were made to the file's properties
+ * in this revision. This map will contain only added,
+ * modified and deleted properties. Deleted properties will
+ * have <code>null</code> values.
+ */
+ public Map<String, byte[]> getPropertiesDelta()
+ {
+ return propertiesDelta;
+ }
+
+ private String path;
+ private long revision;
+ private boolean resultOfMerge;
+ private Map<String, byte[]> revisionProperties;
+ private Map<String, byte[]> propertiesDelta;
+ }
+
+ /**
+ * Call <code>handler</code> for each of a subset of the
+ * interesting revisions of a file <code>path</code> as seen in
+ * revision <code>endRevision</code>.
+ * <p>
+ * If there is an interesting revision of the file that is less
+ * than or equal to <code>startRevision</code>, the iteration will
+ * begin at that revision. Otherwise the iteration will begin at
+ * the first revision of the file in the repository, which has to
+ * be less than or equal to <code>endRevision</code>. Note that
+ * if the function succeeds, <code>handler</code> will be called
+ * at least once.
+ * <p>
+ * <b>Note:</b> This functionality is not available in pre-1.1
+ * servers. If the server doesn't implement it, an alternative
+ * (but much slower) implementation based on {@link #getLog} is
+ * used.
+ * <p>
+ * <b>Note:</b> With Subversion 1.8 and newer servers this
+ * function supports reversion of the revision range for when
+ * <code>includeMergedRevisions</code> is <code>false</code>.
+ *
+ * @param path A path relative to the session URL.
+ * @param startRevision The lower bound of the revision interval.
+ * @param endRevision the upper bound of the revision interval.
+ * @param includeMergedRevisions When <code>true</code>, revisions that
+ * contributed to a merge are included in the result.
+ * @throws ClientException
+ */
+ void getFileRevisions(String path,
+ long startRevision, long endRevision,
+ boolean includeMergedRevisions,
+ RemoteFileRevisionsCallback handler)
+ throws ClientException;
+
+ /**
+ * Retrieve a subset of the interesting revisions of a file
+ * <code>path</code> as seen in revision <code>endRevision</code>.
+ * <p>
+ * If there is an interesting revision of the file that is less
+ * than or equal to <code>startRevision</code>, the iteration will
+ * begin at that revision. Otherwise the iteration will begin at
+ * the first revision of the file in the repository, which has to
+ * be less than or equal to <code>endRevision</code>. Note that
+ * if the function succeeds, the returned list will contain at
+ * least one element.
+ * <p>
+ * <b>Note:</b> This functionality is not available in pre-1.1
+ * servers. If the server doesn't implement it, an alternative
+ * (but much slower) implementation based on {@link #getLog} is
+ * used.
+ * <p>
+ * <b>Note:</b> With Subversion 1.8 and newer servers this
+ * function supports reversion of the revision range for when
+ * <code>includeMergedRevisions</code> is <code>false</code>.
+ *
+ * @param path A path relative to the session URL.
+ * @param startRevision The lower bound of the revision interval.
+ * @param endRevision the upper bound of the revision interval.
+ * @param includeMergedRevisions When <code>true</code>, revisions that
+ * contributed to a merge are included in the result.
+ * @throws ClientException
+ */
+ List<FileRevision> getFileRevisions(String path,
+ long startRevision, long endRevision,
+ boolean includeMergedRevisions)
+ throws ClientException;
+
+
// TODO: lock
// TODO: unlock
// TODO: getLock
/**
* Return a dictionary containing all locks on or below the given path.
+ * <p>
+ * <b>Note:</b> It is not considered an error if <code>path</code> does
+ * not exist in HEAD. Such a search will simply return no locks.
+ * <p>
+ * <b>Note:</b>This functionality is not available in pre-1.2 servers.
* @param path A path relative to the sessionn URL
* @param depth The recursion depth
- * @note It is not considered an error for the path to not exist in HEAD.
- * Such a search will simply return no locks.
- * @note This functionality is not available in pre-1.2 servers.
* @throws ClientException
*/
Map<String, Lock> getLocks(String path, Depth depth)
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIError.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIError.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIError.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIError.java Wed Nov 27 11:52:35 2013
@@ -28,13 +28,9 @@ package org.apache.subversion.javahl;
*/
public class JNIError extends Error
{
- // Update the serialVersionUID when there is a incompatible change
- // made to this class. See any of the following, depending upon
- // the Java release.
- // http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/version.doc7.html
- // http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf
- // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html#6678
- // http://java.sun.com/javase/6/docs/platform/serialization/spec/version.html#6678
+ // Update the serialVersionUID when there is a incompatible change made to
+ // this class. See the java documentation for when a change is incompatible.
+ // http://java.sun.com/javase/7/docs/platform/serialization/spec/version.html#6678
private static final long serialVersionUID = 1L;
/**
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeException.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeException.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeException.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeException.java Wed Nov 27 11:52:35 2013
@@ -29,13 +29,9 @@ package org.apache.subversion.javahl;
*/
class NativeException extends SubversionException
{
- // Update the serialVersionUID when there is a incompatible change
- // made to this class. See any of the following, depending upon
- // the Java release.
- // http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/version.doc7.html
- // http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf
- // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html#6678
- // http://java.sun.com/javase/6/docs/platform/serialization/spec/version.html#6678
+ // Update the serialVersionUID when there is a incompatible change made to
+ // this class. See the java documentation for when a change is incompatible.
+ // http://java.sun.com/javase/7/docs/platform/serialization/spec/version.html#6678
private static final long serialVersionUID = 1L;
/**
@@ -58,9 +54,10 @@ class NativeException extends Subversion
* @param aprError Any associated APR error code for a wrapped
* <code>svn_error_t</code>.
*/
- NativeException(String message, String source, int aprError)
+ NativeException(String message, String source, Throwable cause,
+ int aprError)
{
- super(message);
+ super(message, cause);
this.source = source;
this.aprError = aprError;
}
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java?rev=1546002&r1=1546001&r2=1546002&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java Wed Nov 27 11:52:35 2013
@@ -24,6 +24,7 @@
package org.apache.subversion.javahl;
import org.apache.subversion.javahl.types.Version;
+import org.apache.subversion.javahl.types.RuntimeVersion;
/**
* Handles activities related to management of native resouces
@@ -35,21 +36,32 @@ import org.apache.subversion.javahl.type
public class NativeResources
{
/**
- * @return Version information about the underlying native libraries.
+ * Version information about the underlying native libraries.
*/
private static Version version;
/**
- * Returns version information about the underlying native libraries.
- *
- * @return version
- *
+ * Runtime version information about the loaded libsvn_client.
*/
- public static Version getVersion() {
+ private static RuntimeVersion runtimeVersion;
+
+ /**
+ * @return Version information about the underlying native libraries.
+ */
+ public static Version getVersion()
+ {
return version;
}
/**
+ * @return Runtime version information about the loaded libsvn_client.
+ */
+ public static RuntimeVersion getRuntimeVersion()
+ {
+ return runtimeVersion;
+ }
+
+ /**
* Load the required native library whose path is specified by the
* system property <code>subversion.native.library</code> (which
* can be passed to the JVM on start-up using an argument like
@@ -129,17 +141,29 @@ public class NativeResources
*/
private static final void init()
{
- initNativeLibrary();
+ if (!initNativeLibrary())
+ throw new LinkageError("Native library initialization failed");
+
version = new Version();
if (!version.isAtLeast(1, 9, 0))
{
throw new LinkageError("Native library version must be at least " +
"1.9.0, but is only " + version);
}
+
+ runtimeVersion = new RuntimeVersion();
+ if (runtimeVersion.getMajor() < version.getMajor()
+ || (runtimeVersion.getMajor() == version.getMajor()
+ && runtimeVersion.getMinor() < version.getMinor()))
+ {
+ throw new LinkageError(
+ "Compile-time Native library version is " + version +
+ " but the run-time version is " + runtimeVersion);
+ }
}
/**
* Initialize the native library layer.
*/
- private static native void initNativeLibrary();
+ private static native boolean initNativeLibrary();
}