You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2013/06/20 02:19:30 UTC

svn commit: r1494817 [3/4] - in /subversion/branches/javahl-1.7-extensions: ./ subversion/bindings/javahl/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/javahl/src/org/apache/subvers...

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Thu Jun 20 00:19:28 2013
@@ -75,7 +75,7 @@ Java_org_apache_subversion_javahl_SVNCli
       JNIUtil::throwError(_("bad C++ this"));
       return;
     }
-  cl->dispose();
+  cl->dispose(jthis);
 }
 
 JNIEXPORT void JNICALL
@@ -160,7 +160,8 @@ Java_org_apache_subversion_javahl_SVNCli
 
   ListCallback callback(jcallback);
   cl->list(url, revision, pegRevision, EnumMapper::toDepth(jdepth),
-           (int)jdirentFields, jfetchLocks ? true : false, &callback);
+           static_cast<int>(jdirentFields), jfetchLocks ? true : false,
+           &callback);
 }
 
 JNIEXPORT void JNICALL
@@ -305,7 +306,7 @@ Java_org_apache_subversion_javahl_SVNCli
   cl->logMessages(path, pegRevision, revisionRanges,
                   jstopOnCopy ? true: false, jdisoverPaths ? true : false,
                   jincludeMergedRevisions ? true : false,
-                  revProps, jlimit, &callback);
+                  revProps, static_cast<long>(jlimit), &callback);
 }
 
 JNIEXPORT jlong JNICALL
@@ -401,7 +402,8 @@ Java_org_apache_subversion_javahl_SVNCli
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_add
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jdepth,
- jboolean jforce, jboolean jnoIgnore, jboolean jaddParents)
+ jboolean jforce, jboolean jnoIgnore, jboolean jnoAutoProps,
+ jboolean jaddParents)
 {
   JNIEntry(SVNClient, add);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -414,8 +416,11 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return;
 
-  cl->add(path, EnumMapper::toDepth(jdepth), jforce ? true : false,
-          jnoIgnore ? true : false, jaddParents ? true : false);
+  cl->add(path, EnumMapper::toDepth(jdepth),
+          jforce ? true : false,
+          jnoIgnore ? true : false,
+          jnoAutoProps ? true : false,
+          jaddParents ? true : false);
 }
 
 JNIEXPORT jlongArray JNICALL
@@ -531,7 +536,8 @@ JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_move
 (JNIEnv *env, jobject jthis, jobject jsrcPaths, jstring jdestPath,
  jboolean jforce, jboolean jmoveAsChild, jboolean jmakeParents,
- jobject jrevpropTable, jobject jmessage, jobject jcallback)
+ jboolean jmetadataOnly, jboolean jallowMixRev, jobject jrevpropTable,
+ jobject jmessage, jobject jcallback)
 {
   JNIEntry(SVNClient, move);
 
@@ -561,6 +567,7 @@ Java_org_apache_subversion_javahl_SVNCli
   CommitCallback callback(jcallback);
   cl->move(srcPaths, destPath, &message, jforce ? true : false,
            jmoveAsChild ? true : false, jmakeParents ? true : false,
+           jmetadataOnly ? true: false, jallowMixRev ? true : false,
            revprops, jcallback ? &callback : NULL);
 }
 
@@ -711,8 +718,9 @@ Java_org_apache_subversion_javahl_SVNCli
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_doImport
 (JNIEnv *env, jobject jthis, jstring jpath, jstring jurl, jobject jdepth,
- jboolean jnoIgnore, jboolean jignoreUnknownNodeTypes, jobject jrevpropTable,
- jobject jmessage, jobject jcallback)
+ jboolean jnoIgnore, jboolean jnoAutoProps,
+ jboolean jignoreUnknownNodeTypes, jobject jrevpropTable,
+ jobject jimportFilterCallback, jobject jmessage, jobject jcommitCallback)
 {
   JNIEntry(SVNClient, doImport);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -737,11 +745,13 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return;
 
-  CommitCallback callback(jcallback);
+  CommitCallback commitCallback(jcommitCallback);
+
   cl->doImport(path, url, &message, EnumMapper::toDepth(jdepth),
-               jnoIgnore ? true : false,
+               jnoIgnore ? true : false, jnoAutoProps ? true : false,
                jignoreUnknownNodeTypes ? true : false, revprops,
-               jcallback ? &callback : NULL);
+                NULL,
+               jcommitCallback ? &commitCallback : NULL);
 }
 
 JNIEXPORT jobject JNICALL
@@ -770,9 +780,9 @@ Java_org_apache_subversion_javahl_SVNCli
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZ
 (JNIEnv *env, jobject jthis, jstring jpath1, jobject jrevision1,
- jstring jpath2, jobject jrevision2, jstring jlocalPath, jboolean jforce,
- jobject jdepth, jboolean jignoreAncestry, jboolean jdryRun,
- jboolean jrecordOnly)
+ jstring jpath2, jobject jrevision2, jstring jlocalPath, jboolean jforceDelete,
+ jobject jdepth, jboolean jignoreAncestry,
+ jboolean jdryRun, jboolean jrecordOnly)
 {
   JNIEntry(SVNClient, merge);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -802,16 +812,19 @@ Java_org_apache_subversion_javahl_SVNCli
     return;
 
   cl->merge(path1, revision1, path2, revision2, localPath,
-            jforce ? true:false, EnumMapper::toDepth(jdepth),
-            jignoreAncestry ? true:false, jdryRun ? true:false,
+            jforceDelete ? true:false,
+            EnumMapper::toDepth(jdepth),
+            jignoreAncestry ? true:false,
+            jdryRun ? true:false,
             jrecordOnly ? true:false);
 }
 
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_util_List_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZ
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
- jobject jranges, jstring jlocalPath, jboolean jforce, jobject jdepth,
- jboolean jignoreAncestry, jboolean jdryRun, jboolean jrecordOnly)
+ jobject jranges, jstring jlocalPath, jboolean jforceDelete, jobject jdepth,
+ jboolean jignoreAncestry,
+ jboolean jdryRun, jboolean jrecordOnly)
 {
   JNIEntry(SVNClient, merge);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -833,27 +846,34 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return;
 
+  std::vector<RevisionRange> *revisionRanges = NULL;
+  std::vector<RevisionRange> realRevisionRanges;
   // Build the revision range vector from the Java array.
-  Array ranges(jranges);
-  if (JNIUtil::isExceptionThrown())
-    return;
-
-  std::vector<RevisionRange> revisionRanges;
-  std::vector<jobject> rangeVec = ranges.vector();
-
-  for (std::vector<jobject>::const_iterator it = rangeVec.begin();
-        it < rangeVec.end(); ++it)
+  if (jranges)
     {
-      RevisionRange revisionRange(*it);
+      Array ranges(jranges);
       if (JNIUtil::isExceptionThrown())
         return;
 
-      revisionRanges.push_back(revisionRange);
+      std::vector<jobject> rangeVec = ranges.vector();
+
+      for (std::vector<jobject>::const_iterator it = rangeVec.begin();
+           it < rangeVec.end(); ++it)
+        {
+          RevisionRange revisionRange(*it);
+          if (JNIUtil::isExceptionThrown())
+            return;
+
+          realRevisionRanges.push_back(revisionRange);
+        }
+      revisionRanges = &realRevisionRanges;
     }
 
   cl->merge(path, pegRevision, revisionRanges, localPath,
-            jforce ? true:false, EnumMapper::toDepth(jdepth),
-            jignoreAncestry ? true:false, jdryRun ? true:false,
+            jforceDelete ? true:false,
+            EnumMapper::toDepth(jdepth),
+            jignoreAncestry ? true:false,
+            jdryRun ? true:false,
             jrecordOnly ? true:false);
 }
 
@@ -886,13 +906,11 @@ Java_org_apache_subversion_javahl_SVNCli
                        jdryRun ? true:false);
 }
 
-JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_properties
+static void SVNClient_properties
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
  jobject jpegRevision, jobject jdepth, jobject jchangelists,
- jobject jproplistCallback)
+ jobject jproplistCallback, bool inherited)
 {
-  JNIEntry(SVNClient, properties);
   SVNClient *cl = SVNClient::getCppObject(jthis);
   if (cl == NULL)
     {
@@ -915,11 +933,21 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return;
 
-  ProplistCallback callback(jproplistCallback);
+  ProplistCallback callback(jproplistCallback, inherited);
   cl->properties(path, revision, pegRevision, EnumMapper::toDepth(jdepth),
                  changelists, &callback);
 }
 
+JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_properties
+(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
+ jobject jpegRevision, jobject jdepth, jobject jchangelists,
+ jobject jproplistCallback)
+{
+  JNIEntry(SVNClient, properties);
+  SVNClient_properties(env, jthis, jpath, jrevision, jpegRevision, jdepth,
+                       jchangelists, jproplistCallback, false);
+}
+
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_propertySetRemote
 (JNIEnv *env, jobject jthis, jstring jpath, jlong jbaseRev, jstring jname,
@@ -954,8 +982,8 @@ Java_org_apache_subversion_javahl_SVNCli
     return;
 
   CommitCallback callback(jcallback);
-  cl->propertySetRemote(path, jbaseRev, name, &message, value,
-                        jforce ? true:false,
+  cl->propertySetRemote(path, static_cast<svn_revnum_t>(jbaseRev),
+                        name, &message, value, jforce ? true : false,
                         revprops, jcallback ? &callback : NULL);
 }
 
@@ -1080,7 +1108,7 @@ Java_org_apache_subversion_javahl_SVNCli
 JNIEXPORT jbyteArray JNICALL
 Java_org_apache_subversion_javahl_SVNClient_propertyGet
 (JNIEnv *env, jobject jthis, jstring jpath, jstring jname, jobject jrevision,
- jobject jpegRevision)
+ jobject jpegRevision, jobject jchangelists)
 {
   JNIEntry(SVNClient, propertyGet);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -1105,7 +1133,11 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return NULL;
 
-  return cl->propertyGet(path, name, revision, pegRevision);
+  StringArray changelists(jchangelists);
+  if (JNIUtil::isExceptionThrown())
+    return NULL;
+
+  return cl->propertyGet(path, name, revision, pegRevision, changelists);
 }
 
 JNIEXPORT jobject JNICALL
@@ -1760,7 +1792,27 @@ Java_org_apache_subversion_javahl_SVNCli
     return;
 
   PatchCallback callback(jcallback);
-  cl->patch(patchPath, targetPath, jdryRun ? true : false, (int) jstripCount,
+  cl->patch(patchPath, targetPath,
+            jdryRun ? true : false, static_cast<int>(jstripCount),
             jreverse ? true : false, jignoreWhitespace ? true : false,
             jremoveTempfiles ? true : false, &callback);
 }
+
+JNIEXPORT jobject JNICALL
+Java_org_apache_subversion_javahl_SVNClient_nativeOpenRemoteSession
+(JNIEnv *env, jobject jthis, jstring jpath, jint jretryAttempts)
+{
+  JNIEntry(SVNClient, openRemoteSession);
+  SVNClient *cl = SVNClient::getCppObject(jthis);
+  if (cl == NULL)
+    {
+      JNIUtil::throwError("bad C++ this");
+      return NULL;
+    }
+
+  JNIStringHolder path(jpath);
+  if (JNIUtil::isJavaExceptionThrown())
+    return NULL;
+
+  return cl->openRemoteSession(path, jretryAttempts);
+}

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp Thu Jun 20 00:19:28 2013
@@ -60,7 +60,7 @@ Java_org_apache_subversion_javahl_SVNRep
       JNIUtil::throwError(_("bad C++ this"));
       return;
     }
-  cl->dispose();
+  cl->dispose(jthis);
 }
 
 JNIEXPORT void JNICALL
@@ -170,7 +170,7 @@ Java_org_apache_subversion_javahl_SVNRep
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNRepos_hotcopy
 (JNIEnv *env, jobject jthis, jobject jpath, jobject jtargetPath,
- jboolean jcleanLogs)
+ jboolean jcleanLogs, jboolean jincremental)
 {
   JNIEntry(SVNRepos, hotcopy);
   SVNRepos *cl = SVNRepos::getCppObject(jthis);
@@ -188,7 +188,8 @@ Java_org_apache_subversion_javahl_SVNRep
   if (JNIUtil::isExceptionThrown())
     return;
 
-  cl->hotcopy(path, targetPath, jcleanLogs ? true : false);
+  cl->hotcopy(path, targetPath, jcleanLogs ? true : false,
+              jincremental ? true : false);
 }
 
 JNIEXPORT void JNICALL
@@ -240,6 +241,7 @@ Java_org_apache_subversion_javahl_SVNRep
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNRepos_load
 (JNIEnv *env, jobject jthis, jobject jpath, jobject jinputData,
+ jobject jrevisionStart, jobject jrevisionEnd,
  jboolean jignoreUUID, jboolean jforceUUID, jboolean jusePreCommitHook,
  jboolean jusePostCommitHook, jstring jrelativePath, jobject jnotifyCallback)
 {
@@ -263,12 +265,23 @@ Java_org_apache_subversion_javahl_SVNRep
   if (JNIUtil::isExceptionThrown())
     return;
 
+  Revision revisionStart(jrevisionStart);
+  if (JNIUtil::isExceptionThrown())
+    return;
+
+  Revision revisionEnd(jrevisionEnd, true);
+  if (JNIUtil::isExceptionThrown())
+    return;
+
   ReposNotifyCallback notifyCallback(jnotifyCallback);
 
-  cl->load(path, inputData, jignoreUUID ? true : false,
-           jforceUUID ? true : false, jusePreCommitHook ? true : false,
-           jusePostCommitHook ? true : false, relativePath,
-           jnotifyCallback != NULL ? &notifyCallback : NULL);
+  cl->load(path, inputData, revisionStart, revisionEnd,
+           jignoreUUID ? true : false,
+           jforceUUID ? true : false,
+           jusePreCommitHook ? true : false,
+           jusePostCommitHook ? true : false,
+           relativePath,
+           (jnotifyCallback != NULL ? &notifyCallback : NULL));
 }
 
 JNIEXPORT void JNICALL

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java Thu Jun 20 00:19:28 2013
@@ -544,7 +544,30 @@ public class ClientNotifyInformation ext
         failed_forbidden_by_server ("failed forbidden by server"),
 
         /** Operation skipped the path because it was conflicted */
-        skip_conflicted ("skipped conflicted path");
+        skip_conflicted ("skipped conflicted path"),
+
+        /** The lock on a file was removed during update */
+        update_broken_lock ("broken lock removed"),
+
+        /** Operation failed because a node is obstructed */
+        failed_obstructed ("failed by obstruction"),
+
+        /** Conflict resolver is starting. */
+        conflict_resolver_starting ("conflict resolver starting"),
+
+        /** Conflict resolver is done. */
+        conflict_resolver_done ("conflict resolver done"),
+
+        /** Operation left local modifications. */
+        left_local_modifications ("left local modifications"),
+
+        /** A copy from a foreign repository has started
+         * @since New in 1.8. */
+        foreign_copy_begin ("foreign copy begin"),
+
+        /** A move in the working copy has been broken
+         * @since New in 1.8. */
+        move_broken ("move broken");
 
         /**
          * The description of the action.

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java Thu Jun 20 00:19:28 2013
@@ -70,6 +70,11 @@ public class CommitItem implements java.
     long revision;
 
     /**
+     * the source of the move
+     */
+    String movedFromPath;
+
+    /**
      * This constructor will be only called from the jni code.
      * @param p     path to the commit item
      * @param nk    kind of node (see NodeKind)
@@ -77,8 +82,9 @@ public class CommitItem implements java.
      * @param u     url of the item
      * @param cu    copy source url
      * @param r     revision number
+     * @param mf    move source abspath
      */
-    public CommitItem(String p, NodeKind nk, int sf, String u, String cu, long r)
+    CommitItem(String p, NodeKind nk, int sf, String u, String cu, long r, String mf)
     {
         path = p;
         nodeKind = nk;
@@ -86,6 +92,7 @@ public class CommitItem implements java.
         url = u;
         copyUrl = cu;
         revision = r;
+        movedFromPath = mf;
     }
 
     /**
@@ -149,4 +156,13 @@ public class CommitItem implements java.
     {
         return revision;
     }
+
+    /**
+     * @return the absolute path of the source of a move.
+     * @since 1.8
+     */
+    public String getMovedFromPath()
+    {
+        return movedFromPath;
+    }
 }

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java Thu Jun 20 00:19:28 2013
@@ -53,4 +53,15 @@ public interface CommitItemStateFlags
      * the item has been copied
      */
     public static final int IsCopy=16;
+
+    /**
+     * the item has a lock token
+     */
+    public static final int LockToken = 32;
+
+    /**
+     * the item was moved to this location
+     * @since 1.8
+     */
+    public static int MovedHere = 64;
 }

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java Thu Jun 20 00:19:28 2013
@@ -244,6 +244,7 @@ public class ConflictDescriptor
 
         /**
          * Object is already added or schedule-add.
+         * @since 1.6
          */
         added,
 

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Thu Jun 20 00:19:28 2013
@@ -223,12 +223,30 @@ public interface ISVNClient
      *                  ignore patterns
      * @param addParents add any intermediate parents to the working copy
      * @throws ClientException
+     * @note this method behaves like the 1.8 version with noAutoProps=false
      */
     void add(String path, Depth depth, boolean force, boolean noIgnores,
              boolean addParents)
         throws ClientException;
 
     /**
+     * Adds a file to the repository.
+     * @param path      path to be added.
+     * @param depth     the depth to recurse into subdirectories
+     * @param force     if adding a directory and recurse true and path is a
+     *                  directory, all not already managed files are added.
+     * @param noIgnores if false, don't add files or directories matching
+     *                  ignore patterns
+     * @param noAutoProps if true, ignore any auto-props configuration
+     * @param addParents add any intermediate parents to the working copy
+     * @throws ClientException
+     * @since 1.8
+     */
+    void add(String path, Depth depth, boolean force,
+             boolean noIgnores, boolean noAutoProps, boolean addParents)
+        throws ClientException;
+
+    /**
      * Updates the directories or files from repository
      * @param path array of target files.
      * @param revision the revision number to update.
@@ -298,12 +316,27 @@ public interface ISVNClient
      * @param moveAsChild Whether to move <code>srcPaths</code> as
      * children of <code>destPath</code>.
      * @param makeParents Whether to create intermediate parents.
+     * @param metadataOnly Move just the metadata and not the working files/dirs
+     * @param allowMixRev If true use copy and delete without move tracking
+     *                    when a srcPath is mixed-revision, if false return
+     *                    an error when a srcPath is mixed-revision.
      * @param revpropTable A string-to-string mapping of revision properties
      *                     to values which will be set if this operation
      *                     results in a commit.
      * @param handler   the commit message callback, may be <code>null</code>
      *                  if <code>destPath</code> is not a URL
      * @throws ClientException If the move operation fails.
+     * @since 1.8
+     */
+    void move(Set<String> srcPaths, String destPath, boolean force,
+              boolean moveAsChild, boolean makeParents, boolean metadataOnly,
+              boolean allowMixRev, Map<String, String> revpropTable,
+              CommitMessageCallback handler, CommitCallback callback)
+        throws ClientException;
+
+    /**
+     * @deprecated Provided for backward compatibility with 1.7. Passes
+     *             metadataOnly false and allowMixRev true.
      */
     void move(Set<String> srcPaths, String destPath, boolean force,
               boolean moveAsChild, boolean makeParents,
@@ -400,8 +433,10 @@ public interface ISVNClient
      *                     to values which will be set if this operation
      *                     results in a commit.
      * @param handler   the commit message callback
+     * @param callback  the commit status callback
      * @throws ClientException
-     *
+     * @note this method behaves like the 1.8 version with noAutoProps=false
+     *       and without the filtering option.
      */
     void doImport(String path, String url, Depth depth,
                   boolean noIgnore, boolean ignoreUnknownNodeTypes,
@@ -433,6 +468,8 @@ public interface ISVNClient
      * @param dryRun         do not change anything
      * @param recordOnly     record mergeinfo but do not run merge
      * @throws ClientException
+     * @note Behaves like the 1.8 where ignoreAncestry maps to
+     *       both ignoreMergeinfo and diffIgnoreAncestry
      */
     void merge(String path1, Revision revision1, String path2,
                Revision revision2, String localPath, boolean force, Depth depth,
@@ -443,7 +480,9 @@ public interface ISVNClient
      * Merge set of revisions into a new local path.
      * @param path          path or url
      * @param pegRevision   revision to interpret path
-     * @param revisions     revisions to merge
+     * @param revisions     revisions to merge;
+     *                      may be null, indicating that the optimal range
+     *                      should be determined automatcially (new in 1.8)
      * @param localPath     target local path
      * @param force         overwrite local changes
      * @param depth         how deep to traverse into subdirectories
@@ -451,7 +490,10 @@ public interface ISVNClient
      * @param dryRun        do not change anything
      * @param recordOnly    record mergeinfo but do not run merge
      * @throws ClientException
+     * @note Behaves like the 1.8 where ignoreAncestry maps to
+     *       both ignoreMergeinfo and diffIgnoreAncestry
      */
+    // FIXME: Broken
     void merge(String path, Revision pegRevision, List<RevisionRange> revisions,
                String localPath, boolean force, Depth depth,
                boolean ignoreAncestry, boolean dryRun, boolean recordOnly)
@@ -472,6 +514,7 @@ public interface ISVNClient
      * @param localPath     target local path
      * @param dryRun        do not change anything
      * @throws ClientException
+     * @deprecated Will be removed in a future release
      */
     void mergeReintegrate(String path, Revision pegRevision,
                           String localPath, boolean dryRun)
@@ -521,6 +564,8 @@ public interface ISVNClient
      * @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,
@@ -545,6 +590,8 @@ public interface ISVNClient
      * @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,
@@ -700,6 +747,10 @@ public interface ISVNClient
      * @throws ClientException
      */
     byte[] propertyGet(String path, String name, Revision revision,
+                       Revision pegRevision, Collection<String> changelists)
+            throws ClientException;
+
+    byte[] propertyGet(String path, String name, Revision revision,
                        Revision pegRevision)
             throws ClientException;
 
@@ -886,4 +937,36 @@ public interface ISVNClient
                int stripCount, boolean reverse, boolean ignoreWhitespace,
                boolean removeTempfiles, PatchCallback callback)
             throws ClientException;
+
+    /**
+     * Open a persistent session to a repository.
+     * @param path A path in a working copy from which the
+     *        session URL is derived.
+     * @throws remote.RetryOpenSession If the session URL was redirected
+     * @throws SubversionException If an URL redirect cycle was detected
+     * @throws ClientException
+     * @note The session object inherits the progress callback,
+     *       configuration directory and authentication info.
+     * @since 1.9
+     */
+    ISVNRemote openRemoteSession(String path)
+            throws ClientException, SubversionException;
+
+    /**
+     * Open a persistent session to a repository.
+     * @param path A path in a working copy from which the
+     *        session URL is derived.
+     * @param retryAttempts The number of times to retry the operation
+     *        if the given URL is redirected.
+     * @throws IllegalArgumentException If <code>retryAttempts</code>
+     *         is not positive
+     * @throws remote.RetryOpenSession If the session URL was redirected
+     * @throws SubversionException If an URL redirect cycle was detected
+     * @throws ClientException
+     * @note The session object inherits the progress callback,
+     *       configuration directory and authentication info.
+     * @since 1.9
+     */
+    ISVNRemote openRemoteSession(String path, int retryAttempts)
+            throws ClientException, SubversionException;
 }

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java Thu Jun 20 00:19:28 2013
@@ -113,6 +113,9 @@ public interface ISVNRepos {
 	 * @throws ClientException  throw in case of problem
 	 */
 	public abstract void hotcopy(File path, File targetPath,
+			boolean cleanLogs, boolean incremental) throws ClientException;
+
+	public abstract void hotcopy(File path, File targetPath,
 			boolean cleanLogs) throws ClientException;
 
 	/**
@@ -133,8 +136,35 @@ public interface ISVNRepos {
 	public abstract void listUnusedDBLogs(File path, MessageReceiver receiver)
 			throws ClientException;
 
+
+	/**
+	 * load the data of a dump into a repository
+	 * @param path              the path to the repository
+	 * @param dataInput         the data input source
+         * @param start             the first revision to load
+         * @param end               the last revision to load
+	 * @param ignoreUUID        ignore any UUID found in the input stream
+	 * @param forceUUID         set the repository UUID to any found in the
+	 *                          stream
+	 * @param usePreCommitHook  use the pre-commit hook when processing commits
+	 * @param usePostCommitHook use the post-commit hook when processing commits
+	 * @param relativePath      the directory in the repository, where the data
+	 *                          in put optional.
+	 * @param callback          the target for processing messages
+	 * @throws ClientException  throw in case of problem
+         * @since 1.8
+	 */
+	public abstract void load(File path, InputStream dataInput,
+                                  Revision start, Revision end,
+                                  boolean ignoreUUID, boolean forceUUID,
+                                  boolean usePreCommitHook,
+                                  boolean usePostCommitHook,
+                                  String relativePath,
+                                  ReposNotifyCallback callback)
+        throws ClientException;
+
 	/**
-	 * load the data of a dump into a repository,
+	 * load the data of a dump into a repository
 	 * @param path              the path to the repository
 	 * @param dataInput         the data input source
 	 * @param ignoreUUID        ignore any UUID found in the input stream
@@ -146,6 +176,8 @@ public interface ISVNRepos {
 	 *                          in put optional.
 	 * @param callback          the target for processing messages
 	 * @throws ClientException  throw in case of problem
+         * @note behaves like the 1.8 vesion with the revision
+         *       parameters set to Revision.START and Revision.HEAD.
 	 */
 	public abstract void load(File path, InputStream dataInput,
 			boolean ignoreUUID, boolean forceUUID, boolean usePreCommitHook,
@@ -163,8 +195,9 @@ public interface ISVNRepos {
 			throws ClientException;
 
 	/**
-	 * recover the berkeley db of a repository, returns youngest revision
+	 * recover the filesystem backend of a repository
 	 * @param path              the path to the repository
+         * @return youngest revision
 	 * @throws ClientException  throw in case of problem
 	 */
 	public abstract long recover(File path, ReposNotifyCallback callback)

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java Thu Jun 20 00:19:28 2013
@@ -188,7 +188,19 @@ public class ReposNotifyInformation exte
         recover_start,
 
         /** Upgrade has started. */
-        upgrade_start;
+        upgrade_start,
+
+        /**
+         * A revision was skipped during loading.
+         * @since 1.8
+         */
+        load_skipped_rev,
+
+        /**
+         * The structure of a revision is being verified.
+         * @since 1.8
+         */
+        verify_rev_structure;
     }
 
     public enum NodeAction

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Thu Jun 20 00:19:28 2013
@@ -147,14 +147,14 @@ public class SVNClient implements ISVNCl
         clientContext.notify = notify;
     }
 
-    public void setConflictResolver(ConflictResolverCallback listener)
+    public void setConflictResolver(ConflictResolverCallback resolver)
     {
-        clientContext.resolver = listener;
+        clientContext.resolver = resolver;
     }
 
-    public void setProgressCallback(ProgressCallback listener)
+    public void setProgressCallback(ProgressCallback progress)
     {
-        clientContext.listener = listener;
+        clientContext.setProgressCallback(progress);
     }
 
     public native void remove(Set<String> paths, boolean force,
@@ -168,9 +168,17 @@ public class SVNClient implements ISVNCl
             throws ClientException;
 
     public native void add(String path, Depth depth, boolean force,
-                           boolean noIgnores, boolean addParents)
+                           boolean noIgnores, boolean noAutoProps,
+                           boolean addParents)
         throws ClientException;
 
+    public void add(String path, Depth depth, boolean force,
+                    boolean noIgnores, boolean addParents)
+        throws ClientException
+    {
+        add(path, depth, force, noIgnores, false, addParents);
+    }
+
     public native long[] update(Set<String> paths, Revision revision,
                                 Depth depth, boolean depthIsSticky,
                                 boolean makeParents,
@@ -194,11 +202,24 @@ public class SVNClient implements ISVNCl
 
     public native void move(Set<String> srcPaths, String destPath,
                             boolean force, boolean moveAsChild,
-                            boolean makeParents,
+                            boolean makeParents, boolean metadataOnly,
+                            boolean allowMixRev,
                             Map<String, String> revpropTable,
                             CommitMessageCallback handler, CommitCallback callback)
             throws ClientException;
 
+    /** @deprecated */
+    public void move(Set<String> srcPaths, String destPath,
+                     boolean force, boolean moveAsChild,
+                     boolean makeParents,
+                     Map<String, String> revpropTable,
+                     CommitMessageCallback handler, CommitCallback callback)
+        throws ClientException
+    {
+        move(srcPaths, destPath, force, moveAsChild, makeParents, false, true,
+             revpropTable, handler, callback);
+    }
+
     public native void mkdir(Set<String> paths, boolean makeParents,
                              Map<String, String> revpropTable,
                              CommitMessageCallback handler, CommitCallback callback)
@@ -224,22 +245,34 @@ public class SVNClient implements ISVNCl
                                 boolean ignoreAncestry)
             throws ClientException;
 
-    public native void doImport(String path, String url, Depth depth,
-                                boolean noIgnore,
+    private native void doImport(String path, String url, Depth depth,
+                                boolean noIgnore, boolean noAutoProps,
                                 boolean ignoreUnknownNodeTypes,
                                 Map<String, String> revpropTable,
-                                CommitMessageCallback handler, CommitCallback callback)
+                                Object importFilterCallback,
+                                CommitMessageCallback handler,
+                                CommitCallback commitCallback)
             throws ClientException;
 
+    public void doImport(String path, String url, Depth depth, boolean noIgnore,
+                         boolean ignoreUnknownNodeTypes,
+                         Map<String, String> revpropTable,
+                         CommitMessageCallback handler,
+                         CommitCallback callback)
+            throws ClientException
+    {
+        doImport(path, url, depth, noIgnore, false, ignoreUnknownNodeTypes,
+                 revpropTable, null, handler, callback);
+    }
+
     public native Set<String> suggestMergeSources(String path,
                                                   Revision pegRevision)
             throws SubversionException;
 
     public native void merge(String path1, Revision revision1, String path2,
                              Revision revision2, String localPath,
-                             boolean force, Depth depth,
-                             boolean ignoreAncestry, boolean dryRun,
-                             boolean recordOnly)
+                             boolean force, Depth depth, boolean ignoreAncestry,
+                             boolean dryRun, boolean recordOnly)
             throws ClientException;
 
     public native void merge(String path, Revision pegRevision,
@@ -248,6 +281,8 @@ public class SVNClient implements ISVNCl
                              boolean dryRun, boolean recordOnly)
             throws ClientException;
 
+
+    /** @deprecated */
     public native void mergeReintegrate(String path, Revision pegRevision,
                                         String localPath, boolean dryRun)
             throws ClientException;
@@ -264,6 +299,7 @@ public class SVNClient implements ISVNCl
                                        LogMessageCallback callback)
         throws ClientException;
 
+
     public native void diff(String target1, Revision revision1, String target2,
                             Revision revision2, String relativeToDir,
                             String outFileName, Depth depth,
@@ -326,8 +362,16 @@ public class SVNClient implements ISVNCl
                                       boolean force)
             throws ClientException;
 
+    public byte[] propertyGet(String path, String name,
+                              Revision revision, Revision pegRevision)
+            throws ClientException
+    {
+        return propertyGet(path, name, revision, pegRevision, null);
+    }
+
     public native byte[] propertyGet(String path, String name,
-                                     Revision revision, Revision pegRevision)
+                                     Revision revision, Revision pegRevision,
+                                     Collection<String> changelists)
             throws ClientException;
 
     public byte[] fileContent(String path, Revision revision,
@@ -458,16 +502,33 @@ public class SVNClient implements ISVNCl
                              PatchCallback callback)
             throws ClientException;
 
+    public ISVNRemote openRemoteSession(String path)
+            throws ClientException, SubversionException
+    {
+        return nativeOpenRemoteSession(path, 1);
+    }
+
+    public ISVNRemote openRemoteSession(String path, int retryAttempts)
+            throws ClientException, SubversionException
+    {
+        if (retryAttempts <= 0)
+            throw new IllegalArgumentException(
+                "retryAttempts must be positive");
+        return nativeOpenRemoteSession(path, retryAttempts);
+    }
+
+    private native ISVNRemote nativeOpenRemoteSession(
+        String path, int retryAttempts)
+            throws ClientException, SubversionException;
+
     /**
      * A private class to hold the contextual information required to
      * persist in this object, such as notification handlers.
      */
-    private class ClientContext
-        implements ClientNotifyCallback, ProgressCallback,
-            ConflictResolverCallback
+    private class ClientContext extends OperationContext
+        implements ClientNotifyCallback, ConflictResolverCallback
     {
         public ClientNotifyCallback notify = null;
-        public ProgressCallback listener = null;
         public ConflictResolverCallback resolver = null;
 
         public void onNotify(ClientNotifyInformation notifyInfo)
@@ -476,12 +537,6 @@ public class SVNClient implements ISVNCl
                 notify.onNotify(notifyInfo);
         }
 
-        public void onProgress(ProgressEvent event)
-        {
-            if (listener != null)
-                listener.onProgress(event);
-        }
-
         public ConflictResult resolve(ConflictDescriptor conflict)
             throws SubversionException
         {

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java Thu Jun 20 00:19:28 2013
@@ -130,7 +130,14 @@ public class SVNRepos implements ISVNRep
      * @throws ClientException  throw in case of problem
      */
     public native void hotcopy(File path, File targetPath,
-                               boolean cleanLogs) throws ClientException;
+                               boolean cleanLogs, boolean incremental)
+            throws ClientException;
+
+    public void hotcopy(File path, File targetPath,
+                        boolean cleanLogs) throws ClientException
+    {
+        hotcopy(path, targetPath, cleanLogs, false);
+    }
 
     /**
      * list all logfiles (BDB) in use or not)
@@ -150,7 +157,19 @@ public class SVNRepos implements ISVNRep
     public native void listUnusedDBLogs(File path, ISVNRepos.MessageReceiver receiver)
             throws ClientException;
 
+    public void load(File path, InputStream dataInput,
+                     boolean ignoreUUID, boolean forceUUID,
+                     boolean usePreCommitHook, boolean usePostCommitHook,
+                     String relativePath, ReposNotifyCallback callback)
+            throws ClientException
+    {
+        load(path, dataInput, Revision.START, Revision.HEAD,
+             ignoreUUID, forceUUID, usePreCommitHook, usePostCommitHook,
+             relativePath, callback);
+    }
+
     public native void load(File path, InputStream dataInput,
+                            Revision start, Revision end,
                             boolean ignoreUUID, boolean forceUUID,
                             boolean usePreCommitHook, boolean usePostCommitHook,
                             String relativePath, ReposNotifyCallback callback)

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java Thu Jun 20 00:19:28 2013
@@ -29,7 +29,7 @@ import org.apache.subversion.javahl.type
 
 /**
  * This interface is used to receive every single line for a file on a
- * the {@link ISVNClient#blame} call.
+ * the {@link ISVNClient#list} call.
  */
 public interface ListCallback
 {

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java Thu Jun 20 00:19:28 2013
@@ -33,7 +33,7 @@ import org.apache.subversion.javahl.ISVN
 public interface ProplistCallback
 {
     /**
-     * the method will be called for every line in a file.
+     * the method will be called once for every file.
      * @param path        the path.
      * @param properties  the properties on the path.
      */

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java Thu Jun 20 00:19:28 2013
@@ -31,16 +31,19 @@ package org.apache.subversion.javahl.typ
 public class ConflictVersion
 {
     private String reposURL;
+    private String reposUUID;
     private long pegRevision;
     private String pathInRepos;
 
     private NodeKind nodeKind;
 
     /** This constructor should only be called from JNI code. */
-    public ConflictVersion(String reposURL, long pegRevision, String pathInRepos,
+    ConflictVersion(String reposURL, String reposUUID,
+                    long pegRevision, String pathInRepos,
                     NodeKind nodeKind)
     {
         this.reposURL = reposURL;
+        this.reposUUID = reposUUID;
         this.pegRevision = pegRevision;
         this.pathInRepos = pathInRepos;
         this.nodeKind = nodeKind;
@@ -51,6 +54,12 @@ public class ConflictVersion
         return reposURL;
     }
 
+    /** @since 1.8 */
+    public String getReposUUID()
+    {
+        return reposUUID;
+    }
+
     public long getPegRevision()
     {
         return pegRevision;

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NodeKind.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NodeKind.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NodeKind.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NodeKind.java Thu Jun 20 00:19:28 2013
@@ -28,17 +28,23 @@ package org.apache.subversion.javahl.typ
  */
 public enum NodeKind
 {
-    /* absent */
+    /** absent */
     none    ("none"),
 
-    /* regular file */
+    /** regular file */
     file    ("file"),
 
-    /* directory */
+    /** directory */
     dir     ("dir"),
 
-    /* something's here, but we don't know what */
-    unknown ("unknown");
+    /** something's here, but we don't know what */
+    unknown ("unknown"),
+
+    /**
+     * symbolic link
+     * @since: 1.8
+     */
+    symlink ("symlink");
 
     /**
      * The description of the node kind.

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java Thu Jun 20 00:19:28 2013
@@ -165,6 +165,10 @@ public class Status implements java.io.S
      */
     private String changelist;
 
+    private String movedFromAbspath;
+
+    private String movedToAbspath;
+
     /**
      * this constructor should only called from JNI code
      * @param path                  the file system path of item
@@ -203,6 +207,8 @@ public class Status implements java.io.S
      * @param reposLastCmtAuthor    the author of the last commit, if out of
      *                              date
      * @param changelist            the changelist the item is a member of
+     * @param movedFromAbspath      path moved from
+     * @param movedToAbspath        path moved from
      */
     public Status(String path, String url, NodeKind nodeKind, long revision,
                   long lastChangedRevision, long lastChangedDate,
@@ -212,7 +218,8 @@ public class Status implements java.io.S
                   boolean switched, boolean fileExternal, Lock localLock,
                   Lock reposLock, long reposLastCmtRevision,
                   long reposLastCmtDate, NodeKind reposKind,
-                  String reposLastCmtAuthor, String changelist)
+                  String reposLastCmtAuthor, String changelist,
+                  String movedFromAbspath, String movedToAbspath)
     {
         this.path = path;
         this.url = url;
@@ -237,6 +244,8 @@ public class Status implements java.io.S
         this.reposKind = reposKind;
         this.reposLastCmtAuthor = reposLastCmtAuthor;
         this.changelist = changelist;
+        this.movedFromAbspath = movedFromAbspath;
+        this.movedToAbspath = movedToAbspath;
     }
 
     /**
@@ -585,6 +594,16 @@ public class Status implements java.io.S
         return isConflicted;
     }
 
+    public String getMovedFromAbspath()
+    {
+        return movedFromAbspath;
+    }
+
+    public String getMovedToAbspath()
+    {
+        return movedToAbspath;
+    }
+
     /**
      * Converts microseconds since the epoch to a Date object.
      *

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java Thu Jun 20 00:19:28 2013
@@ -125,8 +125,12 @@ public class ConflictDescriptor
              aDesc.getAction().ordinal(), aDesc.getReason().ordinal(),
              aDesc.getOperation().ordinal(), aDesc.getBasePath(),
              aDesc.getTheirPath(), aDesc.getMyPath(), aDesc.getMergedPath(),
-             new ConflictVersion(aDesc.getSrcLeftVersion()),
-             new ConflictVersion(aDesc.getSrcRightVersion()));
+             aDesc.getSrcLeftVersion() != null
+               ? new ConflictVersion(aDesc.getSrcLeftVersion())
+               : null,
+             aDesc.getSrcRightVersion() != null
+               ? new ConflictVersion(aDesc.getSrcRightVersion())
+               : null);
     }
 
     public String getPath()

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java Thu Jun 20 00:19:28 2013
@@ -795,6 +795,7 @@ public class SVNClient implements SVNCli
     /**
      * @since 1.5
      */
+    @SuppressWarnings("unchecked")
     public void remove(String[] paths, String message, boolean force,
                        boolean keepLocal, Map revpropTable)
             throws ClientException
@@ -964,6 +965,7 @@ public class SVNClient implements SVNCli
     /**
      * @since 1.5
      */
+    @SuppressWarnings("unchecked")
     public long commit(String[] paths, String message, int depth,
                        boolean noUnlock, boolean keepChangelist,
                        String[] changelists, Map revpropTable)
@@ -998,6 +1000,7 @@ public class SVNClient implements SVNCli
     /**
      * @since 1.7
      */
+    @SuppressWarnings("unchecked")
     public void copy(CopySource[] sources, String destPath, String message,
                      boolean copyAsChild, boolean makeParents,
                      boolean ignoreExternals, Map revpropTable)
@@ -1031,6 +1034,7 @@ public class SVNClient implements SVNCli
      *                              boolean, boolean, Map)} instead.
      * @since 1.5
      */
+    @SuppressWarnings("unchecked")
     public void copy(CopySource[] sources, String destPath, String message,
                      boolean copyAsChild, boolean makeParents,
                      Map revpropTable)
@@ -1057,6 +1061,7 @@ public class SVNClient implements SVNCli
     /**
      * @since 1.5
      */
+    @SuppressWarnings("unchecked")
     public void move(String[] srcPaths, String destPath, String message,
                      boolean force, boolean moveAsChild,
                      boolean makeParents, Map revpropTable)
@@ -1106,6 +1111,7 @@ public class SVNClient implements SVNCli
     /**
      * @since 1.5
      */
+    @SuppressWarnings("unchecked")
     public void mkdir(String[] paths, String message,
                       boolean makeParents, Map revpropTable)
             throws ClientException
@@ -1306,6 +1312,7 @@ public class SVNClient implements SVNCli
     /**
      * @since 1.5
      */
+    @SuppressWarnings("unchecked")
     public void doImport(String path, String url, String message,
                          int depth, boolean noIgnore,
                          boolean ignoreUnknownNodeTypes, Map revpropTable)
@@ -1888,6 +1895,7 @@ public class SVNClient implements SVNCli
     /**
      * @since 1.5
      */
+    @SuppressWarnings("unchecked")
     public void propertySet(String path, String name, String value, int depth,
                             String[] changelists, boolean force,
                             Map revpropTable)

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Thu Jun 20 00:19:28 2013
@@ -147,10 +147,10 @@ public class BasicTests extends SVNTests
                               CommitItemStateFlags.Add);
         Set<String> urls = new HashSet<String>(1);
         urls.add(thisTest.getUrl() + "/Y");
-        try 
+        try
         {
             tempclient.mkdir(urls, false, null, new ConstMsg("log_msg"), null);
-        } 
+        }
         catch(JNIError e)
         {
 	        return; // Test passes!
@@ -898,7 +898,7 @@ public class BasicTests extends SVNTests
         }
         client.move(srcPaths,
                     new File(thisTest.getWorkingCopy(), "A/B/F").getPath(),
-                    false, true, false, null, null, null);
+                    false, true, false, false, false, null, null, null);
 
         // Commit the changes, and check the state of the WC.
         checkCommitRevision(thisTest,
@@ -2352,222 +2352,222 @@ public class BasicTests extends SVNTests
         acquireMergeinfoAndAssertEquals(2, 4, 6, 6, targetPath, mergeSrc);
     }
 
-    /**
-     * Test merge with automatic source and revision determination
-     * (e.g. 'svn merge -g').
-     * @throws Throwable
-     * @since 1.5
-     */
-    public void testMergeUsingHistory() throws Throwable
-    {
-        OneTest thisTest = setupAndPerformMerge();
-
-        // Test that getMergeinfo() returns null.
-        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
-                                       .toString(), Revision.HEAD));
-
-        // Merge and commit some changes (r4).
-        appendText(thisTest, "A/mu", "xxx", 4);
-        checkCommitRevision(thisTest, "wrong revision number from commit", 4,
-                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
-                            false, false, null, null);
-
-        String branchPath = thisTest.getWCPath() + "/branches/A";
-        String modUrl = thisTest.getUrl() + "/A";
-        Revision unspec = new Revision(Revision.Kind.unspecified);
-        List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
-        ranges.add(new RevisionRange(unspec, unspec));
-        client.merge(modUrl, Revision.HEAD, ranges,
-                     branchPath, true, Depth.infinity, false, false, false);
-
-        // commit the changes so that we can verify merge
-        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
-                              "branches/A", NodeKind.dir,
-                              CommitItemStateFlags.PropMods);
-        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
-                              "branches/A/mu", NodeKind.file,
-                              CommitItemStateFlags.TextMods);
-        checkCommitRevision(thisTest, "wrong revision number from commit", 5,
-                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
-                            false, false, null, null);
-    }
-
-    /**
-     * Test reintegrating a branch with trunk
-     * (e.g. 'svn merge --reintegrate').
-     * @throws Throwable
-     * @since 1.5
-     */
-    public void testMergeReintegrate() throws Throwable
-    {
-        OneTest thisTest = setupAndPerformMerge();
-
-        // Test that getMergeinfo() returns null.
-        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
-                                       .toString(), Revision.HEAD));
-
-        // Merge and commit some changes to main (r4).
-        appendText(thisTest, "A/mu", "xxx", 4);
-        checkCommitRevision(thisTest,
-                            "wrong revision number from main commit", 4,
-                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
-                            false, false, null, null);
-        // Merge and commit some changes to branch (r5).
-        appendText(thisTest, "branches/A/D/G/rho", "yyy", -1);
-        checkCommitRevision(thisTest,
-                            "wrong revision number from branch commit", 5,
-                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
-                            false, false, null, null);
-
-        // update the branch WC (to r5) before merge
-        update(thisTest, "/branches");
-
-        String branchPath = thisTest.getWCPath() + "/branches/A";
-        String modUrl = thisTest.getUrl() + "/A";
-        Revision unspec = new Revision(Revision.Kind.unspecified);
-        List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
-        ranges.add(new RevisionRange(unspec, unspec));
-        client.merge(modUrl, Revision.HEAD, ranges,
-                     branchPath, true, Depth.infinity, false, false, false);
-
-        // commit the changes so that we can verify merge
-        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
-                              "branches/A", NodeKind.dir,
-                              CommitItemStateFlags.PropMods);
-        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
-                              "branches/A/mu", NodeKind.file,
-                              CommitItemStateFlags.TextMods);
-        checkCommitRevision(thisTest, "wrong revision number from commit", 6,
-                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
-                            false, false, null, null);
-
-        // now we --reintegrate the branch with main
-        String branchUrl = thisTest.getUrl() + "/branches/A";
-        try
-        {
-            client.mergeReintegrate(branchUrl, Revision.HEAD,
-                                    thisTest.getWCPath() + "/A", false);
-            fail("reintegrate merged into a mixed-revision WC");
-        }
-        catch(ClientException e)
-        {
-            // update the WC (to r6) and try again
-            update(thisTest);
-            client.mergeReintegrate(branchUrl, Revision.HEAD,
-                                    thisTest.getWCPath() + "/A", false);
-        }
-        // commit the changes so that we can verify merge
-        addExpectedCommitItem(thisTest.getWCPath(),
-                             thisTest.getUrl().toString(), "A", NodeKind.dir,
-                              CommitItemStateFlags.PropMods);
-        addExpectedCommitItem(thisTest.getWCPath(),
-                             thisTest.getUrl().toString(), "A/D/G/rho",
-                             NodeKind.file, CommitItemStateFlags.TextMods);
-        checkCommitRevision(thisTest, "wrong revision number from commit", 7,
-                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
-                            false, false, null, null);
-
-    }
-
-    /**
-     * Test automatic merge conflict resolution.
-     * @throws Throwable
-     * @since 1.5
-     */
-    public void testMergeConflictResolution() throws Throwable
-    {
-        // Add a conflict resolution callback which always chooses the
-        // user's version of a conflicted file.
-        client.setConflictResolver(new ConflictResolverCallback()
-            {
-                public ConflictResult resolve(ConflictDescriptor descrip)
-                {
-                    return new ConflictResult(ConflictResult.Choice.chooseTheirsConflict,
-                                              null);
-                }
-            });
-
-        OneTest thisTest = new OneTest();
-        String originalContents = thisTest.getWc().getItemContent("A/mu");
-        String expectedContents = originalContents + "xxx";
-
-        // Merge and commit a change (r2).
-        File mu = appendText(thisTest, "A/mu", "xxx", 2);
-        checkCommitRevision(thisTest, "wrong revision number from commit", 2,
-                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
-                            false, false, null, null);
-
-        // Backdate the WC to the previous revision (r1).
-        client.update(thisTest.getWCPathSet(), Revision.getInstance(1),
-                      Depth.unknown, false, false, false, false);
-
-        // Prep for a merge conflict by changing A/mu in a different
-        // way.
-        mu = appendText(thisTest, "A/mu", "yyy", 1);
-
-        // Merge in the previous changes to A/mu (from r2).
-        List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
-        ranges.add(new RevisionRange(new Revision.Number(1),
-                                     new Revision.Number(2)));
-        client.merge(thisTest.getUrl().toString(), Revision.HEAD, ranges,
-                     thisTest.getWCPath(), false, Depth.infinity, false,
-                     false, false);
-
-        assertFileContentsEquals("Unexpected conflict resolution",
-                                 expectedContents, mu);
-    }
-
-    /**
-     * Test merge --record-only
-     * @throws Throwable
-     * @since 1.5
-     */
-    public void testRecordOnlyMerge() throws Throwable
-    {
-        OneTest thisTest = setupAndPerformMerge();
-
-        // Verify that there are now potential merge sources.
-        Set<String> suggestedSrcs =
-            client.suggestMergeSources(thisTest.getWCPath() + "/branches/A",
-                                       Revision.WORKING);
-        assertNotNull(suggestedSrcs);
-        assertEquals(1, suggestedSrcs.size());
-
-        // Test that getMergeinfo() returns null.
-        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
-                                       .toString(), Revision.HEAD));
-
-        // Merge and commit some changes (r4).
-        appendText(thisTest, "A/mu", "xxx", 4);
-        appendText(thisTest, "A/D/G/rho", "yyy", 4);
-        checkCommitRevision(thisTest, "wrong revision number from commit", 4,
-                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
-                            false, false, null, null);
-
-        // --record-only merge changes in A to branches/A
-        String branchPath = thisTest.getWCPath() + "/branches/A";
-        String modUrl = thisTest.getUrl() + "/A";
-
-        List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
-        ranges.add(new RevisionRange(new Revision.Number(2),
-                                     new Revision.Number(4)));
-        client.merge(modUrl, Revision.HEAD, ranges,
-                     branchPath, true, Depth.infinity, false, false, true);
-
-        // commit the changes so that we can verify merge
-        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
-                              "branches/A", NodeKind.dir,
-                              CommitItemStateFlags.PropMods);
-        checkCommitRevision(thisTest, "wrong revision number from commit", 5,
-                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
-                            false, false, null, null);
-
-        // Test retrieval of mergeinfo from a WC path.
-        String targetPath =
-            new File(thisTest.getWCPath(), "branches/A").getPath();
-        final String mergeSrc = thisTest.getUrl() + "/A";
-        acquireMergeinfoAndAssertEquals(2, 4, 0, 0, targetPath, mergeSrc);
-    }
+//FIXME:    /**
+//FIXME:     * Test merge with automatic source and revision determination
+//FIXME:     * (e.g. 'svn merge -g').
+//FIXME:     * @throws Throwable
+//FIXME:     * @since 1.5
+//FIXME:     */
+//FIXME:    public void testMergeUsingHistory() throws Throwable
+//FIXME:    {
+//FIXME:        OneTest thisTest = setupAndPerformMerge();
+//FIXME:
+//FIXME:        // Test that getMergeinfo() returns null.
+//FIXME:        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
+//FIXME:                                       .toString(), Revision.HEAD));
+//FIXME:
+//FIXME:        // Merge and commit some changes (r4).
+//FIXME:        appendText(thisTest, "A/mu", "xxx", 4);
+//FIXME:        checkCommitRevision(thisTest, "wrong revision number from commit", 4,
+//FIXME:                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
+//FIXME:                            false, false, null, null);
+//FIXME:
+//FIXME:        String branchPath = thisTest.getWCPath() + "/branches/A";
+//FIXME:        String modUrl = thisTest.getUrl() + "/A";
+//FIXME:        Revision unspec = new Revision(Revision.Kind.unspecified);
+//FIXME:        List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
+//FIXME:        ranges.add(new RevisionRange(unspec, unspec));
+//FIXME:        client.merge(modUrl, Revision.HEAD, ranges,
+//FIXME:                     branchPath, true, Depth.infinity, false, false, false);
+//FIXME:
+//FIXME:        // commit the changes so that we can verify merge
+//FIXME:        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
+//FIXME:                              "branches/A", NodeKind.dir,
+//FIXME:                              CommitItemStateFlags.PropMods);
+//FIXME:        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
+//FIXME:                              "branches/A/mu", NodeKind.file,
+//FIXME:                              CommitItemStateFlags.TextMods);
+//FIXME:        checkCommitRevision(thisTest, "wrong revision number from commit", 5,
+//FIXME:                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
+//FIXME:                            false, false, null, null);
+//FIXME:    }
+//FIXME:
+//FIXME:    /**
+//FIXME:     * Test reintegrating a branch with trunk
+//FIXME:     * (e.g. 'svn merge --reintegrate').
+//FIXME:     * @throws Throwable
+//FIXME:     * @since 1.5
+//FIXME:     */
+//FIXME:    public void testMergeReintegrate() throws Throwable
+//FIXME:    {
+//FIXME:        OneTest thisTest = setupAndPerformMerge();
+//FIXME:
+//FIXME:        // Test that getMergeinfo() returns null.
+//FIXME:        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
+//FIXME:                                       .toString(), Revision.HEAD));
+//FIXME:
+//FIXME:        // Merge and commit some changes to main (r4).
+//FIXME:        appendText(thisTest, "A/mu", "xxx", 4);
+//FIXME:        checkCommitRevision(thisTest,
+//FIXME:                            "wrong revision number from main commit", 4,
+//FIXME:                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
+//FIXME:                            false, false, null, null);
+//FIXME:        // Merge and commit some changes to branch (r5).
+//FIXME:        appendText(thisTest, "branches/A/D/G/rho", "yyy", -1);
+//FIXME:        checkCommitRevision(thisTest,
+//FIXME:                            "wrong revision number from branch commit", 5,
+//FIXME:                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
+//FIXME:                            false, false, null, null);
+//FIXME:
+//FIXME:        // update the branch WC (to r5) before merge
+//FIXME:        update(thisTest, "/branches");
+//FIXME:
+//FIXME:        String branchPath = thisTest.getWCPath() + "/branches/A";
+//FIXME:        String modUrl = thisTest.getUrl() + "/A";
+//FIXME:        Revision unspec = new Revision(Revision.Kind.unspecified);
+//FIXME:        List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
+//FIXME:        ranges.add(new RevisionRange(unspec, unspec));
+//FIXME:        client.merge(modUrl, Revision.HEAD, ranges,
+//FIXME:                     branchPath, true, Depth.infinity, false, false, false);
+//FIXME:
+//FIXME:        // commit the changes so that we can verify merge
+//FIXME:        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
+//FIXME:                              "branches/A", NodeKind.dir,
+//FIXME:                              CommitItemStateFlags.PropMods);
+//FIXME:        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
+//FIXME:                              "branches/A/mu", NodeKind.file,
+//FIXME:                              CommitItemStateFlags.TextMods);
+//FIXME:        checkCommitRevision(thisTest, "wrong revision number from commit", 6,
+//FIXME:                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
+//FIXME:                            false, false, null, null);
+//FIXME:
+//FIXME:        // now we --reintegrate the branch with main
+//FIXME:        String branchUrl = thisTest.getUrl() + "/branches/A";
+//FIXME:        try
+//FIXME:        {
+//FIXME:            client.mergeReintegrate(branchUrl, Revision.HEAD,
+//FIXME:                                    thisTest.getWCPath() + "/A", false);
+//FIXME:            fail("reintegrate merged into a mixed-revision WC");
+//FIXME:        }
+//FIXME:        catch(ClientException e)
+//FIXME:        {
+//FIXME:            // update the WC (to r6) and try again
+//FIXME:            update(thisTest);
+//FIXME:            client.mergeReintegrate(branchUrl, Revision.HEAD,
+//FIXME:                                    thisTest.getWCPath() + "/A", false);
+//FIXME:        }
+//FIXME:        // commit the changes so that we can verify merge
+//FIXME:        addExpectedCommitItem(thisTest.getWCPath(),
+//FIXME:                             thisTest.getUrl().toString(), "A", NodeKind.dir,
+//FIXME:                              CommitItemStateFlags.PropMods);
+//FIXME:        addExpectedCommitItem(thisTest.getWCPath(),
+//FIXME:                             thisTest.getUrl().toString(), "A/D/G/rho",
+//FIXME:                             NodeKind.file, CommitItemStateFlags.TextMods);
+//FIXME:        checkCommitRevision(thisTest, "wrong revision number from commit", 7,
+//FIXME:                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
+//FIXME:                            false, false, null, null);
+//FIXME:
+//FIXME:    }
+//FIXME:
+//FIXME:    /**
+//FIXME:     * Test automatic merge conflict resolution.
+//FIXME:     * @throws Throwable
+//FIXME:     * @since 1.5
+//FIXME:     */
+//FIXME:    public void testMergeConflictResolution() throws Throwable
+//FIXME:    {
+//FIXME:        // Add a conflict resolution callback which always chooses the
+//FIXME:        // user's version of a conflicted file.
+//FIXME:        client.setConflictResolver(new ConflictResolverCallback()
+//FIXME:            {
+//FIXME:                public ConflictResult resolve(ConflictDescriptor descrip)
+//FIXME:                {
+//FIXME:                    return new ConflictResult(ConflictResult.Choice.chooseTheirsConflict,
+//FIXME:                                              null);
+//FIXME:                }
+//FIXME:            });
+//FIXME:
+//FIXME:        OneTest thisTest = new OneTest();
+//FIXME:        String originalContents = thisTest.getWc().getItemContent("A/mu");
+//FIXME:        String expectedContents = originalContents + "xxx";
+//FIXME:
+//FIXME:        // Merge and commit a change (r2).
+//FIXME:        File mu = appendText(thisTest, "A/mu", "xxx", 2);
+//FIXME:        checkCommitRevision(thisTest, "wrong revision number from commit", 2,
+//FIXME:                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
+//FIXME:                            false, false, null, null);
+//FIXME:
+//FIXME:        // Backdate the WC to the previous revision (r1).
+//FIXME:        client.update(thisTest.getWCPathSet(), Revision.getInstance(1),
+//FIXME:                      Depth.unknown, false, false, false, false);
+//FIXME:
+//FIXME:        // Prep for a merge conflict by changing A/mu in a different
+//FIXME:        // way.
+//FIXME:        mu = appendText(thisTest, "A/mu", "yyy", 1);
+//FIXME:
+//FIXME:        // Merge in the previous changes to A/mu (from r2).
+//FIXME:        List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
+//FIXME:        ranges.add(new RevisionRange(new Revision.Number(1),
+//FIXME:                                     new Revision.Number(2)));
+//FIXME:        client.merge(thisTest.getUrl().toString(), Revision.HEAD, ranges,
+//FIXME:                     thisTest.getWCPath(), false, Depth.infinity, false,
+//FIXME:                     false, false);
+//FIXME:
+//FIXME:        assertFileContentsEquals("Unexpected conflict resolution",
+//FIXME:                                 expectedContents, mu);
+//FIXME:    }
+//FIXME:
+//FIXME:    /**
+//FIXME:     * Test merge --record-only
+//FIXME:     * @throws Throwable
+//FIXME:     * @since 1.5
+//FIXME:     */
+//FIXME:    public void testRecordOnlyMerge() throws Throwable
+//FIXME:    {
+//FIXME:        OneTest thisTest = setupAndPerformMerge();
+//FIXME:
+//FIXME:        // Verify that there are now potential merge sources.
+//FIXME:        Set<String> suggestedSrcs =
+//FIXME:            client.suggestMergeSources(thisTest.getWCPath() + "/branches/A",
+//FIXME:                                       Revision.WORKING);
+//FIXME:        assertNotNull(suggestedSrcs);
+//FIXME:        assertEquals(1, suggestedSrcs.size());
+//FIXME:
+//FIXME:        // Test that getMergeinfo() returns null.
+//FIXME:        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
+//FIXME:                                       .toString(), Revision.HEAD));
+//FIXME:
+//FIXME:        // Merge and commit some changes (r4).
+//FIXME:        appendText(thisTest, "A/mu", "xxx", 4);
+//FIXME:        appendText(thisTest, "A/D/G/rho", "yyy", 4);
+//FIXME:        checkCommitRevision(thisTest, "wrong revision number from commit", 4,
+//FIXME:                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
+//FIXME:                            false, false, null, null);
+//FIXME:
+//FIXME:        // --record-only merge changes in A to branches/A
+//FIXME:        String branchPath = thisTest.getWCPath() + "/branches/A";
+//FIXME:        String modUrl = thisTest.getUrl() + "/A";
+//FIXME:
+//FIXME:        List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
+//FIXME:        ranges.add(new RevisionRange(new Revision.Number(2),
+//FIXME:                                     new Revision.Number(4)));
+//FIXME:        client.merge(modUrl, Revision.HEAD, ranges,
+//FIXME:                     branchPath, true, Depth.infinity, false, false, true);
+//FIXME:
+//FIXME:        // commit the changes so that we can verify merge
+//FIXME:        addExpectedCommitItem(thisTest.getWCPath(), thisTest.getUrl().toString(),
+//FIXME:                              "branches/A", NodeKind.dir,
+//FIXME:                              CommitItemStateFlags.PropMods);
+//FIXME:        checkCommitRevision(thisTest, "wrong revision number from commit", 5,
+//FIXME:                            thisTest.getWCPathSet(), "log msg", Depth.infinity,
+//FIXME:                            false, false, null, null);
+//FIXME:
+//FIXME:        // Test retrieval of mergeinfo from a WC path.
+//FIXME:        String targetPath =
+//FIXME:            new File(thisTest.getWCPath(), "branches/A").getPath();
+//FIXME:        final String mergeSrc = thisTest.getUrl() + "/A";
+//FIXME:        acquireMergeinfoAndAssertEquals(2, 4, 0, 0, targetPath, mergeSrc);
+//FIXME:    }
 
     /**
      * Setup a test with a WC.  In the repository, create a
@@ -2648,7 +2648,7 @@ public class BasicTests extends SVNTests
     }
 
     /**
-     * Test the {@link SVNClientInterface.diff()} APIs.
+     * Test the {@link ISVNClient.diff()} APIs.
      * @since 1.5
      */
     public void testDiff()
@@ -3061,7 +3061,7 @@ public class BasicTests extends SVNTests
         }
         client.move(srcPaths,
                     new File(thisTest.getWorkingCopy(), "A/B/F").getPath(),
-                    false, true, false, null, null, null);
+                    false, true, false, false, false, null, null, null);
 
         // Commit the changes, and check the state of the WC.
         checkCommitRevision(thisTest,
@@ -3102,16 +3102,21 @@ public class BasicTests extends SVNTests
         ConflictDescriptor conflict = conflicts.iterator().next();
 
         assertNotNull("Conflict should not be null", conflict);
+        // 1.8 assertNotNull("Repository UUID must be set", conflict.getSrcLeftVersion().getReposUUID());
 
         assertEquals(conflict.getSrcLeftVersion().getNodeKind(), NodeKind.file);
         assertEquals(conflict.getSrcLeftVersion().getReposURL() + "/" +
                 conflict.getSrcLeftVersion().getPathInRepos(), tcTest.getUrl() + "/A/B/E/alpha");
         assertEquals(conflict.getSrcLeftVersion().getPegRevision(), 1L);
 
-        assertEquals(conflict.getSrcRightVersion().getNodeKind(), NodeKind.none);
-        assertEquals(conflict.getSrcRightVersion().getReposURL(), tcTest.getUrl().toString());
-        assertEquals(conflict.getSrcRightVersion().getPegRevision(), 2L);
-
+        if (conflict.getSrcRightVersion() != null)
+        {
+            assertEquals(conflict.getSrcLeftVersion().getReposUUID(),
+                         conflict.getSrcRightVersion().getReposUUID());
+            assertEquals(conflict.getSrcRightVersion().getNodeKind(), NodeKind.none);
+            assertEquals(conflict.getSrcRightVersion().getReposURL(), tcTest.getUrl().toString());
+            assertEquals(conflict.getSrcRightVersion().getPegRevision(), 2L);
+        }
     }
 
     /**
@@ -3146,12 +3151,12 @@ public class BasicTests extends SVNTests
 
         // check the status of the working copy
         thisTest.checkStatus();
-        
+
         // now edit the propval directly in the repository
         long baseRev = 2L;
         client.propertySetRemote(thisTest.getUrl()+"/A/D/G/rho", baseRev, PROP, NEWVALUE,
                                  new ConstMsg("edit prop"), false, null, null);
-        
+
         // update the WC and verify that the property was changed
         client.update(thisTest.getWCPathSet(), Revision.HEAD, Depth.infinity, false, false,
                       false, false);

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java Thu Jun 20 00:19:28 2013
@@ -92,6 +92,7 @@ public class RunTests
             {
                 // Add default test suites.
                 suite.addTestSuite(SVNReposTests.class);
+                suite.addTestSuite(SVNRemoteTests.class);
                 suite.addTestSuite(BasicTests.class);
             }
             else

Modified: subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java?rev=1494817&r1=1494816&r2=1494817&view=diff
==============================================================================
--- subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java (original)
+++ subversion/branches/javahl-1.7-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java Thu Jun 20 00:19:28 2013
@@ -34,7 +34,7 @@ import java.net.URI;
 import java.util.Map;
 
 /**
- * This class is used for testing the SVNAdmin class
+ * This class is used for testing the ISVNRepos interface
  *
  * More methodes for testing are still needed
  */
@@ -50,7 +50,7 @@ public class SVNReposTests extends SVNTe
     }
 
     /**
-     * Test the basic SVNAdmin.create functionality
+     * Test the basic ISVNRepos.create functionality
      * @throws SubversionException
      */
     public void testCreate()
@@ -103,7 +103,7 @@ public class SVNReposTests extends SVNTe
     public void testLoadRepo()
         throws SubversionException, IOException
     {
-        /* Make sure SVNAdmin.load() works, with a repo dump file known
+        /* Make sure ISVNRepos.load() works, with a repo dump file known
          * to provoke bug 2979
          */
         // makes repos with nothing in it