Author: hwright
Date: Fri Mar 19 14:53:31 2010
New Revision: 925249

URL: http://svn.apache.org/viewvc?rev=925249&view=rev
Log:
JavaHL: Enum'ize the LockStatus values (which, coincidentally, don't have
anything to do with Lock's).

[ in subversion/bindings/javahl/ ]
* native/EnumMapper.h,
  native/EnumMapper.cpp
  (mapNotifyLockState): Update to return the proper enum object.

* native/NotifyCallback.cpp
  (onNotify): Treat the lock status as a proper object.

* src/org/apache/subversion/javahl/NotifyInformation.java
  (LockStatus): New.
  (NotifyInformation): Update lock state types.

* src/org/apache/subversion/javahl/LockStatus.java:
  Remove.

* src/org/tigris/subversion/javahl/NotifyInformation.java
  (NotifyInformation): Wrap the new lock state enum.

Removed:
    
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/LockStatus.java
Modified:
    subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
    subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
    subversion/trunk/subversion/bindings/javahl/native/NotifyCallback.cpp
    
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NotifyInformation.java
    
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.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=925249&r1=925248&r2=925249&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp Fri Mar 
19 14:53:31 2010
@@ -32,12 +32,8 @@
 #include "JNIStringHolder.h"
 #include "../include/org_apache_subversion_javahl_CommitItemStateFlags.h"
 #include "../include/org_apache_subversion_javahl_Operation.h"
-#include "../include/org_apache_subversion_javahl_LockStatus.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"
-#include "../include/org_apache_subversion_javahl_ConflictDescriptor_Action.h"
-#include "../include/org_apache_subversion_javahl_ConflictDescriptor_Reason.h"
 
 /**
  * Map a C commit state flag constant to the Java constant.
@@ -257,30 +253,26 @@ jobject EnumMapper::mapNodeKind(svn_node
 
 /**
  * Map a C notify lock state constant to the Java constant.
- * @param state     the C notify lock state constant
- * @returns the Java constant
  */
-jint EnumMapper::mapNotifyLockState(svn_wc_notify_lock_state_t state)
+jobject EnumMapper::mapNotifyLockState(svn_wc_notify_lock_state_t state)
 {
   switch(state)
     {
+    default:
     case svn_wc_notify_lock_state_inapplicable:
-      return org_apache_subversion_javahl_LockStatus_inapplicable;
+      return mapEnum(JAVA_PACKAGE"/NotifyInformation$LockStatus", 
"inapplicable");
 
     case svn_wc_notify_lock_state_unknown:
-      return org_apache_subversion_javahl_LockStatus_unknown;
+      return mapEnum(JAVA_PACKAGE"/NotifyInformation$LockStatus", "unknown");
 
     case svn_wc_notify_lock_state_unchanged:
-      return org_apache_subversion_javahl_LockStatus_unchanged;
+      return mapEnum(JAVA_PACKAGE"/NotifyInformation$LockStatus", "unchanged");
 
     case svn_wc_notify_lock_state_locked:
-      return org_apache_subversion_javahl_LockStatus_locked;
+      return mapEnum(JAVA_PACKAGE"/NotifyInformation$LockStatus", "locked");
 
     case svn_wc_notify_lock_state_unlocked:
-      return org_apache_subversion_javahl_LockStatus_unlocked;
-
-    default:
-      return org_apache_subversion_javahl_LockStatus_inapplicable;
+      return mapEnum(JAVA_PACKAGE"/NotifyInformation$LockStatus", "unlocked");
     }
 }
 

Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h?rev=925249&r1=925248&r2=925249&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h Fri Mar 19 
14:53:31 2010
@@ -50,7 +50,7 @@ class EnumMapper
   static jobject mapNotifyState(svn_wc_notify_state_t state);
   static jobject mapNotifyAction(svn_wc_notify_action_t action);
   static jobject mapNodeKind(svn_node_kind_t nodeKind);
-  static jint mapNotifyLockState(svn_wc_notify_lock_state_t state);
+  static jobject 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 jobject mapConflictKind(svn_wc_conflict_kind_t kind);

Modified: subversion/trunk/subversion/bindings/javahl/native/NotifyCallback.cpp
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/NotifyCallback.cpp?rev=925249&r1=925248&r2=925249&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/NotifyCallback.cpp 
(original)
+++ subversion/trunk/subversion/bindings/javahl/native/NotifyCallback.cpp Fri 
Mar 19 14:53:31 2010
@@ -150,7 +150,8 @@ NotifyCallback::onNotify(const svn_wc_no
                                "Ljava/lang/String;"
                                "L"JAVA_PACKAGE"/NotifyInformation$Status;"
                                "L"JAVA_PACKAGE"/NotifyInformation$Status;"
-                               "IJLjava/lang/String;"
+                               "L"JAVA_PACKAGE"/NotifyInformation$LockStatus;"
+                               "JLjava/lang/String;"
                                "L"JAVA_PACKAGE"/RevisionRange;"
                                "Ljava/lang/String;)V");
       if (JNIUtil::isJavaExceptionThrown() || midCT == 0)
@@ -190,7 +191,9 @@ NotifyCallback::onNotify(const svn_wc_no
   if (JNIUtil::isJavaExceptionThrown())
     return;
 
-  jint jLockState = EnumMapper::mapNotifyLockState(wcNotify->lock_state);
+  jobject jLockState = EnumMapper::mapNotifyLockState(wcNotify->lock_state);
+  if (JNIUtil::isJavaExceptionThrown())
+    return;
 
   jstring jChangelistName = JNIUtil::makeJString(wcNotify->changelist_name);
   if (JNIUtil::isJavaExceptionThrown())
@@ -226,6 +229,10 @@ NotifyCallback::onNotify(const svn_wc_no
   if (JNIUtil::isJavaExceptionThrown())
     return;
 
+  env->DeleteLocalRef(jLockState);
+  if (JNIUtil::isJavaExceptionThrown())
+    return;
+
   env->DeleteLocalRef(jPropState);
   if (JNIUtil::isJavaExceptionThrown())
     return;

Modified: 
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NotifyInformation.java
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NotifyInformation.java?rev=925249&r1=925248&r2=925249&view=diff
==============================================================================
--- 
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NotifyInformation.java
 (original)
+++ 
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NotifyInformation.java
 Fri Mar 19 14:53:31 2010
@@ -80,7 +80,7 @@ public class NotifyInformation extends E
     /**
      * The {...@link LockStatus} of the lock of the item.
      */
-    private int lockState;
+    private LockStatus lockState;
 
     /**
      * The revision of the item.
@@ -127,7 +127,7 @@ public class NotifyInformation extends E
     public NotifyInformation(String path, Action action, NodeKind kind,
                              String mimeType, Lock lock, String errMsg,
                              Status contentState, Status propState,
-                             int lockState, long revision,
+                             LockStatus lockState, long revision,
                              String changelistName, RevisionRange mergeRange,
                              String pathPrefix)
     {
@@ -213,7 +213,7 @@ public class NotifyInformation extends E
     /**
      * @return The {...@link LockStatus} of the lock of the item.
      */
-    public int getLockState()
+    public LockStatus getLockState()
     {
         return lockState;
     }
@@ -492,4 +492,37 @@ public class NotifyInformation extends E
             return description;
         }
     }
+
+    public enum LockStatus
+    {
+        /** does not make sense for this operation */
+        inapplicable    ("inapplicable"),
+
+        /** unknown lock state */
+        unknown         ("unknown"),
+
+        /** the lock change did not change */
+        unchanged       ("unchanged"),
+
+        /** the item was locked */
+        locked          ("locked"),
+
+        /** the item was unlocked */
+        unlocked        ("unlocked");
+
+        /**
+         * The description of the action.
+         */
+        private String description;
+
+        LockStatus(String description)
+        {
+            this.description = description;
+        }
+
+        public String toString()
+        {
+            return description;
+        }
+    }
 }

Modified: 
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java?rev=925249&r1=925248&r2=925249&view=diff
==============================================================================
--- 
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java
 (original)
+++ 
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java
 Fri Mar 19 14:53:31 2010
@@ -157,7 +157,7 @@ public class NotifyInformation extends E
              aInfo.getLock() == null ? null : new Lock(aInfo.getLock()),
              aInfo.getErrMsg(), fromAStatus(aInfo.getContentState()),
              fromAStatus(aInfo.getPropState()),
-             aInfo.getLockState(), aInfo.getRevision(),
+             aInfo.getLockState().ordinal(), aInfo.getRevision(),
              aInfo.getChangelistName(),
              aInfo.getMergeRange() == null ? null
                 : new RevisionRange(aInfo.getMergeRange()),


Reply via email to