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/05 23:57:17 UTC

svn commit: r1099981 - in /subversion/trunk/subversion/bindings/javahl: native/CreateJ.cpp src/org/apache/subversion/javahl/types/Status.java src/org/tigris/subversion/javahl/SVNClient.java src/org/tigris/subversion/javahl/Status.java

Author: hwright
Date: Thu May  5 21:57:16 2011
New Revision: 1099981

URL: http://svn.apache.org/viewvc?rev=1099981&view=rev
Log:
JavaHL: Move some backward compat code out of C++, and into Java, thus
eliminating

[ in subversion/bindings/javahl/ ]
* native/CreateJ.cpp
  (Status): Just return the status->conflicted flag, rather than trying to
    sort out what kind of conflict the node is in.

* src/org/apache/subversion/javahl/types/Status.java
  (isConflicted): New.
  (treeConflict, conflictDescriptor, conflictNew, conflictOld, conflictWorking):
    Remove, along with getters.
  (Status): Update constructor.

* src/org/tigris/subversion/javahl/SVNClient.java
  (Status): Update wrapper.

* src/org/tigris/subversion/javahl/Status.java
  (populateConflicts): New.
  (Status): Call helper function to populate conflicts from Info.

Modified:
    subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
    subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java
    subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
    subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.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=1099981&r1=1099980&r2=1099981&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp Thu May  5 21:57:16 2011
@@ -497,9 +497,7 @@ CreateJ::Status(svn_wc_context_t *wc_ctx
                              "L"JAVA_PACKAGE"/types/Status$Kind;"
                              "L"JAVA_PACKAGE"/types/Status$Kind;"
                              "L"JAVA_PACKAGE"/types/Status$Kind;"
-                             "ZZZL"JAVA_PACKAGE"/ConflictDescriptor;"
-                             "Ljava/lang/String;Ljava/lang/String;"
-                             "Ljava/lang/String;Ljava/lang/String;"
+                             "ZZZLjava/lang/String;"
                              "JZZLjava/lang/String;Ljava/lang/String;"
                              "Ljava/lang/String;"
                              "JL"JAVA_PACKAGE"/types/Lock;"
@@ -526,13 +524,9 @@ CreateJ::Status(svn_wc_context_t *wc_ctx
   jobject jRepositoryPropType = NULL;
   jboolean jIsLocked = JNI_FALSE;
   jboolean jIsCopied = JNI_FALSE;
+  jboolean jIsConflicted = JNI_FALSE;
   jboolean jIsSwitched = JNI_FALSE;
   jboolean jIsFileExternal = JNI_FALSE;
-  jboolean jIsTreeConflicted = JNI_FALSE;
-  jobject jConflictDescription = NULL;
-  jstring jConflictOld = NULL;
-  jstring jConflictNew = NULL;
-  jstring jConflictWorking = NULL;
   jstring jURLCopiedFrom = NULL;
   jlong jRevisionCopiedFrom =
     org_apache_subversion_javahl_types_Revision_SVN_INVALID_REVNUM;
@@ -560,6 +554,7 @@ CreateJ::Status(svn_wc_context_t *wc_ctx
           || text_status == svn_wc_status_conflicted)
         text_status = status->text_status;
 
+      jIsConflicted = (status->conflicted == 1) ? JNI_TRUE : JNI_FALSE;
       jTextType = EnumMapper::mapStatusKind(text_status);
       jPropType = EnumMapper::mapStatusKind(status->prop_status);
       jRepositoryTextType = EnumMapper::mapStatusKind(
@@ -571,45 +566,6 @@ CreateJ::Status(svn_wc_context_t *wc_ctx
       jIsSwitched = (status->switched == 1) ? JNI_TRUE: JNI_FALSE;
       jIsFileExternal = (status->file_external == 1) ? JNI_TRUE: JNI_FALSE;
 
-      /* Unparse the meaning of the conflicted flag. */
-      if (status->conflicted)
-        {
-          svn_boolean_t text_conflicted = FALSE;
-          svn_boolean_t prop_conflicted = FALSE;
-          svn_boolean_t tree_conflicted = FALSE;
-
-          SVN_JNI_ERR(svn_wc_conflicted_p3(&text_conflicted,
-                                           &prop_conflicted,
-                                           &tree_conflicted,
-                                           wc_ctx, local_abspath,
-                                           pool),
-                      NULL);
-
-          if (tree_conflicted)
-            {
-              jIsTreeConflicted = JNI_TRUE;
-
-              const svn_wc_conflict_description2_t *tree_conflict;
-              SVN_JNI_ERR(svn_wc__get_tree_conflict(&tree_conflict, wc_ctx,
-                                                    local_abspath, pool, pool),
-                          NULL);
-
-              jConflictDescription = CreateJ::ConflictDescriptor(tree_conflict);
-              if (JNIUtil::isJavaExceptionThrown())
-                POP_AND_RETURN_NULL;
-            }
-
-          if (text_conflicted)
-            {
-              /* ### Fetch conflict marker files, still handled via svn_wc_entry_t */
-            }
-
-          if (prop_conflicted)
-            {
-              /* ### Fetch conflict marker file, still handled via svn_wc_entry_t */
-            }
-        }
-
       jLock = CreateJ::Lock(status->repos_lock);
       if (JNIUtil::isJavaExceptionThrown())
         POP_AND_RETURN_NULL;
@@ -666,42 +622,10 @@ CreateJ::Status(svn_wc_context_t *wc_ctx
 
       if (status->versioned && status->conflicted)
         {
-          const char *conflict_new, *conflict_old, *conflict_wrk;
           const char *copyfrom_url;
           svn_revnum_t copyfrom_rev;
           svn_boolean_t is_copy_target;
 
-          /* This call returns SVN_ERR_ENTRY_NOT_FOUND for some hidden
-             cases, which we can just ignore here as hidden nodes
-             are not in text or property conflict. */
-          svn_error_t *err = svn_wc__node_get_conflict_info(&conflict_old,
-                                                            &conflict_new,
-                                                            &conflict_wrk,
-                                                            NULL,
-                                                            wc_ctx,
-                                                            local_abspath,
-                                                            pool, pool);
-
-          if (err)
-            {
-               if (err->apr_err == SVN_ERR_ENTRY_NOT_FOUND)
-                 svn_error_clear(err);
-               else
-                 SVN_JNI_ERR(err, NULL);
-            }
-
-          jConflictNew = JNIUtil::makeJString(conflict_new);
-          if (JNIUtil::isJavaExceptionThrown())
-            POP_AND_RETURN_NULL;
-
-          jConflictOld = JNIUtil::makeJString(conflict_old);
-          if (JNIUtil::isJavaExceptionThrown())
-            POP_AND_RETURN_NULL;
-
-          jConflictWorking= JNIUtil::makeJString(conflict_wrk);
-          if (JNIUtil::isJavaExceptionThrown())
-            POP_AND_RETURN_NULL;
-
           SVN_JNI_ERR(svn_wc__node_get_copyfrom_info(NULL, NULL,
                                                      &copyfrom_url,
                                                      &copyfrom_rev,
@@ -723,11 +647,10 @@ CreateJ::Status(svn_wc_context_t *wc_ctx
                                jLastChangedRevision, jLastChangedDate,
                                jLastCommitAuthor, jTextType, jPropType,
                                jRepositoryTextType, jRepositoryPropType,
-                               jIsLocked, jIsCopied, jIsTreeConflicted,
-                               jConflictDescription, jConflictOld, jConflictNew,
-                               jConflictWorking, jURLCopiedFrom,
-                               jRevisionCopiedFrom, jIsSwitched, jIsFileExternal,
-                               jLockToken, jLockOwner,
+                               jIsLocked, jIsCopied, jIsConflicted,
+                               jURLCopiedFrom, jRevisionCopiedFrom,
+                               jIsSwitched, jIsFileExternal, jLockToken,
+                               jLockOwner,
                                jLockComment, jLockCreationDate, jLock,
                                jOODLastCmtRevision, jOODLastCmtDate,
                                jOODKind, jOODLastCmtAuthor, jChangelist);

Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java?rev=1099981&r1=1099980&r2=1099981&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java Thu May  5 21:57:16 2011
@@ -112,14 +112,9 @@ public class Status implements java.io.S
     private boolean fileExternal;
 
     /**
-     * is this item in a tree conflicted state
+     * is this item in a conflicted state
      */
-    private boolean treeConflicted;
-
-    /**
-     * description of the tree conflict
-     */
-    private ConflictDescriptor conflictDescriptor;
+    private boolean isConflicted;
 
     /**
      * the file or directory status of base (See StatusKind)
@@ -132,24 +127,6 @@ public class Status implements java.io.S
     private Kind repositoryPropStatus;
 
     /**
-     * if there is a conflict, the filename of the new version
-     * from the repository
-     */
-    private String conflictNew;
-
-    /**
-     * if there is a conflict, the filename of the common base version
-     * from the repository
-     */
-    private String conflictOld;
-
-    /**
-     * if there is a conflict, the filename of the former working copy
-     * version
-     */
-    private String conflictWorking;
-
-    /**
      * if copied, the url of the copy source
      */
     private String urlCopiedFrom;
@@ -231,7 +208,7 @@ public class Status implements java.io.S
      * @param locked                if the item is locked (running or aborted
      *                              operation)
      * @param copied                if the item is copy
-     * @param treeConflicted        if the item is part of a tree conflict
+     * @param isConflicted          if the item is part of a conflict
      * @param conflictDescriptor    the description of the tree conflict
      * @param conflictOld           in case of conflict, the file name of the
      *                              the common base version
@@ -263,9 +240,7 @@ public class Status implements java.io.S
                   long lastChangedRevision, long lastChangedDate,
                   String lastCommitAuthor, Kind textStatus, Kind propStatus,
                   Kind repositoryTextStatus, Kind repositoryPropStatus,
-                  boolean locked, boolean copied, boolean treeConflicted,
-                  ConflictDescriptor conflictDescriptor, String conflictOld,
-                  String conflictNew, String conflictWorking,
+                  boolean locked, boolean copied, boolean isConflicted,
                   String urlCopiedFrom, long revisionCopiedFrom,
                   boolean switched, boolean fileExternal, String lockToken,
                   String lockOwner, String lockComment, long lockCreationDate,
@@ -284,13 +259,9 @@ public class Status implements java.io.S
         this.propStatus = propStatus;
         this.locked = locked;
         this.copied = copied;
-        this.treeConflicted = treeConflicted;
-        this.conflictDescriptor = conflictDescriptor;
+        this.isConflicted = isConflicted;
         this.repositoryTextStatus = repositoryTextStatus;
         this.repositoryPropStatus = repositoryPropStatus;
-        this.conflictOld = conflictOld;
-        this.conflictNew = conflictNew;
-        this.conflictWorking = conflictWorking;
         this.urlCopiedFrom = urlCopiedFrom;
         this.revisionCopiedFrom = revisionCopiedFrom;
         this.switched = switched;
@@ -438,35 +409,6 @@ public class Status implements java.io.S
     }
 
     /**
-     * Returns in case of conflict, the filename of the most recent repository
-     * version
-     * @return the filename of the most recent repository version
-     */
-    public String getConflictNew()
-    {
-        return conflictNew;
-    }
-
-    /**
-     * Returns in case of conflict, the filename of the common base version
-     * @return the filename of the common base version
-     */
-    public String getConflictOld()
-    {
-        return conflictOld;
-    }
-
-    /**
-     * Returns in case of conflict, the filename of the former working copy
-     * version
-     * @return the filename of the former working copy version
-     */
-    public String getConflictWorking()
-    {
-        return conflictWorking;
-    }
-
-    /**
      * Returns the URI to where the item might exist in the
      * repository.  We say "might" because the item might exist in
      * your working copy, but have been deleted from the repository.
@@ -739,19 +681,11 @@ public class Status implements java.io.S
     }
 
     /**
-     * @return the tree conflicted state
-     */
-    public boolean hasTreeConflict()
-    {
-        return treeConflicted;
-    }
-
-    /**
-     * @return the conflict descriptor for the tree conflict
+     * @return the conflicted state
      */
-    public ConflictDescriptor getConflictDescriptor()
+    public boolean isConflicted()
     {
-        return conflictDescriptor;
+        return isConflicted;
     }
 
     /**

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=1099981&r1=1099980&r2=1099981&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 Thu May  5 21:57:16 2011
@@ -195,7 +195,7 @@ public class SVNClient implements SVNCli
                                 : Arrays.asList(changelists),
         new org.apache.subversion.javahl.callback.StatusCallback () {
          public void doStatus(org.apache.subversion.javahl.types.Status aStatus)
-                    { callback.doStatus(new Status(aStatus)); }
+                    { callback.doStatus(new Status(aSVNClient, aStatus)); }
                 });
         }
         catch (org.apache.subversion.javahl.ClientException ex)

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=1099981&r1=1099980&r2=1099981&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 Thu May  5 21:57:16 2011
@@ -317,10 +317,67 @@ public class Status implements java.io.S
         this.changelist = changelist;
     }
 
+    private void
+    populateConflicts(org.apache.subversion.javahl.SVNClient aClient,
+                      String path)
+        throws org.apache.subversion.javahl.ClientException
+    {
+        class MyInfoCallback
+                implements org.apache.subversion.javahl.callback.InfoCallback
+        {
+          org.apache.subversion.javahl.types.Info info;
+
+          public void singleInfo(org.apache.subversion.javahl.types.Info aInfo)
+          {
+            info = aInfo;
+          }
+
+          public org.apache.subversion.javahl.types.Info getInfo()
+          {
+            return info;
+          }
+        }
+
+        MyInfoCallback callback = new MyInfoCallback();
+
+        aClient.info2(path,
+                      org.apache.subversion.javahl.types.Revision.HEAD,
+                      org.apache.subversion.javahl.types.Revision.HEAD,
+                      org.apache.subversion.javahl.types.Depth.empty, null,
+                      callback);
+
+        if (callback.getInfo() == null
+                || callback.getInfo().getConflicts() == null)
+            return;
+
+        for (org.apache.subversion.javahl.ConflictDescriptor conflict
+                : callback.getInfo().getConflicts())
+        {
+           switch (conflict.getKind())
+           {
+             case tree:
+               this.treeConflicted = true;
+               this.conflictDescriptor = new ConflictDescriptor(conflict);
+               break;
+
+             case text:
+               this.conflictOld = conflict.getBasePath();
+               this.conflictWorking = conflict.getMergedPath();
+               this.conflictNew = conflict.getMyPath();
+               break;
+
+             case property:
+               // Ignore
+               break;
+           }
+        }
+    }
+
     /**
      * A backward-compat wrapper.
      */
-    public Status(org.apache.subversion.javahl.types.Status aStatus)
+    public Status(org.apache.subversion.javahl.SVNClient aClient,
+                  org.apache.subversion.javahl.types.Status aStatus)
     {
         this(aStatus.getPath(), aStatus.getUrl(),
              NodeKind.fromApache(aStatus.getNodeKind()),
@@ -331,11 +388,8 @@ public class Status implements java.io.S
              fromAStatusKind(aStatus.getPropStatus()),
              fromAStatusKind(aStatus.getRepositoryTextStatus()),
              fromAStatusKind(aStatus.getRepositoryPropStatus()),
-             aStatus.isLocked(), aStatus.isCopied(), aStatus.hasTreeConflict(),
-             aStatus.getConflictDescriptor() == null ? null
-                : new ConflictDescriptor(aStatus.getConflictDescriptor()),
-             aStatus.getConflictOld(), aStatus.getConflictNew(),
-             aStatus.getConflictWorking(), aStatus.getUrlCopiedFrom(),
+             aStatus.isLocked(), aStatus.isCopied(), false,
+             null, null, null, null, aStatus.getUrlCopiedFrom(),
              aStatus.getRevisionCopiedFromNumber(), aStatus.isSwitched(),
              aStatus.isFileExternal(), aStatus.getLockToken(),
              aStatus.getLockOwner(), aStatus.getLockComment(),
@@ -346,6 +400,13 @@ public class Status implements java.io.S
              aStatus.getReposLastCmtDateMicros(),
              NodeKind.fromApache(aStatus.getReposKind()),
              aStatus.getReposLastCmtAuthor(), aStatus.getChangelist());
+
+        try {
+            if (aStatus.isConflicted())
+                populateConflicts(aClient, aStatus.getPath());
+        } catch (org.apache.subversion.javahl.ClientException ex) {
+            // Ignore
+        }
     }
 
     /**



Re: svn commit: r1099981 - in /subversion/trunk/subversion/bindings/javahl: native/CreateJ.cpp src/org/apache/subversion/javahl/types/Status.java src/org/tigris/subversion/javahl/SVNClient.java src/org/tigris/subversion/javahl/Status.java

Posted by Hyrum K Wright <hy...@hyrumwright.org>.
On Thursday, May 5, 2011, Greg Stein <gs...@gmail.com> wrote:
> On Thu, May 5, 2011 at 17:57,  <hw...@apache.org> wrote:
>> Author: hwright
>> Date: Thu May  5 21:57:16 2011
>> New Revision: 1099981
>>
>> URL: http://svn.apache.org/viewvc?rev=1099981&view=rev
>> Log:
>> JavaHL: Move some backward compat code out of C++, and into Java, thus
>> eliminating
>
> eliminating ... ?

the rest of the sentence. :)

Will fix in a bit.

-Hyrum

Re: svn commit: r1099981 - in /subversion/trunk/subversion/bindings/javahl: native/CreateJ.cpp src/org/apache/subversion/javahl/types/Status.java src/org/tigris/subversion/javahl/SVNClient.java src/org/tigris/subversion/javahl/Status.java

Posted by Greg Stein <gs...@gmail.com>.
On Thu, May 5, 2011 at 17:57,  <hw...@apache.org> wrote:
> Author: hwright
> Date: Thu May  5 21:57:16 2011
> New Revision: 1099981
>
> URL: http://svn.apache.org/viewvc?rev=1099981&view=rev
> Log:
> JavaHL: Move some backward compat code out of C++, and into Java, thus
> eliminating

eliminating ... ?

>...

Re: svn commit: r1099981 - in /subversion/trunk/subversion/bindings/javahl: native/CreateJ.cpp src/org/apache/subversion/javahl/types/Status.java src/org/tigris/subversion/javahl/SVNClient.java src/org/tigris/subversion/javahl/Status.java

Posted by Hyrum K Wright <hy...@hyrumwright.org>.
On Fri, May 6, 2011 at 9:23 AM, Mark Phippard <ma...@gmail.com> wrote:
> On Thu, May 5, 2011 at 5:57 PM,  <hw...@apache.org> wrote:
>> Author: hwright
>> Date: Thu May  5 21:57:16 2011
>> New Revision: 1099981
>>
>> URL: http://svn.apache.org/viewvc?rev=1099981&view=rev
>> Log:
>> JavaHL: Move some backward compat code out of C++, and into Java, thus
>> eliminating
>>
>> [ in subversion/bindings/javahl/ ]
>> * native/CreateJ.cpp
>>  (Status): Just return the status->conflicted flag, rather than trying to
>>    sort out what kind of conflict the node is in.
>>
>> * src/org/apache/subversion/javahl/types/Status.java
>>  (isConflicted): New.
>>  (treeConflict, conflictDescriptor, conflictNew, conflictOld, conflictWorking):
>>    Remove, along with getters.
>>  (Status): Update constructor.
>>
>> * src/org/tigris/subversion/javahl/SVNClient.java
>>  (Status): Update wrapper.
>>
>> * src/org/tigris/subversion/javahl/Status.java
>>  (populateConflicts): New.
>>  (Status): Call helper function to populate conflicts from Info.
>>
>> Modified:
>>    subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
>> 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=1099981&r1=1099980&r2=1099981&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 Thu May  5 21:57:16 2011
>> @@ -317,10 +317,67 @@ public class Status implements java.io.S
>>         this.changelist = changelist;
>>     }
>>
>> +    private void
>> +    populateConflicts(org.apache.subversion.javahl.SVNClient aClient,
>> +                      String path)
>> +        throws org.apache.subversion.javahl.ClientException
>> +    {
>> +        class MyInfoCallback
>> +                implements org.apache.subversion.javahl.callback.InfoCallback
>> +        {
>> +          org.apache.subversion.javahl.types.Info info;
>> +
>> +          public void singleInfo(org.apache.subversion.javahl.types.Info aInfo)
>> +          {
>> +            info = aInfo;
>> +          }
>> +
>> +          public org.apache.subversion.javahl.types.Info getInfo()
>> +          {
>> +            return info;
>> +          }
>> +        }
>> +
>> +        MyInfoCallback callback = new MyInfoCallback();
>> +
>> +        aClient.info2(path,
>> +                      org.apache.subversion.javahl.types.Revision.HEAD,
>> +                      org.apache.subversion.javahl.types.Revision.HEAD,
>> +                      org.apache.subversion.javahl.types.Depth.empty, null,
>> +                      callback);
>
> Should it be passing NULL for the two revision arguments here?  I
> thought if you provided Revision.HEAD this API will do a call to the
> server which is not wanted/needed here.

Ah yes, either null or WORKING.  null is easier, though, r1100234.

-Hyrum

Re: svn commit: r1099981 - in /subversion/trunk/subversion/bindings/javahl: native/CreateJ.cpp src/org/apache/subversion/javahl/types/Status.java src/org/tigris/subversion/javahl/SVNClient.java src/org/tigris/subversion/javahl/Status.java

Posted by Mark Phippard <ma...@gmail.com>.
On Thu, May 5, 2011 at 5:57 PM,  <hw...@apache.org> wrote:
> Author: hwright
> Date: Thu May  5 21:57:16 2011
> New Revision: 1099981
>
> URL: http://svn.apache.org/viewvc?rev=1099981&view=rev
> Log:
> JavaHL: Move some backward compat code out of C++, and into Java, thus
> eliminating
>
> [ in subversion/bindings/javahl/ ]
> * native/CreateJ.cpp
>  (Status): Just return the status->conflicted flag, rather than trying to
>    sort out what kind of conflict the node is in.
>
> * src/org/apache/subversion/javahl/types/Status.java
>  (isConflicted): New.
>  (treeConflict, conflictDescriptor, conflictNew, conflictOld, conflictWorking):
>    Remove, along with getters.
>  (Status): Update constructor.
>
> * src/org/tigris/subversion/javahl/SVNClient.java
>  (Status): Update wrapper.
>
> * src/org/tigris/subversion/javahl/Status.java
>  (populateConflicts): New.
>  (Status): Call helper function to populate conflicts from Info.
>
> Modified:
>    subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
> 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=1099981&r1=1099980&r2=1099981&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 Thu May  5 21:57:16 2011
> @@ -317,10 +317,67 @@ public class Status implements java.io.S
>         this.changelist = changelist;
>     }
>
> +    private void
> +    populateConflicts(org.apache.subversion.javahl.SVNClient aClient,
> +                      String path)
> +        throws org.apache.subversion.javahl.ClientException
> +    {
> +        class MyInfoCallback
> +                implements org.apache.subversion.javahl.callback.InfoCallback
> +        {
> +          org.apache.subversion.javahl.types.Info info;
> +
> +          public void singleInfo(org.apache.subversion.javahl.types.Info aInfo)
> +          {
> +            info = aInfo;
> +          }
> +
> +          public org.apache.subversion.javahl.types.Info getInfo()
> +          {
> +            return info;
> +          }
> +        }
> +
> +        MyInfoCallback callback = new MyInfoCallback();
> +
> +        aClient.info2(path,
> +                      org.apache.subversion.javahl.types.Revision.HEAD,
> +                      org.apache.subversion.javahl.types.Revision.HEAD,
> +                      org.apache.subversion.javahl.types.Depth.empty, null,
> +                      callback);

Should it be passing NULL for the two revision arguments here?  I
thought if you provided Revision.HEAD this API will do a call to the
server which is not wanted/needed here.

-- 
Thanks

Mark Phippard
http://markphip.blogspot.com/