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 2011/05/02 21:03:01 UTC
svn commit: r1098736 - in /subversion/trunk/subversion/bindings/javahl:
native/CreateJ.cpp native/CreateJ.h native/EnumMapper.cpp
native/EnumMapper.h src/org/apache/subversion/javahl/types/Info.java
src/org/tigris/subversion/javahl/Info2.java
Author: hwright
Date: Mon May 2 19:03:00 2011
New Revision: 1098736
URL: http://svn.apache.org/viewvc?rev=1098736&view=rev
Log:
Fix the JavaHL build by returning a proper Checksum in the Info object.
[ in subversion/bindings/javahl/ ]
* native/CreateJ.cpp
(Checksum): New.
(Info): Create a real checksum from the wc_info checksum.
* native/EnumMapper.h
(mapChecksumKind): New.
* native/EnumMapper.cpp
(mapChecksumKind): New.
* native/CreateJ.h
(Checksum): New.
* src/org/apache/subversion/javahl/types/Info.java
(checksum, getChecksum): Update type.
(Info): Take a Checksum as input.
* src/org/tigris/subversion/javahl/Info2.java
(Info2): Avoid a null Checksum conversion.
Modified:
subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
subversion/trunk/subversion/bindings/javahl/native/CreateJ.h
subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Info.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java
Modified: subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp?rev=1098736&r1=1098735&r2=1098736&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp Mon May 2 19:03:00 2011
@@ -178,6 +178,53 @@ CreateJ::ConflictVersion(const svn_wc_co
}
jobject
+CreateJ::Checksum(const svn_checksum_t *checksum)
+{
+ if (!checksum)
+ return NULL;
+
+ JNIEnv *env = JNIUtil::getEnv();
+
+ // Create a local frame for our references
+ env->PushLocalFrame(LOCAL_FRAME_SIZE);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ jclass clazz = env->FindClass(JAVA_PACKAGE"/types/Checksum");
+ if (JNIUtil::isExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ // Get the method id for the CommitItem constructor.
+ static jmethodID midConstructor = 0;
+ if (midConstructor == 0)
+ {
+ midConstructor = env->GetMethodID(clazz, "<init>",
+ "([B"
+ "L"JAVA_PACKAGE"/types/Checksum$Kind;"
+ ")V");
+ if (JNIUtil::isExceptionThrown())
+ POP_AND_RETURN_NULL;
+ }
+
+ jbyteArray jdigest = JNIUtil::makeJByteArray(
+ (const signed char *)checksum->digest,
+ svn_checksum_size(checksum));
+ if (JNIUtil::isExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ jobject jkind = EnumMapper::mapChecksumKind(checksum->kind);
+ if (JNIUtil::isExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ // create the Java object
+ jobject jchecksum = env->NewObject(clazz, midConstructor, jdigest, jkind);
+ if (JNIUtil::isExceptionThrown())
+ POP_AND_RETURN_NULL;
+
+ return env->PopLocalFrame(jchecksum);
+}
+
+jobject
CreateJ::Info(const char *path, const svn_info2_t *info)
{
JNIEnv *env = JNIUtil::getEnv();
@@ -202,7 +249,8 @@ CreateJ::Info(const char *path, const sv
"JJLjava/lang/String;"
"L"JAVA_PACKAGE"/types/Lock;Z"
"L"JAVA_PACKAGE"/types/Info$ScheduleKind;"
- "Ljava/lang/String;JJLjava/lang/String;"
+ "Ljava/lang/String;JJ"
+ "L"JAVA_PACKAGE"/types/Checksum;"
"Ljava/lang/String;JJ"
"L"JAVA_PACKAGE"/types/Depth;Ljava/util/Set;)V");
if (mid == 0 || JNIUtil::isJavaExceptionThrown())
@@ -215,7 +263,7 @@ CreateJ::Info(const char *path, const sv
jstring jwcroot = NULL;
jstring jcopyFromUrl = NULL;
- jstring jchecksum = NULL;
+ jobject jchecksum = NULL;
jstring jchangelist = NULL;
jobject jconflicts = NULL;
jobject jscheduleKind = NULL;
@@ -233,7 +281,7 @@ CreateJ::Info(const char *path, const sv
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN_NULL;
- jchecksum = JNIUtil::makeJString(info->wc_info->checksum);
+ jchecksum = Checksum(info->wc_info->checksum);
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN_NULL;
Modified: subversion/trunk/subversion/bindings/javahl/native/CreateJ.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/CreateJ.h?rev=1098736&r1=1098735&r2=1098736&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/CreateJ.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/CreateJ.h Mon May 2 19:03:00 2011
@@ -46,6 +46,9 @@ class CreateJ
ConflictDescriptor(const svn_wc_conflict_description2_t *desc);
static jobject
+ Checksum(const svn_checksum_t *checksum);
+
+ static jobject
Info(const char *path, const svn_info2_t *info);
static jobject
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp?rev=1098736&r1=1098735&r2=1098736&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp Mon May 2 19:03:00 2011
@@ -145,6 +145,12 @@ jobject EnumMapper::mapStatusKind(svn_wc
return mapEnum(JAVA_PACKAGE"/types/Status$Kind", ((int) svnKind) - 1);
}
+jobject EnumMapper::mapChecksumKind(svn_checksum_kind_t kind)
+{
+ // We're assuming a valid value for the C enum above
+ return mapEnum(JAVA_PACKAGE"/types/Checksum$Kind", (int) kind);
+}
+
jobject EnumMapper::mapConflictKind(svn_wc_conflict_kind_t kind)
{
// We're assuming a valid value for the C enum above
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h?rev=1098736&r1=1098735&r2=1098736&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h Mon May 2 19:03:00 2011
@@ -60,6 +60,7 @@ class EnumMapper
static jobject mapNotifyLockState(svn_wc_notify_lock_state_t state);
static jobject mapStatusKind(svn_wc_status_kind svnKind);
static jobject mapScheduleKind(svn_wc_schedule_t schedule);
+ static jobject mapChecksumKind(svn_checksum_kind_t kind);
static jobject mapConflictKind(svn_wc_conflict_kind_t kind);
static jobject mapConflictAction(svn_wc_conflict_action_t action);
static jobject mapConflictReason(svn_wc_conflict_reason_t reason);
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Info.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Info.java?rev=1098736&r1=1098735&r2=1098736&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Info.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Info.java Mon May 2 19:03:00 2011
@@ -127,7 +127,7 @@ public class Info implements java.io.Ser
/**
* the checksum of the item
*/
- private String checksum;
+ private Checksum checksum;
/**
* The name of the changelist.
@@ -186,7 +186,7 @@ public class Info implements java.io.Ser
String reposRootUrl, String reposUUID, long lastChangedRev,
long lastChangedDate, String lastChangedAuthor, Lock lock,
boolean hasWcInfo, ScheduleKind schedule, String copyFromUrl,
- long copyFromRev, long textTime, String checksum,
+ long copyFromRev, long textTime, Checksum checksum,
String changelistName, long workingSize, long reposSize, Depth depth,
Set<ConflictDescriptor> conflict)
{
@@ -351,7 +351,7 @@ public class Info implements java.io.Ser
/**
* return the checksum of the item
*/
- public String getChecksum()
+ public Checksum getChecksum()
{
return checksum;
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java?rev=1098736&r1=1098735&r2=1098736&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java Mon May 2 19:03:00 2011
@@ -346,7 +346,8 @@ public class Info2 implements java.io.Se
aInfo.getCopyFromUrl(), aInfo.getCopyFromRev(),
aInfo.getTextTime() == null ? 0
: aInfo.getTextTime().getTime() * 1000,
- 0, aInfo.getChecksum(),
+ 0, aInfo.getChecksum() == null ? null
+ : new String(aInfo.getChecksum().getDigest()),
getConflictOld(aInfo.getConflicts()),
getConflictNew(aInfo.getConflicts()),
getConflictWrk(aInfo.getConflicts()),
Re: svn commit: r1098736 - in /subversion/trunk/subversion/bindings/javahl:
native/CreateJ.cpp native/CreateJ.h native/EnumMapper.cpp native/EnumMapper.h
src/org/apache/subversion/javahl/types/Info.java src/org/tigris/subversion/javahl/Info2.java
Posted by Greg Stein <gs...@gmail.com>.
On Mon, May 2, 2011 at 15:03, <hw...@apache.org> wrote:
>...
> +++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java Mon May 2 19:03:00 2011
> @@ -346,7 +346,8 @@ public class Info2 implements java.io.Se
> aInfo.getCopyFromUrl(), aInfo.getCopyFromRev(),
> aInfo.getTextTime() == null ? 0
> : aInfo.getTextTime().getTime() * 1000,
> - 0, aInfo.getChecksum(),
> + 0, aInfo.getChecksum() == null ? null
> + : new String(aInfo.getChecksum().getDigest()),
Per IRC, you're returning the raw bytes here, rather than the hexified
checksum string.
Cheers,
-g