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 15:17:27 UTC
svn commit: r925230 - in /subversion/trunk/subversion/bindings/javahl:
native/CreateJ.cpp native/EnumMapper.cpp native/EnumMapper.h
src/org/apache/subversion/javahl/ConflictDescriptor.java
src/org/tigris/subversion/javahl/ConflictDescriptor.java
Author: hwright
Date: Fri Mar 19 14:17:26 2010
New Revision: 925230
URL: http://svn.apache.org/viewvc?rev=925230&view=rev
Log:
JavaHL: Enum'ize the various enums within a conflict descriptor.
[ in subversion/bindings/javahl/ ]
* native/CreateJ.cpp
(ConflictDescriptor): Use objects when creating the kind, action, and reason
fields.
* native/EnumMapper.h,
native/EnumMapper.cpp
(mapConflictKind, mapConflictAction, mapConflictReason): Return the
appropriate objects.
* src/org/apache/subversion/javahl/ConflictDescriptor.java
(Kind, Action, Reason): Update to be true enums.
(getKind, getAction, getReason): Update return types.
(kind, action, reason): Update types.
* src/org/tigris/subversion/javahl/ConflictDescriptor.java
(ConflictDescriptor): Update constructor to use new types.
Modified:
subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
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/ConflictDescriptor.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.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=925230&r1=925229&r2=925230&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp Fri Mar 19 14:17:26 2010
@@ -48,9 +48,12 @@ CreateJ::ConflictDescriptor(const svn_wc
if (ctor == 0)
{
- ctor = env->GetMethodID(clazz, "<init>", "(Ljava/lang/String;I"
+ ctor = env->GetMethodID(clazz, "<init>", "(Ljava/lang/String;"
+ "L"JAVA_PACKAGE"/ConflictDescriptor$Kind;"
"L"JAVA_PACKAGE"/NodeKind;"
- "Ljava/lang/String;ZLjava/lang/String;III"
+ "Ljava/lang/String;ZLjava/lang/String;"
+ "L"JAVA_PACKAGE"/ConflictDescriptor$Action;"
+ "L"JAVA_PACKAGE"/ConflictDescriptor$Reason;I"
"Ljava/lang/String;Ljava/lang/String;"
"Ljava/lang/String;Ljava/lang/String;"
"L"JAVA_PACKAGE"/ConflictVersion;"
@@ -89,14 +92,21 @@ CreateJ::ConflictDescriptor(const svn_wc
jobject jnodeKind = EnumMapper::mapNodeKind(desc->node_kind);
if (JNIUtil::isJavaExceptionThrown())
return NULL;
+ jobject jconflictKind = EnumMapper::mapConflictKind(desc->kind);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ jobject jconflictAction = EnumMapper::mapConflictAction(desc->action);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ jobject jconflictReason = EnumMapper::mapConflictReason(desc->reason);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
// Instantiate the conflict descriptor.
- jobject jdesc = env->NewObject(clazz, ctor, jpath,
- EnumMapper::mapConflictKind(desc->kind),
+ jobject jdesc = env->NewObject(clazz, ctor, jpath, jconflictKind,
jnodeKind, jpropertyName,
(jboolean) desc->is_binary, jmimeType,
- EnumMapper::mapConflictAction(desc->action),
- EnumMapper::mapConflictReason(desc->reason),
+ jconflictAction, jconflictReason,
EnumMapper::mapOperation(desc->operation),
jbasePath, jreposPath, juserPath,
jmergedPath, jsrcLeft, jsrcRight);
@@ -107,6 +117,15 @@ CreateJ::ConflictDescriptor(const svn_wc
if (JNIUtil::isJavaExceptionThrown())
return NULL;
+ env->DeleteLocalRef(jconflictKind);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ env->DeleteLocalRef(jconflictAction);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ env->DeleteLocalRef(jconflictReason);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
env->DeleteLocalRef(jnodeKind);
if (JNIUtil::isJavaExceptionThrown())
return NULL;
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp?rev=925230&r1=925229&r2=925230&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp Fri Mar 19 14:17:26 2010
@@ -368,57 +368,57 @@ jobject EnumMapper::mapStatusKind(svn_wc
}
}
-jint EnumMapper::mapConflictKind(svn_wc_conflict_kind_t kind)
+jobject EnumMapper::mapConflictKind(svn_wc_conflict_kind_t kind)
{
switch (kind)
{
case svn_wc_conflict_kind_text:
default:
- return org_apache_subversion_javahl_ConflictDescriptor_Kind_text;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Kind", "text");
case svn_wc_conflict_kind_property:
- return org_apache_subversion_javahl_ConflictDescriptor_Kind_property;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Kind", "property");
}
}
-jint EnumMapper::mapConflictAction(svn_wc_conflict_action_t action)
+jobject EnumMapper::mapConflictAction(svn_wc_conflict_action_t action)
{
switch (action)
{
case svn_wc_conflict_action_edit:
default:
- return org_apache_subversion_javahl_ConflictDescriptor_Action_edit;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Action", "edit");
case svn_wc_conflict_action_add:
- return org_apache_subversion_javahl_ConflictDescriptor_Action_add;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Action", "add");
case svn_wc_conflict_action_delete:
- return org_apache_subversion_javahl_ConflictDescriptor_Action_delete;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Action", "delete");
}
}
-jint EnumMapper::mapConflictReason(svn_wc_conflict_reason_t reason)
+jobject EnumMapper::mapConflictReason(svn_wc_conflict_reason_t reason)
{
switch (reason)
{
case svn_wc_conflict_reason_edited:
default:
- return org_apache_subversion_javahl_ConflictDescriptor_Reason_edited;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Reason", "edited");
case svn_wc_conflict_reason_obstructed:
- return org_apache_subversion_javahl_ConflictDescriptor_Reason_obstructed;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Reason", "obstructed");
case svn_wc_conflict_reason_deleted:
- return org_apache_subversion_javahl_ConflictDescriptor_Reason_deleted;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Reason", "deleted");
case svn_wc_conflict_reason_missing:
- return org_apache_subversion_javahl_ConflictDescriptor_Reason_missing;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Reason", "missing");
case svn_wc_conflict_reason_unversioned:
- return org_apache_subversion_javahl_ConflictDescriptor_Reason_unversioned;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Reason", "unversioned");
case svn_wc_conflict_reason_added:
- return org_apache_subversion_javahl_ConflictDescriptor_Reason_added;
+ return mapEnum(JAVA_PACKAGE"/ConflictDescriptor$Reason", "added");
}
}
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h?rev=925230&r1=925229&r2=925230&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h Fri Mar 19 14:17:26 2010
@@ -53,9 +53,9 @@ class EnumMapper
static jint mapNotifyLockState(svn_wc_notify_lock_state_t state);
static jobject mapStatusKind(svn_wc_status_kind svnKind);
static jint mapScheduleKind(svn_wc_schedule_t schedule);
- static jint mapConflictKind(svn_wc_conflict_kind_t kind);
- static jint mapConflictAction(svn_wc_conflict_action_t action);
- static jint mapConflictReason(svn_wc_conflict_reason_t reason);
+ 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);
static jobject mapDepth(svn_depth_t depth);
static jint mapOperation(svn_wc_operation_t);
static jobject mapTristate(svn_tristate_t);
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java?rev=925230&r1=925229&r2=925230&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java Fri Mar 19 14:17:26 2010
@@ -33,10 +33,7 @@ public class ConflictDescriptor
{
private String path;
- /**
- * @see .Kind
- */
- private int conflictKind;
+ private Kind conflictKind;
private NodeKind nodeKind;
@@ -45,22 +42,8 @@ public class ConflictDescriptor
private boolean isBinary;
private String mimeType;
- // svn_wc_conflict_description_t also provides us with an
- // svn_wc_adm_access_t *. However, that is only useful to
- // JNI-based APIs written against svn_wc.h. So, we don't (yet)
- // expose that to JavaHL. We could expose it is a long
- // representing the memory address of the struct, which could be
- // passed off to other JNI APIs.
-
- /**
- * @see #Action
- */
- private int action;
-
- /**
- * @see #Reason
- */
- private int reason;
+ private Action action;
+ private Reason reason;
// File paths, present only when the conflict involves the merging
// of two files descended from a common ancestor, here are the
@@ -89,9 +72,9 @@ public class ConflictDescriptor
private ConflictVersion srcRightVersion;
/** This constructor should only be called from JNI code. */
- public ConflictDescriptor(String path, int conflictKind, NodeKind nodeKind,
+ public ConflictDescriptor(String path, Kind conflictKind, NodeKind nodeKind,
String propertyName, boolean isBinary, String mimeType,
- int action, int reason, int operation,
+ Action action, Reason reason, int operation,
String basePath, String theirPath,
String myPath, String mergedPath,
ConflictVersion srcLeft, ConflictVersion srcRight)
@@ -118,17 +101,11 @@ public class ConflictDescriptor
return path;
}
- /**
- * @see .Kind
- */
- public int getKind()
+ public Kind getKind()
{
return conflictKind;
}
- /**
- * @see NodeKind
- */
public NodeKind getNodeKind()
{
return nodeKind;
@@ -149,18 +126,12 @@ public class ConflictDescriptor
return mimeType;
}
- /**
- * @see .Action
- */
- public int getAction()
+ public Action getAction()
{
return action;
}
- /**
- * @see .Reason
- */
- public int getReason()
+ public Reason getReason()
{
return reason;
}
@@ -201,76 +172,76 @@ public class ConflictDescriptor
}
/**
- * Poor man's enum for <code>svn_wc_conflict_kind_t</code>.
+ * Rich man's enum for <code>svn_wc_conflict_kind_t</code>.
*/
- public final class Kind
+ public enum Kind
{
/**
* Attempting to change text or props.
*/
- public static final int text = 0;
+ text,
/**
* Attempting to add object.
*/
- public static final int property = 1;
+ property;
}
/**
- * Poor man's enum for <code>svn_wc_conflict_action_t</code>.
+ * Rich man's enum for <code>svn_wc_conflict_action_t</code>.
*/
- public final class Action
+ public enum Action
{
/**
* Attempting to change text or props.
*/
- public static final int edit = 0;
+ edit,
/**
* Attempting to add object.
*/
- public static final int add = 1;
+ add,
/**
* Attempting to delete object.
*/
- public static final int delete = 2;
+ delete;
}
/**
- * Poor man's enum for <code>svn_wc_conflict_reason_t</code>.
+ * Rich man's enum for <code>svn_wc_conflict_reason_t</code>.
*/
- public final class Reason
+ public enum Reason
{
/**
* Local edits are already present.
*/
- public static final int edited = 0;
+ edited,
/**
* Another object is in the way.
*/
- public static final int obstructed = 1;
+ obstructed,
/**
* Object is already schedule-delete.
*/
- public static final int deleted = 2;
+ deleted,
/**
* Object is unknown or missing.
*/
- public static final int missing = 3;
+ missing,
/**
* Object is unversioned.
*/
- public static final int unversioned = 4;
+ unversioned,
/**
* Object is already added or schedule-add.
* @since New in 1.6.
*/
- public static final int added = 5;
+ added;
}
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java?rev=925230&r1=925229&r2=925230&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java Fri Mar 19 14:17:26 2010
@@ -119,12 +119,12 @@ public class ConflictDescriptor
public ConflictDescriptor(org.apache.subversion.javahl.ConflictDescriptor
aDesc)
{
- this(aDesc.getPath(), aDesc.getKind(),
+ this(aDesc.getPath(), aDesc.getKind().ordinal(),
NodeKind.fromApache(aDesc.getNodeKind()),
aDesc.getPropertyName(), aDesc.isBinary(), aDesc.getMIMEType(),
- aDesc.getAction(), aDesc.getReason(), aDesc.getOperation(),
- aDesc.getBasePath(), aDesc.getTheirPath(), aDesc.getMyPath(),
- aDesc.getMergedPath(),
+ aDesc.getAction().ordinal(), aDesc.getReason().ordinal(),
+ aDesc.getOperation(), aDesc.getBasePath(), aDesc.getTheirPath(),
+ aDesc.getMyPath(), aDesc.getMergedPath(),
new ConflictVersion(aDesc.getSrcLeftVersion()),
new ConflictVersion(aDesc.getSrcRightVersion()));
}