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/03/19 18:23:41 UTC
svn commit: r925343 - in /subversion/trunk/subversion/bindings/javahl:
native/ src/org/apache/subversion/javahl/ src/org/tigris/subversion/javahl/
tests/org/apache/subversion/javahl/
Author: hwright
Date: Fri Mar 19 17:23:40 2010
New Revision: 925343
URL: http://svn.apache.org/viewvc?rev=925343&view=rev
Log:
JavaHL: Enum'ize the ConflictResult-define constants.
[ in subversion/bindings/javahl/ ]
* tests/org/apache/subversion/javahl/BasicTests.java:
Update tests to use the new enum.
* native/ConflictResolverCallback.cpp
(javaResultToC): Update for the new type, make sure we delete our local
reference.
(javaChoiceToC): Remove.
* native/ConflictResolverCallback.h
(javaChoiceToC): Remove.
* native/EnumMapper.h,
native/EnumMapper.cpp
(toConflictChoice): New.
* native/org_apache_subversion_javahl_SVNClient.cpp
(Java_org_apache_subversion_javahl_SVNClient_resolve): Map the incoming
conflict choice.
* src/org/apache/subversion/javahl/ConflictResult.java
(Choice): New enum, with the contents being the previous constants.
Update constructor, getters and setters.
* src/org/apache/subversion/javahl/SVNClient.java,
src/org/apache/subversion/javahl/ISVNClient.java
(resolve): Update to take a Choice parameters.
* src/org/tigris/subversion/javahl/SVNClient.java
(resolve): Update wrapper.
* src/org/tigris/subversion/javahl/ConflictResult.java
(toApache): Update wrapper.
Modified:
subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.cpp
subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.h
subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
Modified: subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.cpp?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.cpp Fri Mar 19 17:23:40 2010
@@ -163,7 +163,8 @@ ConflictResolverCallback::javaResultToC(
if (getChoice == 0)
{
- getChoice = env->GetMethodID(clazz, "getChoice", "()I");
+ getChoice = env->GetMethodID(clazz, "getChoice",
+ "()L"JAVA_PACKAGE"/ConflictResult$Choice;");
if (JNIUtil::isJavaExceptionThrown() || getChoice == 0)
return NULL;
}
@@ -182,39 +183,24 @@ ConflictResolverCallback::javaResultToC(
return NULL;
}
- jint jchoice = env->CallIntMethod(jresult, getChoice);
+ jobject jchoice = env->CallObjectMethod(jresult, getChoice);
if (JNIUtil::isJavaExceptionThrown())
return NULL;
- jstring jmergedPath =
- (jstring) env->CallObjectMethod(jresult, getMergedPath);
+ jstring jmergedPath = (jstring) env->CallObjectMethod(jresult, getMergedPath);
if (JNIUtil::isJavaExceptionThrown())
return NULL;
+
JNIStringHolder mergedPath(jmergedPath);
- return svn_wc_create_conflict_result(javaChoiceToC(jchoice),
+ svn_wc_conflict_result_t *result =
+ svn_wc_create_conflict_result(EnumMapper::toConflictChoice(jchoice),
mergedPath.pstrdup(pool),
pool);
-}
-svn_wc_conflict_choice_t ConflictResolverCallback::javaChoiceToC(jint jchoice)
-{
- switch (jchoice)
- {
- case org_apache_subversion_javahl_ConflictResult_postpone:
- default:
- return svn_wc_conflict_choose_postpone;
- case org_apache_subversion_javahl_ConflictResult_chooseBase:
- return svn_wc_conflict_choose_base;
- case org_apache_subversion_javahl_ConflictResult_chooseTheirsFull:
- return svn_wc_conflict_choose_theirs_full;
- case org_apache_subversion_javahl_ConflictResult_chooseMineFull:
- return svn_wc_conflict_choose_mine_full;
- case org_apache_subversion_javahl_ConflictResult_chooseTheirsConflict:
- return svn_wc_conflict_choose_theirs_conflict;
- case org_apache_subversion_javahl_ConflictResult_chooseMineConflict:
- return svn_wc_conflict_choose_mine_conflict;
- case org_apache_subversion_javahl_ConflictResult_chooseMerged:
- return svn_wc_conflict_choose_merged;
- }
+ env->DeleteLocalRef(jchoice);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ return result;
}
Modified: subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.h?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/ConflictResolverCallback.h Fri Mar 19 17:23:40 2010
@@ -91,12 +91,6 @@ class ConflictResolverCallback
*/
static svn_wc_conflict_result_t * javaResultToC(jobject result,
apr_pool_t *pool);
-
- /**
- * Convert the Java conflict resolution @a choice into the
- * appropriate C enum value.
- */
- static svn_wc_conflict_choice_t javaChoiceToC(jint choice);
};
#endif // CONFLICTRESOLVERCALLBACK_H
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp Fri Mar 19 17:23:40 2010
@@ -494,6 +494,33 @@ jobject EnumMapper::mapTristate(svn_tris
}
}
+svn_wc_conflict_choice_t EnumMapper::toConflictChoice(jobject jchoice)
+{
+ JNIEnv *env = JNIUtil::getEnv();
+
+ jstring jname = getName(JAVA_PACKAGE"/ConflictResult$Choice", jchoice);
+ if (JNIUtil::isJavaExceptionThrown())
+ return svn_wc_conflict_choose_postpone;
+
+ JNIStringHolder str(jname);
+ std::string name((const char *)str);
+
+ if (name == "chooseBase")
+ return svn_wc_conflict_choose_base;
+ else if (name == "chooseTheirsFull")
+ return svn_wc_conflict_choose_theirs_full;
+ else if (name == "chooseMineFull")
+ return svn_wc_conflict_choose_mine_full;
+ else if (name == "chooseTheirsConflict")
+ return svn_wc_conflict_choose_theirs_conflict;
+ else if (name == "chooseMineConflict")
+ return svn_wc_conflict_choose_mine_conflict;
+ else if (name == "chooseMerged")
+ return svn_wc_conflict_choose_merged;
+ else
+ return svn_wc_conflict_choose_postpone;
+}
+
svn_opt_revision_kind EnumMapper::toRevisionKind(jobject jkind)
{
JNIEnv *env = JNIUtil::getEnv();
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h Fri Mar 19 17:23:40 2010
@@ -44,6 +44,7 @@ class EnumMapper
/* Converting to C enum's */
static svn_depth_t toDepth(jobject jdepth);
static svn_opt_revision_kind toRevisionKind(jobject jkind);
+ static svn_wc_conflict_choice_t toConflictChoice(jobject jchoice);
/* Converting from C enum's */
static jint mapCommitMessageStateFlags(apr_byte_t flags);
Modified: subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Fri Mar 19 17:23:40 2010
@@ -668,7 +668,7 @@ Java_org_apache_subversion_javahl_SVNCli
JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_resolve
-(JNIEnv *env, jobject jthis, jstring jpath, jobject jdepth, jint jchoice)
+(JNIEnv *env, jobject jthis, jstring jpath, jobject jdepth, jobject jchoice)
{
JNIEntry(SVNClient, resolve);
SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -682,7 +682,7 @@ Java_org_apache_subversion_javahl_SVNCli
return;
cl->resolve(path, EnumMapper::toDepth(jdepth),
- (svn_wc_conflict_choice_t) jchoice);
+ EnumMapper::toConflictChoice(jchoice));
}
JNIEXPORT jlong JNICALL
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java Fri Mar 19 17:23:40 2010
@@ -33,50 +33,10 @@ package org.apache.subversion.javahl;
public class ConflictResult
{
/**
- * Nothing done to resolve the conflict; conflict remains.
- */
- public static final int postpone = 0;
-
- /**
- * Resolve the conflict by choosing the base file.
- */
- public static final int chooseBase = 1;
-
- /**
- * Resolve the conflict by choosing the incoming (repository)
- * version of the object.
- */
- public static final int chooseTheirsFull = 2;
-
- /**
- * Resolve the conflict by choosing own (local) version of the
- * object.
- */
- public static final int chooseMineFull = 3;
-
- /**
- * Resolve the conflict by choosing the incoming (repository)
- * version of the object (for conflicted hunks only).
- */
- public static final int chooseTheirsConflict = 4;
-
- /**
- * Resolve the conflict by choosing own (local) version of the
- * object (for conflicted hunks only).
- */
- public static final int chooseMineConflict = 5;
-
- /**
- * Resolve the conflict by choosing the merged object
- * (potentially manually edited).
- */
- public static final int chooseMerged = 6;
-
- /**
* A value corresponding to the
* <code>svn_wc_conflict_choice_t</code> enum.
*/
- private int choice;
+ private Choice choice;
/**
* The path to the result of a merge, or <code>null</code>.
@@ -86,7 +46,7 @@ public class ConflictResult
/**
* Create a new conflict result instace.
*/
- public ConflictResult(int choice, String mergedPath)
+ public ConflictResult(Choice choice, String mergedPath)
{
this.choice = choice;
this.mergedPath = mergedPath;
@@ -96,7 +56,7 @@ public class ConflictResult
* @return A value corresponding to the
* <code>svn_wc_conflict_choice_t</code> enum.
*/
- public int getChoice()
+ public Choice getChoice()
{
return choice;
}
@@ -108,4 +68,43 @@ public class ConflictResult
{
return mergedPath;
}
+
+ public enum Choice
+ {
+ /** Nothing done to resolve the conflict; conflict remains. */
+ postpone,
+
+ /** Resolve the conflict by choosing the base file. */
+ chooseBase,
+
+ /**
+ * Resolve the conflict by choosing the incoming (repository)
+ * version of the object.
+ */
+ chooseTheirsFull,
+
+ /**
+ * Resolve the conflict by choosing own (local) version of the
+ * object.
+ */
+ chooseMineFull,
+
+ /**
+ * Resolve the conflict by choosing the incoming (repository)
+ * version of the object (for conflicted hunks only).
+ */
+ chooseTheirsConflict,
+
+ /**
+ * Resolve the conflict by choosing own (local) version of the
+ * object (for conflicted hunks only).
+ */
+ chooseMineConflict,
+
+ /**
+ * Resolve the conflict by choosing the merged object
+ * (potentially manually edited).
+ */
+ chooseMerged;
+ }
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Fri Mar 19 17:23:40 2010
@@ -369,7 +369,7 @@ public interface ISVNClient
* @throws SubversionException If an error occurs.
* @since 1.5
*/
- void resolve(String path, Depth depth, int conflictResult)
+ void resolve(String path, Depth depth, ConflictResult.Choice conflictResult)
throws SubversionException;
/**
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Fri Mar 19 17:23:40 2010
@@ -266,7 +266,8 @@ public class SVNClient implements ISVNCl
/**
* @since 1.5
*/
- public native void resolve(String path, Depth depth, int conflictResult)
+ public native void resolve(String path, Depth depth,
+ ConflictResult.Choice conflictResult)
throws SubversionException;
/**
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java Fri Mar 19 17:23:40 2010
@@ -94,8 +94,9 @@ public class ConflictResult
public org.apache.subversion.javahl.ConflictResult toApache()
{
- return new org.apache.subversion.javahl.ConflictResult(choice,
- mergedPath);
+ return new org.apache.subversion.javahl.ConflictResult(
+ org.apache.subversion.javahl.ConflictResult.Choice.values()[choice],
+ mergedPath);
}
/**
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java Fri Mar 19 17:23:40 2010
@@ -1058,7 +1058,9 @@ public class SVNClient implements SVNCli
{
try
{
- aSVNClient.resolve(path, Depth.toADepth(depth), conflictResult);
+ aSVNClient.resolve(path, Depth.toADepth(depth),
+ org.apache.subversion.javahl.ConflictResult.Choice.values()[
+ conflictResult]);
}
catch (org.apache.subversion.javahl.SubversionException ex)
{
Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=925343&r1=925342&r2=925343&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Fri Mar 19 17:23:40 2010
@@ -1285,7 +1285,7 @@ public class BasicTests extends SVNTests
// flag A/mu as resolved
client.resolve(backupTest.getWCPath()+"/A/mu", Depth.empty,
- ConflictResult.chooseMerged);
+ ConflictResult.Choice.chooseMerged);
backupTest.getWc().setItemTextStatus("A/mu", Status.Kind.modified);
backupTest.getWc().removeItem("A/mu.r1");
backupTest.getWc().removeItem("A/mu.r2");
@@ -1293,7 +1293,7 @@ public class BasicTests extends SVNTests
// flag A/D/G/rho as resolved
client.resolve(backupTest.getWCPath()+"/A/D/G/rho", Depth.empty,
- ConflictResult.chooseMerged);
+ ConflictResult.Choice.chooseMerged);
backupTest.getWc().setItemTextStatus("A/D/G/rho",
Status.Kind.modified);
backupTest.getWc().removeItem("A/D/G/rho.r1");
@@ -2655,7 +2655,7 @@ public class BasicTests extends SVNTests
{
public ConflictResult resolve(ConflictDescriptor descrip)
{
- return new ConflictResult(ConflictResult.chooseTheirsConflict,
+ return new ConflictResult(ConflictResult.Choice.chooseTheirsConflict,
null);
}
});