You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/08/10 20:06:33 UTC

svn commit: r984153 [7/39] - in /subversion/branches/ignore-mergeinfo: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ build/hudson/ build/hudson/jobs/subversion-1.6.x-solaris/ build/hudson/jobs/subversion-1.6.x-ubuntu/ build/hud...

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/SVNClient.cpp?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/SVNClient.cpp Tue Aug 10 18:06:17 2010
@@ -26,8 +26,7 @@
 
 #include "SVNClient.h"
 #include "JNIUtil.h"
-#include "Notify.h"
-#include "Notify2.h"
+#include "NotifyCallback.h"
 #include "CopySources.h"
 #include "DiffSummaryReceiver.h"
 #include "ConflictResolverCallback.h"
@@ -62,9 +61,6 @@
 #include "svn_dirent_uri.h"
 #include "svn_utf.h"
 #include "svn_private_config.h"
-#include "../include/org_tigris_subversion_javahl_Revision.h"
-#include "../include/org_tigris_subversion_javahl_NodeKind.h"
-#include "../include/org_tigris_subversion_javahl_StatusKind.h"
 #include "JNIStringHolder.h"
 #include <vector>
 #include <iostream>
@@ -78,7 +74,6 @@ struct log_msg_baton
 
 SVNClient::SVNClient()
 {
-    m_notify = NULL;
     m_notify2 = NULL;
     m_progressListener = NULL;
     m_prompter = NULL;
@@ -88,7 +83,6 @@ SVNClient::SVNClient()
 
 SVNClient::~SVNClient()
 {
-    delete m_notify;
     delete m_notify2;
     delete m_progressListener;
     delete m_prompter;
@@ -296,13 +290,7 @@ jlong SVNClient::checkout(const char *mo
     return rev;
 }
 
-void SVNClient::notification(Notify *notify)
-{
-    delete m_notify;
-    m_notify = notify;
-}
-
-void SVNClient::notification2(Notify2 *notify2)
+void SVNClient::notification2(NotifyCallback *notify2)
 {
     delete m_notify2;
     m_notify2 = notify2;
@@ -627,7 +615,7 @@ void SVNClient::doImport(const char *pat
                                    requestPool.pool()), );
 }
 
-jobjectArray
+jobject
 SVNClient::suggestMergeSources(const char *path, Revision &pegRevision)
 {
     SVN::Pool requestPool;
@@ -641,26 +629,7 @@ SVNClient::suggestMergeSources(const cha
                                                  ctx, requestPool.pool()),
                 NULL);
 
-    JNIEnv *env = JNIUtil::getEnv();
-    jclass clazz = env->FindClass("java/lang/String");
-    if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-    jobjectArray jsuggestions = env->NewObjectArray(sources->nelts, clazz,
-                                                    NULL);
-    for (int i = 0; i < sources->nelts; ++i)
-    {
-        const char *source = APR_ARRAY_IDX(sources, i, const char *);
-        jstring jpath = JNIUtil::makeJString(source);
-        if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-        env->SetObjectArrayElement(jsuggestions, i, jpath);
-        if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-    }
-
-    return jsuggestions;
+    return CreateJ::StringSet(sources);
 }
 
 void SVNClient::merge(const char *path1, Revision &revision1,
@@ -812,7 +781,7 @@ SVNClient::getMergeinfo(const char *targ
     {
         addRevisions = env->GetMethodID(clazz, "addRevisions",
                                         "(Ljava/lang/String;"
-                                        "[L"JAVA_PACKAGE"/RevisionRange;)V");
+                                        "Ljava/util/List;)V");
         if (JNIUtil::isJavaExceptionThrown())
             return NULL;
     }
@@ -831,8 +800,8 @@ SVNClient::getMergeinfo(const char *targ
         apr_hash_this(hi, &path, NULL, &val);
 
         jstring jpath = JNIUtil::makeJString((const char *) path);
-        jobjectArray jranges =
-            CreateJ::RevisionRangeArray((apr_array_header_t *) val);
+        jobject jranges =
+            CreateJ::RevisionRangeList((apr_array_header_t *) val);
 
         env->CallVoidMethod(jmergeinfo, addRevisions, jpath, jranges);
 
@@ -844,6 +813,10 @@ SVNClient::getMergeinfo(const char *targ
             return NULL;
     }
 
+    env->DeleteLocalRef(clazz);
+    if (JNIUtil::isJavaExceptionThrown())
+        return NULL;
+
     return jmergeinfo;
 }
 
@@ -870,8 +843,8 @@ void SVNClient::getMergeinfoLog(int type
     Path srcURL(mergeSourceURL);
     SVN_JNI_ERR(srcURL.error_occured(), );
 
-    SVN_JNI_ERR(svn_client_mergeinfo_log(urlPath.c_str(),
-                                         type == 1 ? true : false,
+    SVN_JNI_ERR(svn_client_mergeinfo_log((type == 1),
+                                         urlPath.c_str(),
                                          pegRevision.revision(),
                                          srcURL.c_str(),
                                          srcPegRevision.revision(),
@@ -889,9 +862,8 @@ void SVNClient::getMergeinfoLog(int type
 /**
  * Get a property.
  */
-jobject SVNClient::propertyGet(jobject jthis, const char *path,
-                               const char *name, Revision &revision,
-                               Revision &pegRevision)
+jbyteArray SVNClient::propertyGet(const char *path, const char *name,
+                                  Revision &revision, Revision &pegRevision)
 {
     SVN::Pool requestPool;
     SVN_JNI_NULL_PTR_EX(path, "path", NULL);
@@ -922,7 +894,8 @@ jobject SVNClient::propertyGet(jobject j
     if (propval == NULL)
         return NULL;
 
-    return CreateJ::Property(jthis, path, name, propval);
+    return JNIUtil::makeJByteArray((const signed char *)propval->data,
+                                   propval->len);
 }
 
 void SVNClient::properties(const char *path, Revision &revision,
@@ -1255,14 +1228,14 @@ svn_client_ctx_t *SVNClient::getContext(
                                m_passWord.c_str());
 
     ctx->auth_baton = ab;
-    ctx->notify_func = Notify::notify;
-    ctx->notify_baton = m_notify;
+    ctx->notify_func = NULL;
+    ctx->notify_baton = NULL;
     ctx->log_msg_func3 = getCommitMessage;
     ctx->log_msg_baton3 = getCommitMessageBaton(message);
     ctx->cancel_func = checkCancel;
     m_cancelOperation = false;
     ctx->cancel_baton = this;
-    ctx->notify_func2= Notify2::notify;
+    ctx->notify_func2= NotifyCallback::notify;
     ctx->notify_baton2 = m_notify2;
 
     ctx->progress_func = ProgressListener::progress;
@@ -1463,8 +1436,8 @@ svn_stream_t *SVNClient::createReadStrea
     return read_stream;
 }
 
-jobject SVNClient::revProperty(jobject jthis, const char *path,
-                               const char *name, Revision &rev)
+jbyteArray SVNClient::revProperty(const char *path,
+                                  const char *name, Revision &rev)
 {
     SVN::Pool requestPool;
     SVN_JNI_NULL_PTR_EX(path, "path", NULL);
@@ -1498,7 +1471,8 @@ jobject SVNClient::revProperty(jobject j
     if (propval == NULL)
         return NULL;
 
-    return CreateJ::Property(jthis, path, name, propval);
+    return JNIUtil::makeJByteArray((const signed char *)propval->data,
+                                   propval->len);
 }
 void SVNClient::relocate(const char *from, const char *to, const char *path,
                          bool recurse)
@@ -1650,7 +1624,7 @@ void SVNClient::unlock(Targets &targets,
     SVN_JNI_ERR(svn_client_unlock((apr_array_header_t*)targetsApr, force,
                                   ctx, requestPool.pool()), );
 }
-void SVNClient::setRevProperty(jobject jthis, const char *path,
+void SVNClient::setRevProperty(const char *path,
                                const char *name, Revision &rev,
                                const char *value, const char *original_value,
                                bool force)
@@ -1883,8 +1857,7 @@ void SVNClient::upgrade(const char *path
     SVN_JNI_ERR(svn_client_upgrade(path, ctx, requestPool.pool()), );
 }
 
-jobjectArray SVNClient::revProperties(jobject jthis, const char *path,
-                                      Revision &revision)
+jobject SVNClient::revProperties(const char *path, Revision &revision)
 {
     apr_hash_t *props;
     SVN::Pool requestPool;
@@ -1907,45 +1880,7 @@ jobjectArray SVNClient::revProperties(jo
                                         &set_rev, ctx, requestPool.pool()),
                 NULL);
 
-    apr_hash_index_t *hi;
-
-    int count = apr_hash_count(props);
-
-    JNIEnv *env = JNIUtil::getEnv();
-    jclass clazz = env->FindClass(JAVA_PACKAGE"/PropertyData");
-    if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-    jobjectArray jprops = env->NewObjectArray(count, clazz, NULL);
-    if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-    env->DeleteLocalRef(clazz);
-    if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-    int i = 0;
-    for (hi = apr_hash_first(requestPool.pool(), props);
-         hi;
-         hi = apr_hash_next(hi), ++i)
-    {
-        const char *key;
-        svn_string_t *val;
-
-        apr_hash_this(hi, (const void **)&key, NULL, (void**)&val);
-
-        jobject object = CreateJ::Property(jthis, path, key, val);
-
-        env->SetObjectArrayElement(jprops, i, object);
-        if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-        env->DeleteLocalRef(object);
-        if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-    }
-
-    return jprops;
+    return CreateJ::PropertyMap(props, requestPool.pool());
 }
 
 struct info_baton

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/SVNClient.h?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/SVNClient.h Tue Aug 10 18:06:17 2010
@@ -34,8 +34,7 @@
 
 class Revision;
 class RevisionRange;
-class Notify;
-class Notify2;
+class NotifyCallback;
 class ConflictResolverCallback;
 class ProgressListener;
 class Targets;
@@ -65,8 +64,7 @@ class SVNClient :public SVNBase
              InfoCallback *callback);
   void unlock(Targets &targets, bool force);
   void lock(Targets &targets, const char *comment, bool force);
-  jobjectArray revProperties(jobject jthis, const char *path,
-                             Revision &revision);
+  jobject revProperties(const char *path, Revision &revision);
   void cancelOperation();
   void commitMessageHandler(CommitMessage *commitMessage);
   const char *getConfigDirectory();
@@ -101,7 +99,7 @@ class SVNClient :public SVNBase
                        Revision &srcPegRevision, bool discoverChangedPaths,
                        svn_depth_t depth, StringArray &revProps,
                        LogMessageCallback *callback);
-  jobjectArray suggestMergeSources(const char *path, Revision &pegRevision);
+  jobject suggestMergeSources(const char *path, Revision &pegRevision);
   void merge(const char *path1, Revision &revision1, const char *path2,
              Revision &revision2, const char *localPath, bool force,
              svn_depth_t depth, bool ignoreAncestry, bool dryRun,
@@ -145,8 +143,7 @@ class SVNClient :public SVNBase
   void revert(const char *path, svn_depth_t depth, StringArray &changelists);
   void remove(Targets &targets, const char *message, bool force,
               bool keep_local, RevpropTable &revprops);
-  void notification(Notify *notify);
-  void notification2(Notify2 *notify2);
+  void notification2(NotifyCallback *notify2);
   void setConflictResolver(ConflictResolverCallback *conflictResolver);
   void setProgressListener(ProgressListener *progressListener);
   jlong checkout(const char *moduleName, const char *destPath,
@@ -175,16 +172,15 @@ class SVNClient :public SVNBase
   void list(const char *url, Revision &revision, Revision &pegRevision,
             svn_depth_t depth, int direntFields, bool fetchLocks,
             ListCallback *callback);
-  jobject revProperty(jobject jthis, const char *path, const char *name,
-                      Revision &rev);
-  void setRevProperty(jobject jthis, const char *path, const char *name,
+  jbyteArray revProperty(const char *path, const char *name, Revision &rev);
+  void setRevProperty(const char *path, const char *name,
                       Revision &rev, const char *value,
                       const char *original_value, bool force);
   jstring getVersionInfo(const char *path, const char *trailUrl,
                          bool lastChanged);
   void upgrade(const char *path);
-  jobject propertyGet(jobject jthis, const char *path, const char *name,
-                      Revision &revision, Revision &pegRevision);
+  jbyteArray propertyGet(const char *path, const char *name,
+                         Revision &revision, Revision &pegRevision);
   void diff(const char *target1, Revision &revision1,
             const char *target2, Revision &revision2,
             const char *relativeToDir, const char *outfileName,
@@ -229,8 +225,7 @@ class SVNClient :public SVNBase
             bool ignoreAncestry, bool noDiffDelete, bool force,
             bool showCopiesAsAdds);
 
-  Notify *m_notify;
-  Notify2 *m_notify2;
+  NotifyCallback *m_notify2;
   ConflictResolverCallback *m_conflictResolver;
   ProgressListener *m_progressListener;
   Prompter *m_prompter;

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StatusCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StatusCallback.cpp?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StatusCallback.cpp (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StatusCallback.cpp Tue Aug 10 18:06:17 2010
@@ -29,9 +29,6 @@
 #include "EnumMapper.h"
 #include "JNIUtil.h"
 #include "svn_time.h"
-#include "../include/org_tigris_subversion_javahl_NodeKind.h"
-#include "../include/org_tigris_subversion_javahl_Revision.h"
-#include "../include/org_tigris_subversion_javahl_StatusKind.h"
 
 /**
  * Create a StatusCallback object
@@ -72,253 +69,34 @@ StatusCallback::doStatus(const char *loc
 {
   JNIEnv *env = JNIUtil::getEnv();
 
+  // Create a local frame for our references
+  env->PushLocalFrame(LOCAL_FRAME_SIZE);
+  if (JNIUtil::isJavaExceptionThrown())
+    return SVN_NO_ERROR;
+
   static jmethodID mid = 0; // the method id will not change during
   // the time this library is loaded, so
   // it can be cached.
   if (mid == 0)
     {
-      jclass clazz = env->FindClass(JAVA_PACKAGE"/StatusCallback");
+      jclass clazz = env->FindClass(JAVA_PACKAGE"/callback/StatusCallback");
       if (JNIUtil::isJavaExceptionThrown())
-        return SVN_NO_ERROR;
+        POP_AND_RETURN(SVN_NO_ERROR);
 
       mid = env->GetMethodID(clazz, "doStatus",
                              "(L"JAVA_PACKAGE"/Status;)V");
       if (JNIUtil::isJavaExceptionThrown() || mid == 0)
-        return SVN_NO_ERROR;
-
-      env->DeleteLocalRef(clazz);
-      if (JNIUtil::isJavaExceptionThrown())
-        return SVN_NO_ERROR;
+        POP_AND_RETURN(SVN_NO_ERROR);
     }
 
-  jobject jStatus = createJavaStatus(local_abspath, status);
+  jobject jStatus = CreateJ::Status(local_abspath, status);
   if (JNIUtil::isJavaExceptionThrown())
-    return SVN_NO_ERROR;
+    POP_AND_RETURN(SVN_NO_ERROR);
 
   env->CallVoidMethod(m_callback, mid, jStatus);
-  if (JNIUtil::isJavaExceptionThrown())
-    return SVN_NO_ERROR;
-
-  env->DeleteLocalRef(jStatus);
   // We return here regardless of whether an exception is thrown or not,
   // so we do not need to explicitly check for one.
-  return SVN_NO_ERROR;
-}
-
-jobject
-StatusCallback::createJavaStatus(const char *local_abspath,
-                                 const svn_wc_status2_t *status)
-{
-  JNIEnv *env = JNIUtil::getEnv();
-  jclass clazz = env->FindClass(JAVA_PACKAGE"/Status");
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  static jmethodID mid = 0;
-  if (mid == 0)
-    {
-      mid = env->GetMethodID(clazz, "<init>",
-                             "(Ljava/lang/String;Ljava/lang/String;"
-                             "IJJJLjava/lang/String;IIIIZZZ"
-                             "L"JAVA_PACKAGE"/ConflictDescriptor;"
-                             "Ljava/lang/String;Ljava/lang/String;"
-                             "Ljava/lang/String;Ljava/lang/String;"
-                             "JZZLjava/lang/String;Ljava/lang/String;"
-                             "Ljava/lang/String;"
-                             "JLorg/tigris/subversion/javahl/Lock;"
-                             "JJILjava/lang/String;Ljava/lang/String;)V");
-      if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-    }
-  jstring jPath = JNIUtil::makeJString(local_abspath);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  jstring jUrl = NULL;
-  jint jNodeKind = org_tigris_subversion_javahl_NodeKind_unknown;
-  jlong jRevision = org_tigris_subversion_javahl_Revision_SVN_INVALID_REVNUM;
-  jlong jLastChangedRevision =
-    org_tigris_subversion_javahl_Revision_SVN_INVALID_REVNUM;
-  jlong jLastChangedDate = 0;
-  jstring jLastCommitAuthor = NULL;
-  jint jTextType = org_tigris_subversion_javahl_StatusKind_none;
-  jint jPropType = org_tigris_subversion_javahl_StatusKind_none;
-  jint jRepositoryTextType = org_tigris_subversion_javahl_StatusKind_none;
-  jint jRepositoryPropType = org_tigris_subversion_javahl_StatusKind_none;
-  jboolean jIsLocked = JNI_FALSE;
-  jboolean jIsCopied = JNI_FALSE;
-  jboolean jIsSwitched = JNI_FALSE;
-  jboolean jIsFileExternal = JNI_FALSE;
-  jboolean jIsTreeConflicted = JNI_FALSE;
-  jobject jConflictDescription = NULL;
-  jstring jConflictOld = NULL;
-  jstring jConflictNew = NULL;
-  jstring jConflictWorking = NULL;
-  jstring jURLCopiedFrom = NULL;
-  jlong jRevisionCopiedFrom =
-    org_tigris_subversion_javahl_Revision_SVN_INVALID_REVNUM;
-  jstring jLockToken = NULL;
-  jstring jLockComment = NULL;
-  jstring jLockOwner = NULL;
-  jlong jLockCreationDate = 0;
-  jobject jLock = NULL;
-  jlong jOODLastCmtRevision =
-    org_tigris_subversion_javahl_Revision_SVN_INVALID_REVNUM;
-  jlong jOODLastCmtDate = 0;
-  jint jOODKind = org_tigris_subversion_javahl_NodeKind_none;
-  jstring jOODLastCmtAuthor = NULL;
-  jstring jChangelist = NULL;
-  if (status != NULL)
-    {
-      jTextType = EnumMapper::mapStatusKind(status->text_status);
-      jPropType = EnumMapper::mapStatusKind(status->prop_status);
-      jRepositoryTextType = EnumMapper::mapStatusKind(
-                                                      status->repos_text_status);
-      jRepositoryPropType = EnumMapper::mapStatusKind(
-                                                      status->repos_prop_status);
-      jIsCopied = (status->copied == 1) ? JNI_TRUE: JNI_FALSE;
-      jIsLocked = (status->locked == 1) ? JNI_TRUE: JNI_FALSE;
-      jIsSwitched = (status->switched == 1) ? JNI_TRUE: JNI_FALSE;
-      jIsFileExternal = (status->file_external == 1) ? JNI_TRUE: JNI_FALSE;
-      jConflictDescription = CreateJ::ConflictDescriptor(status->tree_conflict);
-      if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-      jIsTreeConflicted = (status->tree_conflict != NULL)
-                             ? JNI_TRUE: JNI_FALSE;
-      jLock = CreateJ::Lock(status->repos_lock);
-      if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-      jUrl = JNIUtil::makeJString(status->url);
-      if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-      jOODLastCmtRevision = status->ood_last_cmt_rev;
-      jOODLastCmtDate = status->ood_last_cmt_date;
-      jOODKind = EnumMapper::mapNodeKind(status->ood_kind);
-      jOODLastCmtAuthor = JNIUtil::makeJString(status->ood_last_cmt_author);
-      if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-      const svn_wc_entry_t *entry = status->entry;
-      if (entry != NULL)
-        {
-          jNodeKind = EnumMapper::mapNodeKind(entry->kind);
-          jRevision = entry->revision;
-          jLastChangedRevision = entry->cmt_rev;
-          jLastChangedDate = entry->cmt_date;
-          jLastCommitAuthor = JNIUtil::makeJString(entry->cmt_author);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-          jConflictNew = JNIUtil::makeJString(entry->conflict_new);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-          jConflictOld = JNIUtil::makeJString(entry->conflict_old);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-          jConflictWorking= JNIUtil::makeJString(entry->conflict_wrk);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-          jURLCopiedFrom = JNIUtil::makeJString(entry->copyfrom_url);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-          jRevisionCopiedFrom = entry->copyfrom_rev;
-          jLockToken = JNIUtil::makeJString(entry->lock_token);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-          jLockComment = JNIUtil::makeJString(entry->lock_comment);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-          jLockOwner = JNIUtil::makeJString(entry->lock_owner);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-          jLockCreationDate = entry->lock_creation_date;
-
-          jChangelist = JNIUtil::makeJString(entry->changelist);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-        }
-    }
 
-  jobject ret = env->NewObject(clazz, mid, jPath, jUrl, jNodeKind, jRevision,
-                               jLastChangedRevision, jLastChangedDate,
-                               jLastCommitAuthor, jTextType, jPropType,
-                               jRepositoryTextType, jRepositoryPropType,
-                               jIsLocked, jIsCopied, jIsTreeConflicted,
-                               jConflictDescription, jConflictOld, jConflictNew,
-                               jConflictWorking, jURLCopiedFrom,
-                               jRevisionCopiedFrom, jIsSwitched, jIsFileExternal,
-                               jLockToken, jLockOwner,
-                               jLockComment, jLockCreationDate, jLock,
-                               jOODLastCmtRevision, jOODLastCmtDate,
-                               jOODKind, jOODLastCmtAuthor, jChangelist);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(clazz);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jPath);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jUrl);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jLastCommitAuthor);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jConflictNew);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jConflictOld);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jConflictWorking);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jURLCopiedFrom);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jLockComment);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jLockOwner);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jLockToken);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jLock);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jOODLastCmtAuthor);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  env->DeleteLocalRef(jChangelist);
-  if (JNIUtil::isJavaExceptionThrown())
-    return NULL;
-
-  return ret;
+  env->PopLocalFrame(NULL);
+  return SVN_NO_ERROR;
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StatusCallback.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StatusCallback.h?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StatusCallback.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StatusCallback.h Tue Aug 10 18:06:17 2010
@@ -54,9 +54,6 @@ class StatusCallback
    * This a local reference to the Java object.
    */
   jobject m_callback;
-
-  jobject createJavaStatus(const char *local_abspath,
-                           const svn_wc_status2_t *status);
 };
 
 #endif // STATUSCALLBACK_H

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StringArray.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StringArray.cpp?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StringArray.cpp (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StringArray.cpp Tue Aug 10 18:06:17 2010
@@ -34,8 +34,6 @@
 
 StringArray::~StringArray()
 {
-  if (m_stringArray != NULL)
-    JNIUtil::getEnv()->DeleteLocalRef(m_stringArray);
 }
 
 const apr_array_header_t *StringArray::array(const SVN::Pool &pool)
@@ -54,28 +52,35 @@ const apr_array_header_t *StringArray::a
   return strings;
 }
 
-StringArray::StringArray(jobjectArray jstrings)
+const std::vector<std::string> &StringArray::vector(void) const
 {
-  m_stringArray = jstrings;
+  return m_strings;
+}
 
-  if (jstrings != NULL)
+void
+StringArray::init(void)
+{
+  const std::vector<jobject> &jobjects = Array::vector();
+  
+  for (std::vector<jobject>::const_iterator it = jobjects.begin();
+        it < jobjects.end(); ++it)
     {
-      JNIEnv *env = JNIUtil::getEnv();
-      jint arraySize = env->GetArrayLength(jstrings);
+      JNIStringHolder str((jstring) *it);
       if (JNIUtil::isExceptionThrown())
         return;
 
-      for (int i = 0; i < arraySize; ++i)
-        {
-          jobject jstr = env->GetObjectArrayElement(jstrings, i);
-          if (JNIUtil::isExceptionThrown())
-            return;
-
-          JNIStringHolder str((jstring)jstr);
-          if (JNIUtil::isExceptionThrown())
-            return;
-
-          m_strings.push_back(std::string((const char *)str));
-        }
+      m_strings.push_back(std::string((const char *)str));
     }
 }
+
+StringArray::StringArray(jobjectArray jstrings)
+    : Array(jstrings), m_strings()
+{
+  init();
+}
+
+StringArray::StringArray(jobject jstringCollection)
+    : Array(jstringCollection), m_strings()
+{
+  init();
+}

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StringArray.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StringArray.h?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StringArray.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/StringArray.h Tue Aug 10 18:06:17 2010
@@ -31,22 +31,22 @@
 #include "Pool.h"
 
 struct apr_array_header_t;
-struct svn_error_t;
-class SVN::Pool;
 
-#include "Path.h"
+#include "Array.h"
 #include <vector>
 #include <string>
 
-class StringArray
+class StringArray : Array
 {
  private:
   std::vector<std::string> m_strings;
-  jobjectArray m_stringArray;
+  void init(void);
  public:
   StringArray(jobjectArray jstrings);
+  StringArray(jobject jstringCollection);
   ~StringArray();
   const apr_array_header_t *array(const SVN::Pool &pool);
+  const std::vector<std::string> &vector(void) const;
 };
 
 #endif // STRINGARRAY_H

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/Targets.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/Targets.cpp?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/Targets.cpp (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/Targets.cpp Tue Aug 10 18:06:17 2010
@@ -34,16 +34,13 @@
 
 Targets::~Targets()
 {
-  if (m_targetArray != NULL)
-    JNIUtil::getEnv()->DeleteLocalRef(m_targetArray);
 }
 
 Targets::Targets(const char *path)
 {
-  m_targetArray = NULL;
+  m_strArray = NULL;
   m_targets.push_back (path);
   m_error_occured = NULL;
-  m_doesNotContainsPath = false;
 }
 
 void Targets::add(const char *path)
@@ -53,50 +50,24 @@ void Targets::add(const char *path)
 
 const apr_array_header_t *Targets::array(const SVN::Pool &pool)
 {
-  if (m_targetArray != NULL)
+  if (m_strArray != NULL)
     {
       JNIEnv *env = JNIUtil::getEnv();
-      jint arraySize = env->GetArrayLength(m_targetArray);
-      if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-      jclass clazz = env->FindClass("java/lang/String");
-      if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
 
-      for (int i = 0; i < arraySize; ++i)
-        {
-          jobject elem = env->GetObjectArrayElement(m_targetArray, i);
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
+      const std::vector<std::string> &vec = m_strArray->vector();
 
-          if (env->IsInstanceOf(elem, clazz))
+      std::vector<std::string>::const_iterator it;
+      for (it = vec.begin(); it < vec.end(); ++it)
+        {
+          const char *tt = it->c_str();
+          svn_error_t *err = JNIUtil::preprocessPath(tt, pool.pool());
+          if (err != NULL)
             {
-              JNIStringHolder text((jstring)elem);
-              if (JNIUtil::isJavaExceptionThrown())
-                return NULL;
-
-              const char *tt = (const char *)text;
-              if (!m_doesNotContainsPath)
-                {
-                  svn_error_t *err = JNIUtil::preprocessPath(tt,
-                                                             pool.pool());
-                  if (err != NULL)
-                    {
-                      m_error_occured = err;
-                      break;
-                    }
-                }
-              m_targets.push_back(tt);
+              m_error_occured = err;
+              break;
             }
-          if (JNIUtil::isJavaExceptionThrown())
-            return NULL;
-
-          env->DeleteLocalRef(elem);
+          m_targets.push_back(tt);
         }
-      env->DeleteLocalRef(clazz);
-      //JNIUtil::getEnv()->DeleteLocalRef(m_targetArray);
-      m_targetArray = NULL;
     }
 
   std::vector<Path>::const_iterator it;
@@ -117,9 +88,9 @@ const apr_array_header_t *Targets::array
   return apr_targets;
 }
 
-Targets::Targets(jobjectArray jtargets)
+Targets::Targets(StringArray &strArray)
 {
-  m_targetArray = jtargets;
+  m_strArray = &strArray;
   m_error_occured = NULL;
 }
 
@@ -127,8 +98,3 @@ svn_error_t *Targets::error_occured()
 {
   return m_error_occured;
 }
-
-void Targets::setDoesNotContainsPath()
-{
-  m_doesNotContainsPath = true;
-}

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/Targets.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/Targets.h?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/Targets.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/native/Targets.h Tue Aug 10 18:06:17 2010
@@ -29,10 +29,10 @@
 
 #include <jni.h>
 #include "Pool.h"
+#include "StringArray.h"
 
 struct apr_array_header_t;
 struct svn_error_t;
-class SVN::Pool;
 
 #include "Path.h"
 #include <vector>
@@ -41,17 +41,15 @@ class Targets
 {
  private:
   std::vector<Path> m_targets;
-  jobjectArray m_targetArray;
+  StringArray *m_strArray;
   svn_error_t *m_error_occured;
-  bool m_doesNotContainsPath;
  public:
-  Targets(jobjectArray jtargets);
+  Targets(StringArray &strArray);
   Targets(const char *path);
   void add(const char *path);
   ~Targets();
   const apr_array_header_t *array(const SVN::Pool &pool);
   svn_error_t *error_occured();
-  void setDoesNotContainsPath();
 };
 
 #endif // TARGETS_H

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback3.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback3.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback3.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback3.java Tue Aug 10 18:06:17 2010
@@ -23,7 +23,6 @@
 
 package org.tigris.subversion.javahl;
 
-import java.util.Date;
 import java.util.Map;
 
 /**
@@ -36,7 +35,7 @@ public interface BlameCallback3
 {
     /**
      * the method will be called for every line in a file.
-     * @param line              the line number for this line
+     * @param lineNum           the line number for this line
      * @param revision          the revision of the last change.
      * @param revProps          the revision properties for this revision.
      * @param mergedRevision    the revision of the last merged change.

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallbackImpl.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallbackImpl.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallbackImpl.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallbackImpl.java Tue Aug 10 18:06:17 2010
@@ -36,7 +36,7 @@ public class BlameCallbackImpl implement
 {
 
     /** list of blame records (lines) */
-    private List lines = new ArrayList();
+    private List<BlameLine> lines = new ArrayList<BlameLine>();
 
     /*
      * (non-Javadoc)
@@ -92,7 +92,7 @@ public class BlameCallbackImpl implement
         {
             return null;
         }
-        return (BlameLine) this.lines.get(i);
+        return this.lines.get(i);
     }
 
     /**

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java Tue Aug 10 18:06:17 2010
@@ -23,7 +23,7 @@
 
 package org.tigris.subversion.javahl;
 
-public class ChangePath implements java.io.Serializable
+public class ChangePath implements java.io.Serializable, Comparable
 {
     // Update the serialVersionUID when there is a incompatible change
     // made to this class.  See any of the following, depending upon
@@ -52,6 +52,21 @@ public class ChangePath implements java.
         this.nodeKind = nodeKind;
     }
 
+    /**
+     * A backward-compat constructor.
+     */
+    public ChangePath(org.apache.subversion.javahl.ChangePath aChangePath)
+    {
+        this(aChangePath.getPath(), aChangePath.getCopySrcRevision(),
+             aChangePath.getCopySrcPath(), aChangePath.getAction(),
+             NodeKind.fromApache(aChangePath.getNodeKind()));
+    }
+
+    public int compareTo(Object other)
+    {
+        return path.compareTo(((ChangePath)other).path);
+    }
+
     /** Path of commited item */
     private String path;
 

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangelistCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangelistCallback.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangelistCallback.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangelistCallback.java Tue Aug 10 18:06:17 2010
@@ -28,11 +28,6 @@ package org.tigris.subversion.javahl;
  * the SVNClientInterface.status call.
  */
 public interface ChangelistCallback
+    extends org.apache.subversion.javahl.callback.ChangelistCallback
 {
-    /**
-     * the method will be called for each status item
-     * @param path        the path of the object
-     * @param changelist  the changelist it belongs to
-     */
-    public void doChangelist(String path, String changelist);
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ClientException.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ClientException.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ClientException.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ClientException.java Tue Aug 10 18:06:17 2010
@@ -52,6 +52,14 @@ public class ClientException extends Nat
     }
 
     /**
+     * This constructor is for backward compat.
+     */
+    ClientException(org.apache.subversion.javahl.ClientException ex)
+    {
+        super(ex.getMessage(), ex.getSource(), ex.getAprError());
+    }
+
+    /**
      * A conversion routine for maintaining backwards compatibility.
      * @param t The exception to (potentially) convert.
      * @return <code>t</code> coerced or converted into a

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItem.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItem.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItem.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItem.java Tue Aug 10 18:06:17 2010
@@ -87,6 +87,16 @@ public class CommitItem implements java.
     }
 
     /**
+     * A backward-compat constructor.
+     */
+    public CommitItem(org.apache.subversion.javahl.CommitItem aItem)
+    {
+        this(aItem.getPath(), NodeKind.fromApache(aItem.getNodeKind()),
+             aItem.getStateFlags(), aItem.getUrl(), aItem.getCopyUrl(),
+             aItem.getRevision());
+    }
+
+    /**
      *  retrieve the path of the commit item
      * @return the path
      */

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java Tue Aug 10 18:06:17 2010
@@ -116,6 +116,19 @@ public class ConflictDescriptor
         this.srcRightVersion = srcRight;
     }
 
+    public ConflictDescriptor(org.apache.subversion.javahl.ConflictDescriptor
+                                                                aDesc)
+    {
+        this(aDesc.getPath(), aDesc.getKind().ordinal(),
+             NodeKind.fromApache(aDesc.getNodeKind()),
+             aDesc.getPropertyName(), aDesc.isBinary(), aDesc.getMIMEType(),
+             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()));
+    }
+
     public String getPath()
     {
         return path;

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java Tue Aug 10 18:06:17 2010
@@ -92,6 +92,13 @@ public class ConflictResult
       this.mergedPath = mergedPath;
     }
 
+    public org.apache.subversion.javahl.ConflictResult toApache()
+    {
+        return new org.apache.subversion.javahl.ConflictResult(
+            org.apache.subversion.javahl.ConflictResult.Choice.values()[choice],
+            mergedPath);
+    }
+
     /**
      * @return A value corresponding to the
      * <code>svn_wc_conflict_choice_t</code> enum.

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictVersion.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictVersion.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictVersion.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictVersion.java Tue Aug 10 18:06:17 2010
@@ -50,6 +50,15 @@ public class ConflictVersion
         this.nodeKind = nodeKind;
     }
 
+    /**
+     * A backward-compat constructor.
+     */
+    public ConflictVersion(org.apache.subversion.javahl.ConflictVersion aVer)
+    {
+        this(aVer.getReposURL(), aVer.getPegRevision(), aVer.getPathInRepos(),
+             NodeKind.fromApache(aVer.getNodeKind()));
+    }
+
     public String getReposURL()
     {
         return reposURL;

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CopySource.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CopySource.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CopySource.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CopySource.java Tue Aug 10 18:06:17 2010
@@ -68,6 +68,13 @@ public class CopySource implements java.
         this.pegRevision = pegRevision;
     }
 
+    public org.apache.subversion.javahl.CopySource toApache()
+    {
+        return new org.apache.subversion.javahl.CopySource(path,
+                revision == null ? null : revision.toApache(),
+                pegRevision == null ? null : pegRevision.toApache());
+    }
+
     /**
      * @return The source path or URL.
      */

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java Tue Aug 10 18:06:17 2010
@@ -121,4 +121,44 @@ public final class Depth
     {
         return (recurse ? unknown : immediates);
     }
+    
+    public static org.apache.subversion.javahl.Depth toADepth(int depth)
+    {
+       switch(depth)
+       {
+            case infinity:
+                return org.apache.subversion.javahl.Depth.infinity;
+            case immediates:
+                return org.apache.subversion.javahl.Depth.immediates;
+            case files:
+                return org.apache.subversion.javahl.Depth.files;
+            case empty:
+                return org.apache.subversion.javahl.Depth.empty;
+            case exclude:
+                return org.apache.subversion.javahl.Depth.exclude;
+            case unknown:
+            default:
+                return org.apache.subversion.javahl.Depth.unknown;
+       }
+    }
+
+    public static int fromADepth(org.apache.subversion.javahl.Depth aDepth)
+    {
+        switch(aDepth)
+        {
+            case infinity:
+                return infinity;
+            case immediates:
+                return immediates;
+            case files:
+                return files;
+            case empty:
+                return empty;
+            case exclude:
+                return exclude;
+            case unknown:
+            default:
+                return unknown;
+        }
+    }
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummary.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummary.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummary.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummary.java Tue Aug 10 18:06:17 2010
@@ -66,6 +66,16 @@ public class DiffSummary extends EventOb
     }
 
     /**
+     * This constructor is for backward compat.
+     */
+    DiffSummary(org.apache.subversion.javahl.DiffSummary aSummary)
+    {
+        this(aSummary.getPath(), aSummary.getDiffKind().ordinal(),
+             aSummary.propsChanged(),
+             NodeKind.fromApache(aSummary.getNodeKind()));
+    }
+
+    /**
      * @return The path we have a diff for.
      */
     public String getPath()
@@ -148,6 +158,13 @@ public class DiffSummary extends EventOb
             }
         }
 
+        public static DiffKind fromApache(
+            org.apache.subversion.javahl.DiffSummary.DiffKind aKind)
+        {
+            /* This is cheating... */
+            return getInstance(aKind.hashCode());
+        }
+
         /**
          * @param diffKind A DiffKind for comparison.
          * @return Whether both DiffKinds are of the same type.

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DirEntry.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DirEntry.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DirEntry.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DirEntry.java Tue Aug 10 18:06:17 2010
@@ -148,6 +148,19 @@ public class DirEntry implements java.io
     }
 
     /**
+     * A backward-compat constructor
+     */
+    DirEntry(org.apache.subversion.javahl.DirEntry aEntry)
+    {
+        this(aEntry.getPath(), aEntry.getAbsPath(),
+             NodeKind.fromApache(aEntry.getNodeKind()),
+             aEntry.getSize(), aEntry.getHasProps(),
+             aEntry.getLastChangedRevisionNumber(),
+             aEntry.getLastChanged().getTime() * 1000,
+             aEntry.getLastAuthor());
+    }
+
+    /**
      * Returns the path of the entry.
      * @return the path of the entry.
      */

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java Tue Aug 10 18:06:17 2010
@@ -141,6 +141,21 @@ public class Info implements java.io.Ser
     }
 
     /**
+     * A backward-compat constructor
+     */
+    public Info(org.apache.subversion.javahl.Info aInfo)
+    {
+        this(aInfo.getName(), aInfo.getUrl(), aInfo.getUuid(),
+             aInfo.getRepository(), aInfo.getSchedule().ordinal(),
+             NodeKind.fromApache(aInfo.getNodeKind()),
+             aInfo.getAuthor(), aInfo.getRevision(),
+             aInfo.getLastChangedRevision(), aInfo.getLastChangedDate(),
+             aInfo.getLastDateTextUpdate(), aInfo.getLastDatePropsUpdate(),
+             aInfo.isCopied(), aInfo.isDeleted(), aInfo.isAbsent(),
+             aInfo.isIncomplete(), aInfo.getCopyRev(), aInfo.getCopyUrl());
+    }
+
+    /**
      * Retrieves the name of the item
      * @return name of the item
      */

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java Tue Aug 10 18:06:17 2010
@@ -248,6 +248,33 @@ public class Info2 implements java.io.Se
     }
 
     /**
+     * A backward-compat constructor.
+     */
+    public Info2(org.apache.subversion.javahl.Info2 aInfo)
+    {
+        this(aInfo.getPath(), aInfo.getUrl(), aInfo.getRev(),
+             NodeKind.fromApache(aInfo.getKind()),
+             aInfo.getReposRootUrl(), aInfo.getReposUUID(),
+             aInfo.getLastChangedRev(),
+             aInfo.getLastChangedDate() == null ? 0
+                : aInfo.getLastChangedDate().getTime() * 1000,
+             aInfo.getLastChangedAuthor(),
+             aInfo.getLock() == null ? null : new Lock(aInfo.getLock()),
+             aInfo.isHasWcInfo(), aInfo.getSchedule().ordinal(),
+             aInfo.getCopyFromUrl(), aInfo.getCopyFromRev(),
+             aInfo.getTextTime() == null ? 0
+                : aInfo.getTextTime().getTime() * 1000,
+             aInfo.getPropTime() == null ? 0
+                : aInfo.getPropTime().getTime() * 1000, aInfo.getChecksum(),
+             aInfo.getConflictOld(), aInfo.getConflictNew(),
+             aInfo.getConflictWrk(), aInfo.getPrejfile(),
+             aInfo.getChangelistName(), aInfo.getWorkingSize(),
+             aInfo.getReposSize(), Depth.fromADepth(aInfo.getDepth()),
+             aInfo.getConflictDescriptor() == null ? null
+                : new ConflictDescriptor(aInfo.getConflictDescriptor()));
+    }
+
+    /**
      * return the path of the item
      */
     public String getPath()

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java Tue Aug 10 18:06:17 2010
@@ -23,24 +23,11 @@
 
 package org.tigris.subversion.javahl;
 
-import java.io.IOException;
-
 /**
  * Interface for data to be received from subversion
  * used for SVNAdmin.load and SVNAdmin.dump
  */
 public interface InputInterface
+    extends org.apache.subversion.javahl.IInput
 {
-    /**
-     * read the number of data.length bytes from input.
-     * @param data          array to store the read bytes.
-     * @throws IOException  throw in case of problems.
-     */
-    public int read(byte [] data) throws IOException;
-
-    /**
-     * close the input
-     * @throws IOException throw in case of problems.
-     */
-    public void close() throws IOException;
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Lock.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Lock.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Lock.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Lock.java Tue Aug 10 18:06:17 2010
@@ -39,7 +39,7 @@ public class Lock implements java.io.Ser
     // 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;
+    private static final long serialVersionUID = 2L;
 
     /**
      * the owner of the lock
@@ -91,6 +91,16 @@ public class Lock implements java.io.Ser
         this.expirationDate = expirationDate;
     }
 
+    Lock(org.apache.subversion.javahl.Lock aLock)
+    {
+        this(aLock.getOwner(), aLock.getPath(), aLock.getToken(),
+             aLock.getComment(),
+             aLock.getCreationDate() == null ? 0
+                : aLock.getCreationDate().getTime() * 1000,
+             aLock.getExpirationDate() == null ? 0
+                : aLock.getExpirationDate().getTime() * 1000);
+    }
+
     /**
      * @return the owner of the lock
      */

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java Tue Aug 10 18:06:17 2010
@@ -50,11 +50,11 @@ public class Mergeinfo implements java.i
      * A mapping of repository-relative paths to a list of revision
      * ranges.
      */
-    private Map mergeSources;
+    private Map<String, List<RevisionRange>> mergeSources;
 
     public Mergeinfo()
     {
-        mergeSources = new HashMap();
+        mergeSources = new HashMap<String, List<RevisionRange>>();
     }
 
     /**
@@ -69,6 +69,28 @@ public class Mergeinfo implements java.i
     }
 
     /**
+     * A constructor for backward compat.
+     */
+    public Mergeinfo(org.apache.subversion.javahl.Mergeinfo aMergeinfo)
+    {
+        this();
+        Set<String> srcPaths = aMergeinfo.getPaths();
+
+        for (String srcPath : srcPaths)
+        {
+            List<org.apache.subversion.javahl.RevisionRange> aRanges =
+                                    aMergeinfo.getRevisionRange(srcPath);
+            List<RevisionRange> list = new ArrayList<RevisionRange>();
+
+            for (org.apache.subversion.javahl.RevisionRange range : aRanges)
+            {
+                list.add(new RevisionRange(range));
+            }
+            mergeSources.put(srcPath, list);
+        }
+    }
+
+    /**
      * Add one or more RevisionRange objects to merge info. If the
      * merge source is already stored, the list of revisions is
      * replaced.
@@ -92,9 +114,9 @@ public class Mergeinfo implements java.i
      */
     public void addRevisionRange(String mergeSrc, RevisionRange range)
     {
-        List revisions = this.getRevisions(mergeSrc);
+        List<RevisionRange> revisions = this.getRevisions(mergeSrc);
         if (revisions == null)
-            revisions = new ArrayList();
+            revisions = new ArrayList<RevisionRange>();
         revisions.add(range);
         this.setRevisionList(mergeSrc, revisions);
     }
@@ -105,10 +127,10 @@ public class Mergeinfo implements java.i
      */
     public String[] getPaths()
     {
-        Set pathSet = mergeSources.keySet();
+        Set<String> pathSet = mergeSources.keySet();
         if (pathSet == null)
             return null;
-        return (String []) pathSet.toArray(new String[pathSet.size()]);
+        return pathSet.toArray(new String[pathSet.size()]);
     }
 
     /**
@@ -116,11 +138,11 @@ public class Mergeinfo implements java.i
      * @param mergeSrc The merge source URL, or <code>null</code>.
      * @return List of RevisionRange objects, or <code>null</code>.
      */
-    public List getRevisions(String mergeSrc)
+    public List<RevisionRange> getRevisions(String mergeSrc)
     {
         if (mergeSrc == null)
             return null;
-        return (List) mergeSources.get(mergeSrc);
+        return mergeSources.get(mergeSrc);
     }
 
     /**
@@ -130,11 +152,10 @@ public class Mergeinfo implements java.i
      */
     public RevisionRange[] getRevisionRange(String mergeSrc)
     {
-        List revisions = this.getRevisions(mergeSrc);
+        List<RevisionRange> revisions = this.getRevisions(mergeSrc);
         if (revisions == null)
             return null;
-        return (RevisionRange [])
-            revisions.toArray(new RevisionRange[revisions.size()]);
+        return revisions.toArray(new RevisionRange[revisions.size()]);
     }
 
     /**
@@ -181,14 +202,14 @@ public class Mergeinfo implements java.i
      */
     private void parseRevisions(String path, String revisions)
     {
-        List rangeList = this.getRevisions(path);
+        List<RevisionRange> rangeList = this.getRevisions(path);
         StringTokenizer st = new StringTokenizer(revisions, ",");
         while (st.hasMoreTokens())
         {
             String revisionElement = st.nextToken();
             RevisionRange range = new RevisionRange(revisionElement);
             if (rangeList == null)
-                rangeList = new ArrayList();
+                rangeList = new ArrayList<RevisionRange>();
             rangeList.add(range);
         }
         if (rangeList != null)
@@ -203,7 +224,7 @@ public class Mergeinfo implements java.i
      * @param mergeSrc The merge source URL.
      * @param range List of RevisionRange objects to add.
      */
-    private void setRevisionList(String mergeSrc, List range)
+    private void setRevisionList(String mergeSrc, List<RevisionRange> range)
     {
         mergeSources.put(mergeSrc, range);
     }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/MergeinfoLogKind.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/MergeinfoLogKind.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/MergeinfoLogKind.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/MergeinfoLogKind.java Tue Aug 10 18:06:17 2010
@@ -24,13 +24,14 @@
 package org.tigris.subversion.javahl;
 
 /**
- * class for kind of mergeinfo logs
+ * Constants to specify which collection of revisions to report in
+ * getMergeinfoLog.
  */
 public interface MergeinfoLogKind
 {
-    /** does not exist */
+    /** Revisions eligible for merging from merge-source to merge-target. */
     public static final int eligible = 0;
 
-    /** exists, but uninteresting */
+    /** Revisions already merged from merge-source to merge-target. */
     public static final int merged = 1;
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NodeKind.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NodeKind.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NodeKind.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NodeKind.java Tue Aug 10 18:06:17 2010
@@ -60,4 +60,20 @@ public final class NodeKind
     {
         return statusNames[kind];
     }
+
+    public static int fromApache(org.apache.subversion.javahl.NodeKind aKind)
+    {
+        switch(aKind)
+        {
+        case none:
+            return none;
+        case file:
+            return file;
+        case dir:
+            return dir;
+        case unknown:
+        default:
+            return unknown;
+        }
+    }
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java Tue Aug 10 18:06:17 2010
@@ -146,6 +146,25 @@ public class NotifyInformation extends E
     }
 
     /**
+     * A backward-compat callback.
+     */
+    public NotifyInformation(
+                        org.apache.subversion.javahl.NotifyInformation aInfo)
+    {
+        this(aInfo.getPath(),
+             fromAAction(aInfo.getAction()),
+             NodeKind.fromApache(aInfo.getKind()), aInfo.getMimeType(),
+             aInfo.getLock() == null ? null : new Lock(aInfo.getLock()),
+             aInfo.getErrMsg(), fromAStatus(aInfo.getContentState()),
+             fromAStatus(aInfo.getPropState()),
+             aInfo.getLockState().ordinal(), aInfo.getRevision(),
+             aInfo.getChangelistName(),
+             aInfo.getMergeRange() == null ? null
+                : new RevisionRange(aInfo.getMergeRange()),
+             aInfo.getPathPrefix());
+    }
+
+    /**
      * @return The path of the item, which is the source of the event.
      */
     public String getPath()
@@ -251,4 +270,45 @@ public class NotifyInformation extends E
     {
         return pathPrefix;
     }
+
+    private static int
+    fromAStatus(org.apache.subversion.javahl.NotifyInformation.Status aStatus)
+    {
+        switch(aStatus)
+        {
+        default:
+        case inapplicable:
+            return NotifyStatus.inapplicable;
+        case unknown:
+            return NotifyStatus.unknown;
+        case unchanged:
+            return NotifyStatus.unchanged;
+        case missing:
+            return NotifyStatus.missing;
+        case obstructed:
+            return NotifyStatus.obstructed;
+        case changed:
+            return NotifyStatus.changed;
+        case merged:
+            return NotifyStatus.merged;
+        case conflicted:
+            return NotifyStatus.conflicted;
+        }
+    }
+
+    private static int
+    fromAAction(org.apache.subversion.javahl.NotifyInformation.Action aAction)
+    {
+        if (aAction == null)
+            return -1;
+
+        int order = aAction.ordinal();
+
+        /* The new class adds an item after changelist_clear, so adjust
+           accordingly. */
+        if (order < NotifyAction.changelist_clear)
+            return order;
+        else
+            return order - 1;
+    }
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/OutputInterface.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/OutputInterface.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/OutputInterface.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/OutputInterface.java Tue Aug 10 18:06:17 2010
@@ -23,23 +23,10 @@
 
 package org.tigris.subversion.javahl;
 
-import java.io.IOException;
-
 /**
  * Interface to send data to subversion used by SVNAdmin.load.
  */
 public interface OutputInterface
+    extends org.apache.subversion.javahl.IOutput
 {
-    /**
-     * write the bytes in data to java
-     * @param data          the data to be writtem
-     * @throws IOException  throw in case of problems.
-     */
-    public int write(byte[] data) throws IOException;
-
-    /**
-     * close the output
-     * @throws IOException throw in case of problems.
-     */
-    public void close() throws IOException;
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Path.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Path.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Path.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Path.java Tue Aug 10 18:06:17 2010
@@ -28,39 +28,6 @@ package org.tigris.subversion.javahl;
  *
  * @since 1.4.0
  */
-public class Path
+public class Path extends org.apache.subversion.javahl.Path
 {
-    /**
-     * Load the required native library.
-     */
-    static
-    {
-        NativeResources.loadNativeLibrary();
-    }
-
-    /**
-     * A valid path is a UTF-8 string without any control characters.
-     *
-     * @return Whether Subversion can store the path in a repository.
-     */
-    public static native boolean isValid(String path);
-
-    /**
-     * Whether a URL is valid. Implementation may behave differently
-     * than <code>svn_path_is_url()</code>.
-     *
-     * @param path The Subversion "path" to inspect.
-     * @return Whether <code>path</code> is a URL.
-     * @throws IllegalArgumentException If <code>path</code> is
-     * <code>null</code>.
-     */
-    public static boolean isURL(String path)
-    {
-        if (path == null)
-        {
-            throw new IllegalArgumentException();
-        }
-        // Require at least "s://".
-        return (path.indexOf("://") > 0);
-    }
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressEvent.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressEvent.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressEvent.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressEvent.java Tue Aug 10 18:06:17 2010
@@ -65,6 +65,14 @@ public class ProgressEvent implements ja
     }
 
     /**
+     * A backward-compat constructor.
+     */
+    public ProgressEvent(org.apache.subversion.javahl.ProgressEvent aEvent)
+    {
+        this(aEvent.getProgress(), aEvent.getTotal());
+    }
+
+    /**
      * @return The number of bytes already transferred.
      */
     public long getProgress()

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword.java Tue Aug 10 18:06:17 2010
@@ -29,51 +29,6 @@ package org.tigris.subversion.javahl;
  * PromptUserPassword3 instead.
  */
 public interface PromptUserPassword
+    extends org.apache.subversion.javahl.callback.UserPasswordCallback
 {
-    /**
-     * Ask the user for username and password
-     * The entered username/password is retrieved by the getUsername
-     * getPasswort methods.
-     *
-     * @param realm     for which server realm this information is requested.
-     * @param username  the default username
-     * @return Whether the prompt for authentication credentials was
-     * successful (e.g. in a GUI application whether the dialog box
-     * was canceled).
-     */
-    public boolean prompt(String realm, String username);
-
-    /**
-     * ask the user a yes/no question
-     * @param realm         for which server realm this information is
-     *                      requested.
-     * @param question      question to be asked
-     * @param yesIsDefault  if yes should be the default
-     * @return              the answer
-     */
-    public boolean askYesNo(String realm, String question,
-                            boolean yesIsDefault);
-
-    /**
-     * ask the user a question where she answers with a text.
-     * @param realm         for which server realm this information is
-     *                      requested.
-     * @param question      question to be asked
-     * @param showAnswer    if the answer is shown or hidden
-     * @return              the entered text or null if canceled
-     */
-    public String askQuestion(String realm, String question,
-                              boolean showAnswer);
-
-    /**
-     * retrieve the username entered during the prompt call
-     * @return the username
-     */
-    public String getUsername();
-
-    /**
-     * retrieve the password entered during the prompt call
-     * @return the password
-     */
-    public String getPassword();
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java Tue Aug 10 18:06:17 2010
@@ -52,7 +52,7 @@ public class PropertyData
      * reference to the creating SVNClient object to change or delete this
      * property
      */
-    private SVNClient client;
+    private SVNClientInterface client;
 
     /**
      * Standard subversion known properties
@@ -128,7 +128,7 @@ public class PropertyData
      * @param v     the string value of the property
      * @param d     the byte array value of the property
      */
-    PropertyData(SVNClient cl, String p, String n, String v, byte[] d)
+    PropertyData(SVNClientInterface cl, String p, String n, String v, byte[] d)
     {
         path = p;
         name = n;

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallback.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallback.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallback.java Tue Aug 10 18:06:17 2010
@@ -23,18 +23,11 @@
 
 package org.tigris.subversion.javahl;
 
-import java.util.Map;
-
 /**
  * This interface is used to property lists for each path in a
  * SVNClientInterface.properties call.
  */
 public interface ProplistCallback
+    extends org.apache.subversion.javahl.callback.ProplistCallback
 {
-    /**
-     * the method will be called for every line in a file.
-     * @param path        the path.
-     * @param properties  the properties on the path.
-     */
-    public void singlePath(String path, Map properties);
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallbackImpl.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallbackImpl.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallbackImpl.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallbackImpl.java Tue Aug 10 18:06:17 2010
@@ -33,15 +33,24 @@ import java.util.Map;
  */
 public class ProplistCallbackImpl implements ProplistCallback
 {
-    Map propMap = new HashMap();
+    Map<String, Map<String, byte[]>> propMap =
+                                new HashMap<String, Map<String, byte[]>>();
 
-    public void singlePath(String path, Map props)
+    public void singlePath(String path, Map<String, byte[]> props)
     {
         propMap.put(path, props);
     }
 
-    public Map getProperties(String path)
+    public Map<String, String> getProperties(String path)
     {
-        return (Map) propMap.get(path);
+        Map<String, String> props = new HashMap<String, String>();
+        Map<String, byte[]> pdata = propMap.get(path);
+
+        for (String key : pdata.keySet())
+        {
+            props.put(key, new String(pdata.get(key)));
+        }
+
+        return props;
     }
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java Tue Aug 10 18:06:17 2010
@@ -155,6 +155,27 @@ public class Revision implements java.io
         return new Revision.DateSpec(revisionDate);
     }
 
+    public org.apache.subversion.javahl.Revision toApache()
+    {
+        return new org.apache.subversion.javahl.Revision(Kind.toAKind(revKind));
+    }
+
+    public static Revision createFromApache(
+                                    org.apache.subversion.javahl.Revision aRev)
+    {
+        org.apache.subversion.javahl.Revision.Kind kind = aRev.getKind();
+
+        switch (kind)
+        {
+            case number:
+                return getInstance(((org.apache.subversion.javahl.Revision.Number) aRev).getNumber());
+            case date:
+                return getInstance(((org.apache.subversion.javahl.Revision.DateSpec) aRev).getDate());
+            default:
+                return getInstance(Kind.fromAKind(kind));
+        }
+    }
+
     /**
      * last commited revision
      */
@@ -256,6 +277,11 @@ public class Revision implements java.io
         {
             return (int)(revNumber ^ (revNumber >>> 32));
         }
+
+        public org.apache.subversion.javahl.Revision toApache()
+        {
+            return org.apache.subversion.javahl.Revision.getInstance(revNumber);
+        }
     }
 
     /**
@@ -323,6 +349,10 @@ public class Revision implements java.io
             return revDate.hashCode();
         }
 
+        public org.apache.subversion.javahl.Revision toApache()
+        {
+            return org.apache.subversion.javahl.Revision.getInstance(revDate);
+        }
     }
 
     /**
@@ -338,5 +368,52 @@ public class Revision implements java.io
      */
     public static final class Kind implements RevisionKind
     {
+       public static int fromAKind(org.apache.subversion.javahl.Revision.Kind aKind)
+       {
+           switch (aKind)
+           {
+           default:
+           case unspecified:
+               return RevisionKind.unspecified;
+           case number:
+               return RevisionKind.number;
+           case date:
+               return RevisionKind.date;
+           case committed:
+               return RevisionKind.committed;
+           case previous:
+               return RevisionKind.previous;
+           case base:
+               return RevisionKind.base;
+           case head:
+               return RevisionKind.head;
+           case working:
+               return RevisionKind.working;
+           }
+       }
+       
+       public static org.apache.subversion.javahl.Revision.Kind toAKind(int kind)
+       {
+           switch (kind)
+           {
+           default:
+           case RevisionKind.unspecified:
+               return org.apache.subversion.javahl.Revision.Kind.unspecified;
+           case RevisionKind.number:
+               return org.apache.subversion.javahl.Revision.Kind.number;
+           case RevisionKind.date:
+               return org.apache.subversion.javahl.Revision.Kind.date;
+           case RevisionKind.committed:
+               return org.apache.subversion.javahl.Revision.Kind.committed;
+           case RevisionKind.previous:
+               return org.apache.subversion.javahl.Revision.Kind.previous;
+           case RevisionKind.base:
+               return org.apache.subversion.javahl.Revision.Kind.base;
+           case RevisionKind.head:
+               return org.apache.subversion.javahl.Revision.Kind.head;
+           case RevisionKind.working:
+               return org.apache.subversion.javahl.Revision.Kind.working;
+           }
+       }
     }
 }

Modified: subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionRange.java
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionRange.java?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionRange.java (original)
+++ subversion/branches/ignore-mergeinfo/subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionRange.java Tue Aug 10 18:06:17 2010
@@ -57,6 +57,12 @@ public class RevisionRange implements Co
         this.to = to;
     }
 
+    public RevisionRange(org.apache.subversion.javahl.RevisionRange aRange)
+    {
+        this(Revision.createFromApache(aRange.getFromRevision()),
+             Revision.createFromApache(aRange.getToRevision()));
+    }
+
     /**
      * Accepts a string in one of these forms: n m-n Parses the results into a
      * from and to revision
@@ -103,6 +109,13 @@ public class RevisionRange implements Co
         }
     }
 
+    public org.apache.subversion.javahl.RevisionRange toApache()
+    {
+        return new org.apache.subversion.javahl.RevisionRange(
+                from == null ? null : from.toApache(),
+                to == null ? null : to.toApache());
+    }
+
     public Revision getFromRevision()
     {
         return from;