You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2014/01/07 11:45:44 UTC

svn commit: r1556175 - in /subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl: ./ native/ native/jniwrapper/ src/org/apache/subversion/javahl/ src/org/apache/subversion/javahl/callback/ src/org/apache/subversion/javahl/remote/ src/org...

Author: brane
Date: Tue Jan  7 10:45:43 2014
New Revision: 1556175

URL: http://svn.apache.org/r1556175
Log:
On the javahl-1.8-extensions branch: Synced JavaHL from trunk up to r1555720.

Modified:
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/EditorProxy.cpp
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/jniwrapper/jni_channel.cpp   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.cpp   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java   (contents, props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNReporter.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConfigEvent.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InheritedProplistCallback.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteStatus.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposFreezeAction.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/CommitEditor.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteFactory.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RetryOpenSession.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StateReporter.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DiffOptions.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRangeList.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/VersionExtended.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigImpl.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/PropLib.java   (props changed)
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
    subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java   (props changed)

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/
------------------------------------------------------------------------------
  Merged /subversion/trunk/subversion/bindings/javahl:r1545981-1555720

Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/EditorProxy.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/EditorProxy.cpp?rev=1556175&r1=1556174&r2=1556175&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/EditorProxy.cpp (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/EditorProxy.cpp Tue Jan  7 10:45:43 2014
@@ -34,6 +34,11 @@
 #include "svn_error.h"
 #include "svn_private_config.h"
 
+// Newstyle: stream wrapper
+#include <memory>
+#include "NativeStream.hpp"
+#include "jniwrapper/jni_stack.hpp"
+
 
 EditorProxy::EditorProxy(jobject jeditor, apr_pool_t* edit_pool,
                          const char* repos_root_url, const char* base_relpath,
@@ -125,6 +130,17 @@ get_editor_method(jmethodID& mid, const 
                  SVN_ERR_RA_SVN_EDIT_ABORTED);
   return SVN_NO_ERROR;
 }
+
+jobject wrap_input_stream(svn_stream_t* stream)
+{
+  std::auto_ptr<JavaHL::NativeInputStream>
+    wrapped(new JavaHL::NativeInputStream());
+  apr_pool_t* const wrapped_pool = wrapped->get_pool().getPool();
+  wrapped->set_stream(svn_stream_disown(stream, wrapped_pool));
+  const jobject jstream = wrapped->create_java_wrapper();
+  wrapped.release();
+  return jstream;
+}
 } // anonymous namespace
 
 svn_error_t*
@@ -188,11 +204,15 @@ EditorProxy::cb_add_file(void *baton,
   SVN_JNI_CATCH(,SVN_ERR_RA_SVN_EDIT_ABORTED);
   jobject jchecksum = CreateJ::Checksum(checksum);
   SVN_JNI_CATCH(,SVN_ERR_RA_SVN_EDIT_ABORTED);
-  jobject jcontents = NULL;     // FIXME: input stream proxy
+  jobject jcontents = NULL;
   SVN_JNI_CATCH(,SVN_ERR_RA_SVN_EDIT_ABORTED);
   jobject jprops = CreateJ::PropertyMap(props, scratch_pool);
   SVN_JNI_CATCH(,SVN_ERR_RA_SVN_EDIT_ABORTED);
 
+  if (contents != NULL)
+    SVN_JAVAHL_CATCH(Java::Env(), SVN_ERR_RA_SVN_EDIT_ABORTED,
+                     jcontents = wrap_input_stream(contents));
+
   SVN_JNI_CATCH(
       JNIUtil::getEnv()->CallVoidMethod(ep->m_jeditor, mid,
                                         jrelpath, jchecksum, jcontents,
@@ -331,11 +351,15 @@ EditorProxy::cb_alter_file(void *baton,
   SVN_JNI_CATCH(,SVN_ERR_RA_SVN_EDIT_ABORTED);
   jobject jchecksum = CreateJ::Checksum(checksum);
   SVN_JNI_CATCH(,SVN_ERR_RA_SVN_EDIT_ABORTED);
-  jobject jcontents = NULL;     // FIXME: input stream proxy
+  jobject jcontents = NULL;
   SVN_JNI_CATCH(,SVN_ERR_RA_SVN_EDIT_ABORTED);
   jobject jprops = CreateJ::PropertyMap(props, scratch_pool);
   SVN_JNI_CATCH(,SVN_ERR_RA_SVN_EDIT_ABORTED);
 
+  if (contents != NULL)
+    SVN_JAVAHL_CATCH(Java::Env(), SVN_ERR_RA_SVN_EDIT_ABORTED,
+                     jcontents = wrap_input_stream(contents));
+
   SVN_JNI_CATCH(
       JNIUtil::getEnv()->CallVoidMethod(ep->m_jeditor, mid,
                                         jrelpath, jlong(revision),

Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp?rev=1556175&r1=1556174&r2=1556175&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/JNIUtil.cpp Tue Jan  7 10:45:43 2014
@@ -253,12 +253,11 @@ bool JNIUtil::JNIGlobalInit(JNIEnv *env)
   svn_fs_initialize(g_pool); /* Avoid some theoretical issues */
   svn_ra_initialize(g_pool);
 
-  /* We shouldn't fill the JVMs memory with FS cache data unless explictly
-     requested. */
+  /* We shouldn't fill the JVMs memory with FS cache data unless
+     explictly requested. And we don't either, because the caches get
+     allocated outside the JVM heap. Duh. */
   {
     svn_cache_config_t settings = *svn_cache_config_get();
-    settings.cache_size = 0;
-    settings.file_handle_count = 0;
     settings.single_threaded = FALSE;
     svn_cache_config_set(&settings);
   }

Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp?rev=1556175&r1=1556174&r2=1556175&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.cpp Tue Jan  7 10:45:43 2014
@@ -1234,15 +1234,17 @@ void SVNClient::removeFromChangelists(Ta
 }
 
 void SVNClient::getChangelists(const char *rootPath,
-                               StringArray &changelists,
+                               StringArray *changelists,
                                svn_depth_t depth,
                                ChangelistCallback *callback)
 {
     SVN::Pool subPool(pool);
     svn_client_ctx_t *ctx = context.getContext(NULL, subPool);
 
-    SVN_JNI_ERR(svn_client_get_changelists(rootPath,
-                                           changelists.array(subPool),
+    const apr_array_header_t *cl_array = (!changelists ? NULL
+                                          : changelists->array(subPool));
+
+    SVN_JNI_ERR(svn_client_get_changelists(rootPath, cl_array,
                                            depth, ChangelistCallback::callback,
                                            callback, ctx, subPool.getPool()),
                 );

Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h?rev=1556175&r1=1556174&r2=1556175&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/SVNClient.h Tue Jan  7 10:45:43 2014
@@ -167,7 +167,7 @@ class SVNClient :public SVNBase
                        svn_depth_t depth, StringArray &changelists);
   void removeFromChangelists(Targets &srcPaths, svn_depth_t depth,
                              StringArray &changelists);
-  void getChangelists(const char *path, StringArray &changelists,
+  void getChangelists(const char *path, StringArray *changelists,
                       svn_depth_t depth, ChangelistCallback *callback);
   void status(const char *path, svn_depth_t depth, bool onServer,
               bool getAll, bool noIgnore, bool ignoreExternals,

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/jniwrapper/jni_channel.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1556175&r1=1556174&r2=1556175&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Tue Jan  7 10:45:43 2014
@@ -1771,8 +1771,9 @@ Java_org_apache_subversion_javahl_SVNCli
     return;
 
   ChangelistCallback callback(jchangelistCallback);
-  cl->getChangelists(root_path, changelists, EnumMapper::toDepth(jdepth),
-                     &callback);
+  cl->getChangelists(root_path,
+                     (jchangelists ? &changelists : NULL),
+                     EnumMapper::toDepth(jdepth), &callback);
 }
 
 JNIEXPORT void JNICALL

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1556175&r1=1556174&r2=1556175&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Tue Jan  7 10:45:43 2014
@@ -1223,7 +1223,8 @@ public interface ISVNClient
     /**
      * Recursively get the paths which belong to a changelist
      * @param rootPath    the wc path under which to check
-     * @param changelists the changelists to look under
+     * @param changelists the changelists to look under;
+     *     if <code>null</code>, all changelists will be considered.
      * @param depth       the depth to recurse
      * @param callback    the callback to return the changelists through
      */

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java?rev=1556175&r1=1556174&r2=1556175&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java Tue Jan  7 10:45:43 2014
@@ -89,6 +89,9 @@ public interface ISVNEditor
      * <b>Note:</b> It is not allowed to call a "delete" followed by
      * an "add" on the same path. Instead, an "add" with
      * <code>replacesRevision</code> set accordingly <em>must</em> be used.
+     * <p>
+     * <b>Note:</b> The <code>contents</code> stream's lifetime must not
+     *      extend beyond the scope of this function.
      *
      * @throws ClientException
      */
@@ -185,6 +188,9 @@ public interface ISVNEditor
      * This function allows <code>properties</code> to be
      * <code>null</code>, but the parameter is otherwise described by
      * #addFile().
+     * <p>
+     * <b>Note:</b> The <code>contents</code> stream's lifetime must not
+     *      extend beyond the scope of this function.
      *
      * @throws ClientException
      */

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNReporter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConfigEvent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InheritedProplistCallback.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteStatus.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposFreezeAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/CommitEditor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RetryOpenSession.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StateReporter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DiffOptions.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRangeList.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/VersionExtended.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/PropLib.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1556175&r1=1556174&r2=1556175&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Tue Jan  7 10:45:43 2014
@@ -2343,6 +2343,33 @@ public class BasicTests extends SVNTests
         assertTrue(clCallback.isEmpty());
     }
 
+    public void testGetAllChangelists() throws Throwable
+    {
+        OneTest thisTest = new OneTest();
+        final String cl1 = "changelist_one";
+        final String cl2 = "changelist_too";
+        MyChangelistCallback clCallback = new MyChangelistCallback();
+
+        String path = fileToSVNPath(new File(thisTest.getWCPath(), "iota"),
+                                    true);
+        Set<String> paths = new HashSet<String>(1);
+        paths.add(path);
+        client.addToChangelist(paths, cl1, Depth.infinity, null);
+        paths.remove(path);
+
+        path = fileToSVNPath(new File(thisTest.getWCPath(), "A/B/lambda"),
+                             true);
+        paths.add(path);
+        client.addToChangelist(paths, cl2, Depth.infinity, null);
+
+        client.getChangelists(thisTest.getWCPath(), null,
+                              Depth.infinity, clCallback);
+        Collection<String> changelists = clCallback.getChangelists();
+        assertEquals(2, changelists.size());
+        assertTrue("Contains " + cl1, changelists.contains(cl1));
+        assertTrue("Contains " + cl2, changelists.contains(cl2));
+    }
+
     /**
      * Helper method for testing mergeinfo retrieval.  Assumes
      * that <code>targetPath</code> has both merge history and
@@ -3890,8 +3917,13 @@ public class BasicTests extends SVNTests
     {
         private static final long serialVersionUID = 1L;
 
+        private HashSet<String> allChangelists = new HashSet<String>();
+
         public void doChangelist(String path, String changelist)
         {
+            if (changelist != null)
+                allChangelists.add(changelist);
+
             path = fileToSVNPath(new File(path), true);
             if (super.containsKey(path))
             {
@@ -3912,6 +3944,11 @@ public class BasicTests extends SVNTests
         {
             return super.get(path);
         }
+
+        public Collection<String> getChangelists()
+        {
+            return allChangelists;
+        }
     }
 
     private class MyInfoCallback implements InfoCallback {

Modified: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java?rev=1556175&r1=1556174&r2=1556175&view=diff
==============================================================================
--- subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java (original)
+++ subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java Tue Jan  7 10:45:43 2014
@@ -38,7 +38,9 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.security.MessageDigest;
@@ -668,14 +670,17 @@ public class SVNRemoteTests extends SVNT
         ISVNRemote session = getSession();
 
         byte[] ignoreval = "*.pyc\n.gitignore\n".getBytes(UTF8);
+        byte[] binaryval = new byte[]{(byte)0, (byte)13, (byte)255, (byte)8,
+                                      (byte)127, (byte)128, (byte)129};
         HashMap<String, byte[]> props = new HashMap<String, byte[]>();
         props.put("svn:ignore", ignoreval);
+        props.put("binaryprop", binaryval);
 
         CommitContext cc =
             (cb != null
-             ? new CommitContext(session, "Add svn:ignore",
+             ? new CommitContext(session, "Add svn:ignore and binaryprop",
                                  cb.getBase, cb.getProps, cb.getKind)
-             : new CommitContext(session, "Add svn:ignore"));
+             : new CommitContext(session, "Add svn:ignore and binaryprop"));
         try {
             cc.editor.alterDirectory("", 1, null, props);
             cc.editor.complete();
@@ -690,6 +695,11 @@ public class SVNRemoteTests extends SVNT
                                                     "svn:ignore",
                                                     Revision.HEAD,
                                                     Revision.HEAD)));
+        assertTrue(Arrays.equals(binaryval,
+                                 client.propertyGet(session.getSessionUrl(),
+                                                    "binaryprop",
+                                                    Revision.HEAD,
+                                                    Revision.HEAD)));
     }
 
     public void testEditorSetDirProps() throws Exception
@@ -1131,6 +1141,46 @@ public class SVNRemoteTests extends SVNT
         assertEquals(21, receiver.status.size());
     }
 
+    public void testTextchangeStatus() throws Exception
+    {
+        ISVNRemote session = getSession();
+
+        CommitMessageCallback cmcb = new CommitMessageCallback() {
+                public String getLogMessage(Set<CommitItem> x) {
+                    return "Content change on A/B/E/alpha";
+                }
+            };
+
+        File alpha = new File(thisTest.getWorkingCopy(), "A/B/E/alpha");
+        FileOutputStream writer = new FileOutputStream(alpha);
+        writer.write("changed alpha text".getBytes());
+        writer.close();
+        client.commit(thisTest.getWCPathSet(), Depth.infinity, false, false,
+                      null, null, cmcb, null);
+
+        RemoteStatusReceiver receiver = new RemoteStatusReceiver();
+        ISVNReporter rp = session.status(null, Revision.SVN_INVALID_REVNUM,
+                                         Depth.infinity, receiver);
+        try {
+            rp.setPath("", 1, Depth.infinity, false, null);
+            assertEquals(2, rp.finishReport());
+        } finally {
+            rp.dispose();
+        }
+
+        assertEquals(5, receiver.status.size());
+
+        // ra_serf returns the entries in inverted order compared to ra_local.
+        Collections.sort(receiver.status);
+        RemoteStatusReceiver.StatInfo mod = receiver.status.get(4);
+        assertEquals("A/B/E/alpha", mod.relpath);
+        assertEquals('F', mod.kind);
+        assertEquals("Text Changed", true, mod.textChanged);
+        assertEquals("Props Changed", false, mod.propsChanged);
+        assertEquals("Node Deleted", false, mod.deleted);
+        assertEquals(2, mod.info.getCommittedRevision());
+    }
+
     public void testPropchangeStatus() throws Exception
     {
         ISVNRemote session = getSession();
@@ -1161,9 +1211,9 @@ public class SVNRemoteTests extends SVNT
         RemoteStatusReceiver.StatInfo mod = receiver.status.get(3);
         assertEquals("A/D/gamma", mod.relpath);
         assertEquals('F', mod.kind);
-        assertEquals(false, mod.textChanged);
-        assertEquals(true, mod.propsChanged);
-        assertEquals(false, mod.deleted);
+        assertEquals("TextChanged", false, mod.textChanged);
+        assertEquals("Props Changed", true, mod.propsChanged);
+        assertEquals("Node Deleted", false, mod.deleted);
         assertEquals(2, mod.info.getCommittedRevision());
     }
 

Propchange: subversion/branches/javahl-1.8-extensions/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java
------------------------------------------------------------------------------
    svn:eol-style = native