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/17 17:53:10 UTC
svn commit: r924366 - 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: Wed Mar 17 16:53:10 2010
New Revision: 924366
URL: http://svn.apache.org/viewvc?rev=924366&view=rev
Log:
JavaHL: Enum-ize the StatusKind.
[ in subversion/bindings/javahl/ ]
* tests/org/apache/subversion/javahl/BasicTests.java:
Update tests to reference the new enum.
* tests/org/apache/subversion/javahl/WC.java
(setItemTextStatus, getItemPropStatus, textStatus, propStatus):
Update type for the new enum.
* native/StatusCallback.cpp
(createJavaStatus): Update for the new type, and be sure to release our
references later on.
* native/SVNClient.cpp:
Remove the StatusKind header.
* native/EnumMapper.h,
native/EnumMapper.cpp
(mapStatusKind): Update return type to return the status Kind object.
* src/org/apache/subversion/javahl/StatusKind.java:
Remove.
* src/org/apache/subversion/javahl/Status.java
(textStatus, propStatus, repositoryTextStatus, repositoryPropStatus):
Update types, along with the associated getters and setters.
(Kind): New enum, roughly copied from StatusKind.
* src/org/tigris/subversion/javahl/Status.java
(Status): Update backward compt wrapper.
Removed:
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/StatusKind.java
Modified:
subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp
subversion/trunk/subversion/bindings/javahl/native/StatusCallback.cpp
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Status.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp?rev=924366&r1=924365&r2=924366&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp Wed Mar 17 16:53:10 2010
@@ -35,7 +35,6 @@
#include "../include/org_apache_subversion_javahl_NodeKind.h"
#include "../include/org_apache_subversion_javahl_Operation.h"
#include "../include/org_apache_subversion_javahl_LockStatus.h"
-#include "../include/org_apache_subversion_javahl_StatusKind.h"
#include "../include/org_apache_subversion_javahl_Revision.h"
#include "../include/org_apache_subversion_javahl_ScheduleKind.h"
#include "../include/org_apache_subversion_javahl_ConflictDescriptor_Kind.h"
@@ -324,52 +323,52 @@ jint EnumMapper::mapScheduleKind(svn_wc_
* @param state the C wc state constant
* @returns the Java constant
*/
-jint EnumMapper::mapStatusKind(svn_wc_status_kind svnKind)
+jobject EnumMapper::mapStatusKind(svn_wc_status_kind svnKind)
{
switch(svnKind)
{
case svn_wc_status_none:
default:
- return org_apache_subversion_javahl_StatusKind_none;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "none");
case svn_wc_status_unversioned:
- return org_apache_subversion_javahl_StatusKind_unversioned;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "unversioned");
case svn_wc_status_normal:
- return org_apache_subversion_javahl_StatusKind_normal;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "normal");
case svn_wc_status_added:
- return org_apache_subversion_javahl_StatusKind_added;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "added");
case svn_wc_status_missing:
- return org_apache_subversion_javahl_StatusKind_missing;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "missing");
case svn_wc_status_deleted:
- return org_apache_subversion_javahl_StatusKind_deleted;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "deleted");
case svn_wc_status_replaced:
- return org_apache_subversion_javahl_StatusKind_replaced;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "replaced");
case svn_wc_status_modified:
- return org_apache_subversion_javahl_StatusKind_modified;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "modified");
case svn_wc_status_merged:
- return org_apache_subversion_javahl_StatusKind_merged;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "merged");
case svn_wc_status_conflicted:
- return org_apache_subversion_javahl_StatusKind_conflicted;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "conflicted");
case svn_wc_status_ignored:
- return org_apache_subversion_javahl_StatusKind_ignored;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "ignored");
case svn_wc_status_obstructed:
- return org_apache_subversion_javahl_StatusKind_obstructed;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "obstructed");
case svn_wc_status_external:
- return org_apache_subversion_javahl_StatusKind_external;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "external");
case svn_wc_status_incomplete:
- return org_apache_subversion_javahl_StatusKind_incomplete;
+ return mapEnum(JAVA_PACKAGE"/Status$Kind", "incomplete");
}
}
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h?rev=924366&r1=924365&r2=924366&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h Wed Mar 17 16:53:10 2010
@@ -51,7 +51,7 @@ class EnumMapper
static jobject mapNotifyAction(svn_wc_notify_action_t action);
static jint mapNodeKind(svn_node_kind_t nodeKind);
static jint mapNotifyLockState(svn_wc_notify_lock_state_t state);
- static jint mapStatusKind(svn_wc_status_kind svnKind);
+ 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);
Modified: subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp?rev=924366&r1=924365&r2=924366&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp Wed Mar 17 16:53:10 2010
@@ -64,7 +64,6 @@
#include "svn_private_config.h"
#include "../include/org_apache_subversion_javahl_Revision.h"
#include "../include/org_apache_subversion_javahl_NodeKind.h"
-#include "../include/org_apache_subversion_javahl_StatusKind.h"
#include "JNIStringHolder.h"
#include <vector>
#include <iostream>
Modified: subversion/trunk/subversion/bindings/javahl/native/StatusCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/StatusCallback.cpp?rev=924366&r1=924365&r2=924366&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/StatusCallback.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/StatusCallback.cpp Wed Mar 17 16:53:10 2010
@@ -31,7 +31,6 @@
#include "svn_time.h"
#include "../include/org_apache_subversion_javahl_NodeKind.h"
#include "../include/org_apache_subversion_javahl_Revision.h"
-#include "../include/org_apache_subversion_javahl_StatusKind.h"
/**
* Create a StatusCallback object
@@ -119,8 +118,12 @@ StatusCallback::createJavaStatus(const c
{
mid = env->GetMethodID(clazz, "<init>",
"(Ljava/lang/String;Ljava/lang/String;"
- "IJJJLjava/lang/String;IIIIZZZ"
- "L"JAVA_PACKAGE"/ConflictDescriptor;"
+ "IJJJLjava/lang/String;"
+ "L"JAVA_PACKAGE"/Status$Kind;"
+ "L"JAVA_PACKAGE"/Status$Kind;"
+ "L"JAVA_PACKAGE"/Status$Kind;"
+ "L"JAVA_PACKAGE"/Status$Kind;"
+ "ZZZL"JAVA_PACKAGE"/ConflictDescriptor;"
"Ljava/lang/String;Ljava/lang/String;"
"Ljava/lang/String;Ljava/lang/String;"
"JZZLjava/lang/String;Ljava/lang/String;"
@@ -141,10 +144,10 @@ StatusCallback::createJavaStatus(const c
org_apache_subversion_javahl_Revision_SVN_INVALID_REVNUM;
jlong jLastChangedDate = 0;
jstring jLastCommitAuthor = NULL;
- jint jTextType = org_apache_subversion_javahl_StatusKind_none;
- jint jPropType = org_apache_subversion_javahl_StatusKind_none;
- jint jRepositoryTextType = org_apache_subversion_javahl_StatusKind_none;
- jint jRepositoryPropType = org_apache_subversion_javahl_StatusKind_none;
+ jobject jTextType = NULL;
+ jobject jPropType = NULL;
+ jobject jRepositoryTextType = NULL;
+ jobject jRepositoryPropType = NULL;
jboolean jIsLocked = JNI_FALSE;
jboolean jIsCopied = JNI_FALSE;
jboolean jIsSwitched = JNI_FALSE;
@@ -280,6 +283,34 @@ StatusCallback::createJavaStatus(const c
if (JNIUtil::isJavaExceptionThrown())
return NULL;
+ if (jTextType != NULL)
+ {
+ env->DeleteLocalRef(jTextType);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ }
+
+ if (jPropType != NULL)
+ {
+ env->DeleteLocalRef(jPropType);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ }
+
+ if (jRepositoryTextType != NULL)
+ {
+ env->DeleteLocalRef(jRepositoryTextType);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ }
+
+ if (jRepositoryPropType != NULL)
+ {
+ env->DeleteLocalRef(jRepositoryPropType);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ }
+
env->DeleteLocalRef(jConflictNew);
if (JNIUtil::isJavaExceptionThrown())
return NULL;
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Status.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Status.java?rev=924366&r1=924365&r2=924366&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Status.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Status.java Wed Mar 17 16:53:10 2010
@@ -81,12 +81,12 @@ public class Status implements java.io.S
/**
* the file or directory status (See StatusKind)
*/
- private int textStatus;
+ private Kind textStatus;
/**
* the status of the properties (See StatusKind)
*/
- private int propStatus;
+ private Kind propStatus;
/**
* flag is this item is locked locally by subversion
@@ -124,12 +124,12 @@ public class Status implements java.io.S
/**
* the file or directory status of base (See StatusKind)
*/
- private int repositoryTextStatus;
+ private Kind repositoryTextStatus;
/**
* the status of the properties base (See StatusKind)
*/
- private int repositoryPropStatus;
+ private Kind repositoryPropStatus;
/**
* if there is a conflict, the filename of the new version
@@ -271,8 +271,8 @@ public class Status implements java.io.S
*/
public Status(String path, String url, int nodeKind, long revision,
long lastChangedRevision, long lastChangedDate,
- String lastCommitAuthor, int textStatus, int propStatus,
- int repositoryTextStatus, int repositoryPropStatus,
+ String lastCommitAuthor, Kind textStatus, Kind propStatus,
+ Kind repositoryTextStatus, Kind repositoryPropStatus,
boolean locked, boolean copied, boolean treeConflicted,
ConflictDescriptor conflictDescriptor, String conflictOld,
String conflictNew, String conflictWorking,
@@ -378,7 +378,7 @@ public class Status implements java.io.S
* Returns the status of the item (See StatusKind)
* @return file status property enum of the "textual" component.
*/
- public int getTextStatus()
+ public Kind getTextStatus()
{
return textStatus;
}
@@ -389,14 +389,14 @@ public class Status implements java.io.S
*/
public String getTextStatusDescription()
{
- return Kind.getDescription(textStatus);
+ return textStatus.toString();
}
/**
* Returns the status of the properties (See Status Kind)
* @return file status property enum of the "property" component.
*/
- public int getPropStatus()
+ public Kind getPropStatus()
{
return propStatus;
}
@@ -407,7 +407,7 @@ public class Status implements java.io.S
*/
public String getPropStatusDescription()
{
- return Kind.getDescription(propStatus);
+ return propStatus.toString();
}
/**
@@ -415,7 +415,7 @@ public class Status implements java.io.S
* @return file status property enum of the "textual" component in the
* repository.
*/
- public int getRepositoryTextStatus()
+ public Kind getRepositoryTextStatus()
{
return repositoryTextStatus;
}
@@ -425,7 +425,7 @@ public class Status implements java.io.S
* @return file status property enum of the "property" component im the
* repository.
*/
- public int getRepositoryPropStatus()
+ public Kind getRepositoryPropStatus()
{
return repositoryPropStatus;
}
@@ -570,7 +570,7 @@ public class Status implements java.io.S
*/
public boolean isManaged()
{
- int status = getTextStatus();
+ Kind status = getTextStatus();
return (status != Status.Kind.unversioned &&
status != Status.Kind.none &&
status != Status.Kind.ignored);
@@ -781,61 +781,79 @@ public class Status implements java.io.S
}
/**
+ * Converts microseconds since the epoch to a Date object.
+ *
+ * @param micros Microseconds since the epoch.
+ * @return A Date object, or <code>null</code> if
+ * <code>micros</code> was zero.
+ */
+ private static Date microsecondsToDate(long micros)
+ {
+ return (micros == 0 ? null : new Date(micros / 1000));
+ }
+
+ /**
* class for kind status of the item or its properties
* the constants are defined in the interface StatusKind for building
* reasons
*/
- public static final class Kind implements StatusKind
+ public enum Kind
{
+ /** does not exist */
+ none ("non-svn"),
+
+ /** exists, but uninteresting */
+ normal ("normal"),
+
+ /** text or props have been modified */
+ modified ("modified"),
+
+ /** is scheduled for additon */
+ added ("added"),
+
+ /** scheduled for deletion */
+ deleted ("deleted"),
+
+ /** is not a versioned thing in this wc */
+ unversioned ("unversioned"),
+
+ /** under v.c., but is missing */
+ missing ("missing"),
+
+ /** was deleted and then re-added */
+ replaced ("replaced"),
+
+ /** local mods received repos mods */
+ merged ("merged"),
+
+ /** local mods received conflicting repos mods */
+ conflicted ("conflicted"),
+
+ /** an unversioned resource is in the way of the versioned resource */
+ obstructed ("obstructed"),
+
+ /** a resource marked as ignored */
+ ignored ("ignored"),
+
+ /** a directory doesn't contain a complete entries list */
+ incomplete ("incomplete"),
+
+ /** an unversioned path populated by an svn:externals property */
+ external ("external");
+
/**
- * Returns the textual representation of the status
- * @param kind of status
- * @return english status
+ * The description of the action.
*/
- public static final String getDescription(int kind)
+ private String description;
+
+ Kind(String description)
{
- switch (kind)
- {
- case StatusKind.none:
- return "non-svn";
- case StatusKind.normal:
- return "normal";
- case StatusKind.added:
- return "added";
- case StatusKind.missing:
- return "missing";
- case StatusKind.deleted:
- return "deleted";
- case StatusKind.replaced:
- return "replaced";
- case StatusKind.modified:
- return "modified";
- case StatusKind.merged:
- return "merged";
- case StatusKind.conflicted:
- return "conflicted";
- case StatusKind.ignored:
- return "ignored";
- case StatusKind.incomplete:
- return "incomplete";
- case StatusKind.external:
- return "external";
- case StatusKind.unversioned:
- default:
- return "unversioned";
- }
+ this.description = description;
}
- }
- /**
- * Converts microseconds since the epoch to a Date object.
- *
- * @param micros Microseconds since the epoch.
- * @return A Date object, or <code>null</code> if
- * <code>micros</code> was zero.
- */
- private static Date microsecondsToDate(long micros)
- {
- return (micros == 0 ? null : new Date(micros / 1000));
+ public String toString()
+ {
+ return description;
+ }
}
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.java?rev=924366&r1=924365&r2=924366&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.java Wed Mar 17 16:53:10 2010
@@ -326,9 +326,14 @@ public class Status implements java.io.S
aStatus.getRevisionNumber(),
aStatus.getLastChangedRevisionNumber(),
aStatus.getLastChangedDateMicros(), aStatus.getLastCommitAuthor(),
- aStatus.getTextStatus(), aStatus.getPropStatus(),
- aStatus.getRepositoryTextStatus(),
- aStatus.getRepositoryPropStatus(),
+ aStatus.getTextStatus() == null ? StatusKind.none
+ : aStatus.getTextStatus().ordinal(),
+ aStatus.getPropStatus() == null ? StatusKind.none
+ : aStatus.getPropStatus().ordinal(),
+ aStatus.getRepositoryTextStatus() == null ? StatusKind.none
+ : aStatus.getRepositoryTextStatus().ordinal(),
+ aStatus.getRepositoryPropStatus() == null ? StatusKind.none
+ : aStatus.getRepositoryPropStatus().ordinal(),
aStatus.isLocked(), aStatus.isCopied(), aStatus.hasTreeConflict(),
aStatus.getConflictDescriptor() == null ? null
: new ConflictDescriptor(aStatus.getConflictDescriptor()),
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=924366&r1=924365&r2=924366&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 Wed Mar 17 16:53:10 2010
@@ -3228,8 +3228,8 @@ public class BasicTests extends SVNTests
// we expect the tree conflict to turn the existing item into
// a scheduled-add with history. We expect the modifications in
// the local file to have been copied to the new file.
- tcTest.getWc().setItemTextStatus("A/B/E/alpha", StatusKind.added);
- tcTest.getWc().setItemTextStatus("A/B/F/alpha", StatusKind.modified);
+ tcTest.getWc().setItemTextStatus("A/B/E/alpha", Status.Kind.added);
+ tcTest.getWc().setItemTextStatus("A/B/F/alpha", Status.Kind.modified);
// check the status of the working copy of the tc test
tcTest.checkStatus();
@@ -3310,8 +3310,8 @@ public class BasicTests extends SVNTests
Status[] secondWCStatus = statusCallback.getStatusArray();
if (!(secondWCStatus.length == 1 &&
secondWCStatus[0].getPath().endsWith("A/B/lambda") &&
- secondWCStatus[0].getTextStatus() == StatusKind.modified &&
- secondWCStatus[0].getPropStatus() == StatusKind.none))
+ secondWCStatus[0].getTextStatus() == Status.Kind.modified &&
+ secondWCStatus[0].getPropStatus() == Status.Kind.none))
{
fail("Unexpected WC status after co with " +
"unversioned obstructions");
Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java?rev=924366&r1=924365&r2=924366&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java (original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java Wed Mar 17 16:53:10 2010
@@ -109,9 +109,9 @@ public class WC
* @param path the path, where the status is set
* @param status the new text status
*/
- public void setItemTextStatus(String path, int status)
+ public void setItemTextStatus(String path, Status.Kind status)
{
- ((Item) items.get(path)).textStatus = status;
+ items.get(path).textStatus = status;
}
/**
@@ -119,9 +119,9 @@ public class WC
* @param path the path, where the status is set
* @param status the new property status
*/
- public void setItemPropStatus(String path, int status)
+ public void setItemPropStatus(String path, Status.Kind status)
{
- ((Item) items.get(path)).propStatus = status;
+ items.get(path).propStatus = status;
}
/**
@@ -553,12 +553,12 @@ public class WC
/**
* the text (content) status of the item
*/
- int textStatus = Status.Kind.normal;
+ Status.Kind textStatus = Status.Kind.normal;
/**
* the property status of the item.
*/
- int propStatus = Status.Kind.none;
+ Status.Kind propStatus = Status.Kind.none;
/**
* the expected revision number. -1 means do not check.