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