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/09/22 02:50:48 UTC

svn commit: r999702 - in /subversion/branches/object-model/subversion/bindings/javahl/native: JNIRevision.h Revision.cpp SVNClient.cpp SVNClient.h org_apache_subversion_javahl_SVNClient.cpp

Author: hwright
Date: Wed Sep 22 00:50:47 2010
New Revision: 999702

URL: http://svn.apache.org/viewvc?rev=999702&view=rev
Log:
On the object-model branch:
Use the C++ bindings to implement checkout() for JavaHL.

* subversion/bindings/javahl/native/SVNClient.h
  (checkout): Remove.

* subversion/bindings/javahl/native/Revision.cpp
  (fromJ): Add an additional parameter.

* subversion/bindings/javahl/native/JNIRevision.h
  (fromJ): Add an additional parameter, but default it to false.

* subversion/bindings/javahl/native/SVNClient.cpp
  (checkout): Remove.

* subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
  (Java_org_apache_subversion_javahl_SVNClient_checkout): Use the C++
    client, instead of the JavaHL one.

Modified:
    subversion/branches/object-model/subversion/bindings/javahl/native/JNIRevision.h
    subversion/branches/object-model/subversion/bindings/javahl/native/Revision.cpp
    subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.cpp
    subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.h
    subversion/branches/object-model/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp

Modified: subversion/branches/object-model/subversion/bindings/javahl/native/JNIRevision.h
URL: http://svn.apache.org/viewvc/subversion/branches/object-model/subversion/bindings/javahl/native/JNIRevision.h?rev=999702&r1=999701&r2=999702&view=diff
==============================================================================
--- subversion/branches/object-model/subversion/bindings/javahl/native/JNIRevision.h (original)
+++ subversion/branches/object-model/subversion/bindings/javahl/native/JNIRevision.h Wed Sep 22 00:50:47 2010
@@ -55,7 +55,7 @@ class Revision
    * Make a Revision Java object.
    */
   static jobject makeJRevision(svn_revnum_t rev);
-  static SVN::Revision fromJ(jobject jrevision);
+  static SVN::Revision fromJ(jobject jrevision, bool headIfUnspecified = false);
 };
 
 #endif // JNIREVISION_H

Modified: subversion/branches/object-model/subversion/bindings/javahl/native/Revision.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/object-model/subversion/bindings/javahl/native/Revision.cpp?rev=999702&r1=999701&r2=999702&view=diff
==============================================================================
--- subversion/branches/object-model/subversion/bindings/javahl/native/Revision.cpp (original)
+++ subversion/branches/object-model/subversion/bindings/javahl/native/Revision.cpp Wed Sep 22 00:50:47 2010
@@ -182,7 +182,7 @@ Revision::makeJRevision(svn_revnum_t rev
 }
 
 SVN::Revision
-Revision::fromJ(jobject jrevision)
+Revision::fromJ(jobject jrevision, bool headIfUnspecified)
 {
   Revision rev(jrevision);
   const svn_opt_revision_t *revision = rev.revision();
@@ -190,7 +190,10 @@ Revision::fromJ(jobject jrevision)
   switch (revision->kind)
     {
       case svn_opt_revision_unspecified:
-        return SVN::Revision::UNSPECIFIED;
+        if (headIfUnspecified)
+          return SVN::Revision::HEAD;
+        else
+          return SVN::Revision::UNSPECIFIED;
       case svn_opt_revision_number:
         return SVN::Revision::getNumberRev(revision->value.number);
       case svn_opt_revision_date:

Modified: subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.cpp?rev=999702&r1=999701&r2=999702&view=diff
==============================================================================
--- subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.cpp Wed Sep 22 00:50:47 2010
@@ -231,40 +231,6 @@ void SVNClient::logMessages(const char *
                                 requestPool.pool()), );
 }
 
-jlong SVNClient::checkout(const char *moduleName, const char *destPath,
-                          Revision &revision, Revision &pegRevision,
-                          svn_depth_t depth, bool ignoreExternals,
-                          bool allowUnverObstructions)
-{
-    SVN::Pool requestPool;
-
-    SVN_JNI_NULL_PTR_EX(moduleName, "moduleName", -1);
-    SVN_JNI_NULL_PTR_EX(destPath, "destPath", -1);
-
-    Path url(moduleName);
-    Path path(destPath);
-    SVN_JNI_ERR(url.error_occured(), -1);
-    SVN_JNI_ERR(path.error_occured(), -1);
-    svn_revnum_t rev;
-
-    svn_client_ctx_t *ctx = context.getContext(NULL);
-    if (ctx == NULL)
-        return -1;
-
-    SVN_JNI_ERR(svn_client_checkout3(&rev, url.c_str(),
-                                     path.c_str(),
-                                     pegRevision.revision(),
-                                     revision.revision(),
-                                     depth,
-                                     ignoreExternals,
-                                     allowUnverObstructions,
-                                     ctx,
-                                     requestPool.pool()),
-                -1);
-
-    return rev;
-}
-
 void SVNClient::remove(Targets &targets, CommitMessage *message, bool force,
                        bool keep_local, RevpropTable &revprops,
                        CommitCallback *callback)

Modified: subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.h?rev=999702&r1=999701&r2=999702&view=diff
==============================================================================
--- subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/object-model/subversion/bindings/javahl/native/SVNClient.h Wed Sep 22 00:50:47 2010
@@ -137,9 +137,6 @@ class SVNClient :public SVNBase
   void remove(Targets &targets, CommitMessage *message, bool force,
               bool keep_local, RevpropTable &revprops,
               CommitCallback *callback);
-  jlong checkout(const char *moduleName, const char *destPath,
-                 Revision &revision, Revision &pegRevsion, svn_depth_t depth,
-                 bool ignoreExternals, bool allowUnverObstructions);
   void logMessages(const char *path, Revision &pegRevision,
                    std::vector<RevisionRange> &ranges, bool stopOnCopy,
                    bool discoverPaths, bool includeMergedRevisions,

Modified: subversion/branches/object-model/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/object-model/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=999702&r1=999701&r2=999702&view=diff
==============================================================================
--- subversion/branches/object-model/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/object-model/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Wed Sep 22 00:50:47 2010
@@ -325,11 +325,11 @@ Java_org_apache_subversion_javahl_SVNCli
       JNIUtil::throwError(_("bad C++ this"));
       return -1;
     }
-  Revision revision(jrevision, true);
+  SVN::Revision revision = Revision::fromJ(jrevision, true);
   if (JNIUtil::isExceptionThrown())
     return -1;
 
-  Revision pegRevision(jpegRevision, true);
+  SVN::Revision pegRevision = Revision::fromJ(jpegRevision, true);
   if (JNIUtil::isExceptionThrown())
     return -1;
 
@@ -341,10 +341,22 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return -1;
 
-  return cl->checkout(moduleName, destPath, revision, pegRevision,
-                      EnumMapper::toDepth(jdepth),
-                      jignoreExternals ? true : false,
-                      jallowUnverObstructions ? true : false);
+  try
+    {
+      return cl->getClient().checkout(moduleName.str(), destPath.str(),
+                                      revision, pegRevision,
+                                      EnumMapper::toDepth(jdepth),
+                                      jignoreExternals ? true : false,
+                                      jallowUnverObstructions ? true : false)
+                       .revision()->value.number;
+    }
+  catch (SVN::Exception ex)
+    {
+      JNIUtil::throwNativeException(JAVA_PACKAGE"/ClientException",
+                                    ex.what(), ex.getSource().c_str(),
+                                    ex.getAPRErr());
+      return SVN_INVALID_REVNUM;
+    }
 }
 
 JNIEXPORT void JNICALL