subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From br...@apache.org
Subject svn commit: r1656719 [1/3] - in /subversion/branches/dump-load-cross-check: ./ notes/ subversion/bindings/javahl/native/ subversion/bindings/javahl/native/jniwrapper/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/java...
Date Tue, 03 Feb 2015 13:15:19 GMT
Author: brane
Date: Tue Feb  3 13:15:17 2015
New Revision: 1656719

URL: http://svn.apache.org/r1656719
Log:
On the dump-load-cross-check branch: Sync with trunk up to r1656714.

Added:
    subversion/branches/dump-load-cross-check/subversion/include/svn_x509.h
      - copied unchanged from r1656714, subversion/trunk/subversion/include/svn_x509.h
    subversion/branches/dump-load-cross-check/subversion/libsvn_subr/x509.h
      - copied unchanged from r1656714, subversion/trunk/subversion/libsvn_subr/x509.h
    subversion/branches/dump-load-cross-check/subversion/libsvn_subr/x509info.c
      - copied unchanged from r1656714, subversion/trunk/subversion/libsvn_subr/x509info.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_subr/x509parse.c
      - copied unchanged from r1656714, subversion/trunk/subversion/libsvn_subr/x509parse.c
    subversion/branches/dump-load-cross-check/subversion/tests/libsvn_subr/x509-test.c
      - copied unchanged from r1656714, subversion/trunk/subversion/tests/libsvn_subr/x509-test.c
    subversion/branches/dump-load-cross-check/tools/dev/x509-parser.c
      - copied unchanged from r1656714, subversion/trunk/tools/dev/x509-parser.c
Modified:
    subversion/branches/dump-load-cross-check/   (props changed)
    subversion/branches/dump-load-cross-check/LICENSE
    subversion/branches/dump-load-cross-check/NOTICE
    subversion/branches/dump-load-cross-check/build.conf
    subversion/branches/dump-load-cross-check/notes/   (props changed)
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.hpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CommitMessage.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CreateJ.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.h
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.h
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/Prompter.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.h
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/AuthnCallback.java
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java
    subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
    subversion/branches/dump-load-cross-check/subversion/bindings/swig/core.i
    subversion/branches/dump-load-cross-check/subversion/bindings/swig/ruby/test/test_client.rb
    subversion/branches/dump-load-cross-check/subversion/include/private/svn_ra_private.h
    subversion/branches/dump-load-cross-check/subversion/include/private/svn_utf_private.h
    subversion/branches/dump-load-cross-check/subversion/include/svn_client.h
    subversion/branches/dump-load-cross-check/subversion/include/svn_config.h
    subversion/branches/dump-load-cross-check/subversion/include/svn_diff.h
    subversion/branches/dump-load-cross-check/subversion/include/svn_error_codes.h
    subversion/branches/dump-load-cross-check/subversion/include/svn_ra.h
    subversion/branches/dump-load-cross-check/subversion/include/svn_version.h
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/client.h
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/copy.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/ctx.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/diff.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/externals.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/import.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/mtcc.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/prop_commands.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/ra.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_client/util.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_fs_fs/dag.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_fs_fs/dag.h
    subversion/branches/dump-load-cross-check/subversion/libsvn_fs_fs/tree.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_fs_x/   (props changed)
    subversion/branches/dump-load-cross-check/subversion/libsvn_ra/ra_loader.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_ra_serf/get_file.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_ra_serf/options.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/dump-load-cross-check/subversion/libsvn_ra_serf/serf.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_ra_serf/util.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_subr/ssl_server_trust_providers.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_subr/sysinfo.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_subr/utf.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_subr/utf8proc.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_subr/win32_xlate.c
    subversion/branches/dump-load-cross-check/subversion/libsvn_subr/win32_xlate.h
    subversion/branches/dump-load-cross-check/subversion/mod_dav_svn/repos.c
    subversion/branches/dump-load-cross-check/subversion/svn/auth-cmd.c
    subversion/branches/dump-load-cross-check/subversion/svn/svn.c
    subversion/branches/dump-load-cross-check/subversion/svnserve/serve.c
    subversion/branches/dump-load-cross-check/subversion/tests/cmdline/blame_tests.py
    subversion/branches/dump-load-cross-check/subversion/tests/cmdline/commit_tests.py
    subversion/branches/dump-load-cross-check/subversion/tests/cmdline/redirect_tests.py
    subversion/branches/dump-load-cross-check/subversion/tests/libsvn_fs/fs-test.c
    subversion/branches/dump-load-cross-check/subversion/tests/libsvn_fs_x/   (props changed)
    subversion/branches/dump-load-cross-check/subversion/tests/libsvn_subr/dirent_uri-test.c
    subversion/branches/dump-load-cross-check/subversion/tests/libsvn_subr/utf-test.c

Propchange: subversion/branches/dump-load-cross-check/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb  3 13:15:17 2015
@@ -67,6 +67,7 @@
 /subversion/branches/revprop-caching-ng:1620597,1620599
 /subversion/branches/revprop-packing:1143907,1143971,1143997,1144017,1144499,1144568,1146145
 /subversion/branches/subtree-mergeinfo:876734-878766
+/subversion/branches/svn-auth-x509:1603509-1655900
 /subversion/branches/svn-mergeinfo-enhancements:870119-870195,870197-870288
 /subversion/branches/svn-patch-improvements:918519-934609
 /subversion/branches/svn_mutex:1141683-1182099
@@ -85,4 +86,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1654853-1655065
+/subversion/trunk:1654853-1656714

Modified: subversion/branches/dump-load-cross-check/LICENSE
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/LICENSE?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/LICENSE (original)
+++ subversion/branches/dump-load-cross-check/LICENSE Tue Feb  3 13:15:17 2015
@@ -332,3 +332,37 @@ For the (modified) utf8proc library in s
   Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be
   registered in some jurisdictions. All other trademarks and registered
   trademarks mentioned herein are the property of their respective owners.
+
+For the files subversion/libsvn_subr/x509parse.c and
+subversion/libsvn_subr/x509.h
+
+ *  Based on XySSL: Copyright (C) 2006-2008   Christophe Devine
+ *
+ *  Copyright (C) 2009  Paul Bakker <polarssl_maintainer at polarssl dot org>
+ *
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *    * Neither the names of PolarSSL or XySSL nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Modified: subversion/branches/dump-load-cross-check/NOTICE
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/NOTICE?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/NOTICE (original)
+++ subversion/branches/dump-load-cross-check/NOTICE Tue Feb  3 13:15:17 2015
@@ -22,4 +22,7 @@ modifications by Spyglass Inc., Carnegie
 Bell Communications Research, Inc (Bellcore).
 
 This product includes software developed by Public Software Group e. V.
-under a permissive license, see LICENSE.
\ No newline at end of file
+under a permissive license, see LICENSE.
+
+This software contains code derived from TropicSSL under a BSD 3-Clause
+license, see LICENSE.

Modified: subversion/branches/dump-load-cross-check/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/build.conf?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/build.conf (original)
+++ subversion/branches/dump-load-cross-check/build.conf Tue Feb  3 13:15:17 2015
@@ -372,7 +372,7 @@ msvc-export =
         svn_error.h svn_hash.h svn_io.h svn_iter.h svn_md5.h svn_mergeinfo.h 
         svn_nls.h svn_opt.h svn_path.h svn_pools.h svn_props.h svn_quoprint.h 
         svn_sorts.h svn_string.h svn_subst.h svn_time.h svn_types.h svn_user.h
-        svn_utf.h svn_version.h svn_xml.h 
+        svn_utf.h svn_version.h svn_xml.h svn_x509.h
         private\svn_atomic.h private\svn_cache.h private\svn_cmdline_private.h
         private\svn_debug.h private\svn_error_private.h private\svn_fspath.h
         private\svn_log.h private\svn_mergeinfo_private.h
@@ -1124,6 +1124,15 @@ sources = translate-test.c
 install = test
 libs = libsvn_test libsvn_subr apriconv apr
 
+[x509-test]
+description = Test x509 parser
+type = exe
+path = subversion/tests/libsvn_subr
+sources = x509-test.c
+install = test
+libs = libsvn_test libsvn_subr apriconv apr
+
+
 # ----------------------------------------------------------------------------
 # Tests for libsvn_delta
 
@@ -1490,7 +1499,7 @@ libs = __ALL__
        conflict-data-test db-test pristine-store-test entries-compat-test
        op-depth-test dirent_uri-test wc-queries-test wc-test
        auth-test
-       parse-diff-test
+       parse-diff-test x509-test
 
 [__MORE__]
 type = project
@@ -1610,3 +1619,10 @@ type = exe
 path = tools/dev/svnraisetreeconflict
 libs = libsvn_wc libsvn_subr apriconv apr
 install = tools
+
+[x509-parser]
+type = exe
+path = tools/dev
+sources = x509-parser.c
+install = tools
+libs = libsvn_subr apr

Propchange: subversion/branches/dump-load-cross-check/notes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb  3 13:15:17 2015
@@ -25,6 +25,7 @@
 /subversion/branches/ra_serf-digest-authn/notes:875693-876404
 /subversion/branches/reintegrate-improvements/notes:873853-874164
 /subversion/branches/subtree-mergeinfo/notes:876734-878766
+/subversion/branches/svn-auth-x509/notes:1603509-1655900
 /subversion/branches/svn-mergeinfo-enhancements/notes:870119-870195,870197-870288
 /subversion/branches/svn-patch-improvements/notes:918519-934609
 /subversion/branches/svnpatch-diff/notes:865738-876477
@@ -36,3 +37,4 @@
 /subversion/branches/tc_url_rev/notes:874351-874483
 /subversion/branches/tree-conflicts/notes:868291-873154
 /subversion/branches/tree-conflicts-notify/notes:873926-874008
+/subversion/trunk/notes:1654853-1656714

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.cpp Tue Feb  3 13:15:17 2015
@@ -21,10 +21,19 @@
  * @endcopyright
  */
 
+#include "svn_base64.h"
+#include "svn_x509.h"
+
 #include "jniwrapper/jni_stack.hpp"
+#include "jniwrapper/jni_exception.hpp"
+#include "jniwrapper/jni_string.hpp"
+#include "jniwrapper/jni_array.hpp"
+#include "jniwrapper/jni_list.hpp"
 
 #include "AuthnCallback.hpp"
 
+#include "svn_private_config.h"
+
 namespace JavaHL {
 
 // Class JavaHL::AuthnCallback
@@ -176,30 +185,75 @@ AuthnCallback::SSLServerCertInfo::ClassI
   : ::Java::Object::ClassImpl(env, cls),
     m_mid_ctor(env.GetMethodID(cls, "<init>",
                                "(Ljava/lang/String;"
-                               "Ljava/lang/String;"
-                               "Ljava/lang/String;"
-                               "Ljava/lang/String;"
-                               "Ljava/lang/String;"
+                               "Ljava/lang/String;JJ[B"
+                               "Ljava/util/List;"
                                "Ljava/lang/String;)V"))
 {}
 
 AuthnCallback::SSLServerCertInfo::ClassImpl::~ClassImpl() {}
 
 AuthnCallback::SSLServerCertInfo::SSLServerCertInfo(
-    ::Java::Env env,
-    const ::Java::String& hostname,
-    const ::Java::String& fingerprint,
-    const ::Java::String& validFrom,
-    const ::Java::String& validUntil,
-    const ::Java::String& issuer,
-    const ::Java::String& der)
+    ::Java::Env env, const char* ascii_cert)
   : ::Java::Object(env,
                    ::Java::ClassCache::get_authn_ssl_server_cert_info(env))
 {
+  SVN::Pool pool;
+
+  /* Convert header-less PEM to DER by undoing base64 encoding. */
+  const svn_string_t cert_string = { ascii_cert, strlen(ascii_cert) };
+  const svn_string_t* der = svn_base64_decode_string(&cert_string,
+                                                     pool.getPool());
+
+  svn_x509_certinfo_t *certinfo;
+  SVN_JAVAHL_CHECK(env, svn_x509_parse_cert(&certinfo, der->data, der->len,
+                                            pool.getPool(), pool.getPool()));
+
+  const ::Java::String subject(
+      env, svn_x509_certinfo_get_subject(certinfo, pool.getPool()));
+  const ::Java::String issuer(
+      env, svn_x509_certinfo_get_issuer(certinfo, pool.getPool()));
+  const ::Java::String cert(env, ascii_cert);
+  const jlong valid_from =
+    (jlong(svn_x509_certinfo_get_valid_from(certinfo)) + 500) / 1000;
+  const jlong valid_to =
+    (jlong(svn_x509_certinfo_get_valid_to(certinfo)) + 500) / 1000;
+
+  const svn_checksum_t* digest = svn_x509_certinfo_get_digest(certinfo);
+  jsize digest_size;
+  switch (digest->kind)
+    {
+    case svn_checksum_sha1:
+      digest_size = 160 / 8;
+      break;
+
+    case svn_checksum_md5:
+      digest_size = 128 / 8;
+      break;
+
+    default:
+      digest_size = 0;          // Initialize this to avoid compiler warnings
+      ::Java::IllegalArgumentException(env).raise(
+          _("Unknown certificate digest type"));
+    }
+  const ::Java::ByteArray fingerprint(env, digest->digest, digest_size);
+
+  jobject jhostnames = NULL;
+  const apr_array_header_t* hostnames =
+    svn_x509_certinfo_get_hostnames(certinfo);
+  if (hostnames)
+    {
+      ::Java::MutableList< ::Java::String> hn(env, hostnames->nelts);
+      for (int i = 0; i < hostnames->nelts; ++i)
+        hn.add(::Java::String(env, APR_ARRAY_IDX(hostnames, i, const char*)));
+      jhostnames = hn.get();
+    }
+
   set_this(env.NewObject(get_class(), impl().m_mid_ctor,
-                         hostname.get(), fingerprint.get(),
-                         validFrom.get(), validUntil.get(),
-                         issuer.get(), der.get()));
+                         subject.get(), issuer.get(),
+                         valid_from, valid_to,
+                         fingerprint.get(),
+                         jhostnames,
+                         cert.get()));
 }
 
 

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.hpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.hpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/AuthnCallback.hpp Tue Feb  3 13:15:17 2015
@@ -153,13 +153,7 @@ public:
     /**
      * Creates and initializes a wrapped object;
      */
-    explicit SSLServerCertInfo(::Java::Env env,
-                               const ::Java::String& hostname,
-                               const ::Java::String& fingerprint,
-                               const ::Java::String& validFrom,
-                               const ::Java::String& validUntil,
-                               const ::Java::String& issuer,
-                               const ::Java::String& der);
+    explicit SSLServerCertInfo(::Java::Env env, const char* ascii_cert);
 
   private:
     /**

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CommitMessage.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CommitMessage.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CommitMessage.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CommitMessage.cpp Tue Feb  3 13:15:17 2015
@@ -65,6 +65,7 @@ CommitMessage::getCommitMessage(const ch
                                 const apr_array_header_t *commit_items,
                                 apr_pool_t *pool)
 {
+  *log_msg = NULL;
   *tmp_file = NULL;
   JNIEnv *env = JNIUtil::getEnv();
 
@@ -93,6 +94,9 @@ CommitMessage::getCommitMessage(const ch
 
       jobject jitem = CreateJ::CommitItem(item);
 
+      if (!jitem)
+        return SVN_NO_ERROR; /* Exception thrown */
+
       // store the Java object into the array
       jitems.push_back(jitem);
     }
@@ -102,7 +106,7 @@ CommitMessage::getCommitMessage(const ch
                                                     midCallback,
                                                     CreateJ::Set(jitems));
   if (JNIUtil::isJavaExceptionThrown())
-    return SVN_NO_ERROR;
+    POP_AND_RETURN(SVN_NO_ERROR);
 
   if (jmessage != NULL)
     {

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CreateJ.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CreateJ.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/CreateJ.cpp Tue Feb  3 13:15:17 2015
@@ -71,7 +71,8 @@ CreateJ::ConflictDescriptor(const svn_wc
                               "Ljava/lang/String;Ljava/lang/String;"
                               "Ljava/lang/String;Ljava/lang/String;"
                               "L"JAVA_PACKAGE"/types/ConflictVersion;"
-                              "L"JAVA_PACKAGE"/types/ConflictVersion;)V");
+                              "L"JAVA_PACKAGE"/types/ConflictVersion;"
+                              "Ljava/lang/String;[B[B[B[B)V");
       if (JNIUtil::isJavaExceptionThrown() || ctor == 0)
         POP_AND_RETURN_NULL;
     }
@@ -118,6 +119,33 @@ CreateJ::ConflictDescriptor(const svn_wc
   jobject joperation = EnumMapper::mapOperation(desc->operation);
   if (JNIUtil::isJavaExceptionThrown())
     POP_AND_RETURN_NULL;
+  jstring jpropRejectAbspath = JNIUtil::makeJString(desc->prop_reject_abspath);
+  if (JNIUtil::isJavaExceptionThrown())
+    POP_AND_RETURN_NULL;
+  jbyteArray jpropValueBase = (
+      !desc->prop_value_base ? NULL
+      :JNIUtil::makeJByteArray(desc->prop_value_base->data,
+                               int(desc->prop_value_base->len)));
+  if (JNIUtil::isExceptionThrown())
+    POP_AND_RETURN_NULL;
+  jbyteArray jpropValueWorking = (
+      !desc->prop_value_working ? NULL
+      :JNIUtil::makeJByteArray(desc->prop_value_working->data,
+                               int(desc->prop_value_working->len)));
+  if (JNIUtil::isExceptionThrown())
+    POP_AND_RETURN_NULL;
+  jbyteArray jpropValueIncomingOld = (
+      !desc->prop_value_incoming_old ? NULL
+      :JNIUtil::makeJByteArray(desc->prop_value_incoming_old->data,
+                               int(desc->prop_value_incoming_old->len)));
+  if (JNIUtil::isExceptionThrown())
+    POP_AND_RETURN_NULL;
+  jbyteArray jpropValueIncomingNew = (
+      !desc->prop_value_incoming_new ? NULL
+      :JNIUtil::makeJByteArray(desc->prop_value_incoming_new->data,
+                               int(desc->prop_value_incoming_new->len)));
+  if (JNIUtil::isExceptionThrown())
+    POP_AND_RETURN_NULL;
 
   // Instantiate the conflict descriptor.
   jobject jdesc = env->NewObject(clazz, ctor, jpath, jconflictKind,
@@ -125,7 +153,10 @@ CreateJ::ConflictDescriptor(const svn_wc
                                  (jboolean) desc->is_binary, jmimeType,
                                  jconflictAction, jconflictReason, joperation,
                                  jbasePath, jreposPath, juserPath,
-                                 jmergedPath, jsrcLeft, jsrcRight);
+                                 jmergedPath, jsrcLeft, jsrcRight,
+                                 jpropRejectAbspath, jpropValueBase,
+                                 jpropValueWorking, jpropValueIncomingOld,
+                                 jpropValueIncomingNew);
   if (JNIUtil::isJavaExceptionThrown())
     POP_AND_RETURN_NULL;
 

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.cpp Tue Feb  3 13:15:17 2015
@@ -71,5 +71,29 @@ apr_array_header_t *DiffOptions::options
   if (flags & SHOW_C_FUNCTION)
     APR_ARRAY_PUSH(opt, const char*) = "--show-c-function";
 
+  /* TODO: Support -U (context size) */
+
+  return opt;
+}
+
+svn_diff_file_options_t *DiffOptions::fileOptions(SVN::Pool &resultPool) const
+{
+  svn_diff_file_options_t *opt;
+
+  opt = svn_diff_file_options_create(resultPool.getPool());
+
+  if (flags & IGNORE_ALL_SPACE)
+    opt->ignore_space = svn_diff_file_ignore_space_all;
+  else if (flags & IGNORE_SPACE_CHANGE)
+    opt->ignore_eol_style = svn_diff_file_ignore_space_change;
+
+  if (flags & IGNORE_EOL_STYLE)
+    opt->ignore_eol_style = TRUE;
+
+  if (flags & SHOW_C_FUNCTION)
+    opt->show_c_function = TRUE;
+
+  /* TODO: Support context size */
+
   return opt;
 }

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.h
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.h?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.h (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/DiffOptions.h Tue Feb  3 13:15:17 2015
@@ -29,6 +29,7 @@
 
 #include <apr_tables.h>
 #include "svn_types.h"
+#include "svn_diff.h"
 #include "Pool.h"
 #include "JNIUtil.h"
 
@@ -38,6 +39,7 @@ class DiffOptions
   DiffOptions(jobject joptions);
 
   apr_array_header_t *optionsArray(SVN::Pool &resultPool) const;
+  svn_diff_file_options_t *fileOptions(SVN::Pool &resultPool) const;
 
   svn_boolean_t useGitDiffFormat() const
   {

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.cpp Tue Feb  3 13:15:17 2015
@@ -32,32 +32,6 @@
 #include "JNIStringHolder.h"
 #include "../include/org_apache_subversion_javahl_CommitItemStateFlags.h"
 
-/**
- * Map a C commit state flag constant to the Java constant.
- * @param state     the C commit state flage constant
- * @returns the Java constant
- */
-jint EnumMapper::mapCommitMessageStateFlags(apr_byte_t flags)
-{
-  jint jstateFlags = 0;
-  if (flags & SVN_CLIENT_COMMIT_ITEM_ADD)
-    jstateFlags |=
-      org_apache_subversion_javahl_CommitItemStateFlags_Add;
-  if (flags & SVN_CLIENT_COMMIT_ITEM_DELETE)
-    jstateFlags |=
-      org_apache_subversion_javahl_CommitItemStateFlags_Delete;
-  if (flags & SVN_CLIENT_COMMIT_ITEM_TEXT_MODS)
-    jstateFlags |=
-      org_apache_subversion_javahl_CommitItemStateFlags_TextMods;
-  if (flags & SVN_CLIENT_COMMIT_ITEM_PROP_MODS)
-    jstateFlags |=
-      org_apache_subversion_javahl_CommitItemStateFlags_PropMods;
-  if (flags & SVN_CLIENT_COMMIT_ITEM_IS_COPY)
-    jstateFlags |=
-      org_apache_subversion_javahl_CommitItemStateFlags_IsCopy;
-  return jstateFlags;
-}
-
 jobject EnumMapper::mapChangePathAction(const char action)
 {
   switch (action)

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.h
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.h?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.h (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/EnumMapper.h Tue Feb  3 13:15:17 2015
@@ -55,7 +55,6 @@ class EnumMapper
     toMergeinfoInheritance(jobject jInheritance);
 
   /* Converting from C enum's */
-  static jint mapCommitMessageStateFlags(apr_byte_t flags);
   static jobject mapChangePathAction(const char action);
   static jobject mapNotifyState(svn_wc_notify_state_t state);
   static jobject mapNotifyAction(svn_wc_notify_action_t action);

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/Prompter.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/Prompter.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/Prompter.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/Prompter.cpp Tue Feb  3 13:15:17 2015
@@ -325,14 +325,7 @@ svn_error_t *Prompter::dispatch_ssl_serv
       authn.ssl_server_trust_prompt(
           ::Java::String(env, realm),
           ::JavaHL::AuthnCallback::SSLServerCertFailures(env, jint(failures)),
-          ::JavaHL::AuthnCallback::SSLServerCertInfo(
-              env,
-              ::Java::String(env, cert_info->hostname),
-              ::Java::String(env, cert_info->fingerprint),
-              ::Java::String(env, cert_info->valid_from),
-              ::Java::String(env, cert_info->valid_until),
-              ::Java::String(env, cert_info->issuer_dname),
-              ::Java::String(env, cert_info->ascii_cert)),
+          ::JavaHL::AuthnCallback::SSLServerCertInfo(env, cert_info->ascii_cert),
           may_save));
   if (!result.get())
     return svn_error_create(SVN_ERR_RA_NOT_AUTHORIZED, NULL,

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.cpp Tue Feb  3 13:15:17 2015
@@ -1184,7 +1184,7 @@ void SVNClient::relocate(const char *fro
 void SVNClient::blame(const char *path, Revision &pegRevision,
                       Revision &revisionStart, Revision &revisionEnd,
                       bool ignoreMimeType, bool includeMergedRevisions,
-                      BlameCallback *callback)
+                      BlameCallback *callback, DiffOptions const& options)
 {
     SVN::Pool subPool(pool);
     SVN_JNI_NULL_PTR_EX(path, "path", );
@@ -1198,7 +1198,7 @@ void SVNClient::blame(const char *path,
     SVN_JNI_ERR(svn_client_blame5(
           intPath.c_str(), pegRevision.revision(), revisionStart.revision(),
           revisionEnd.revision(),
-          svn_diff_file_options_create(subPool.getPool()), ignoreMimeType,
+          options.fileOptions(subPool), ignoreMimeType,
           includeMergedRevisions, BlameCallback::callback, callback, ctx,
           subPool.getPool()),
         );

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.h?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/SVNClient.h Tue Feb  3 13:15:17 2015
@@ -82,7 +82,7 @@ class SVNClient :public SVNBase
   void blame(const char *path, Revision &pegRevision,
              Revision &revisionStart, Revision &revisionEnd,
              bool ignoreMimeType, bool includeMergedRevisions,
-             BlameCallback *callback);
+             BlameCallback *callback, DiffOptions const& options);
   void relocate(const char *from, const char *to, const char *path,
                 bool ignoreExternals);
   apr_hash_t *streamFileContent(const char *path,

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_base.cpp Tue Feb  3 13:15:17 2015
@@ -329,6 +329,8 @@ const char* const IndexOutOfBoundsExcept
 const char* const IOException::m_class_name =
   "java/io/IOException";
 
+const char* const IllegalArgumentException::m_class_name =
+  "java/lang/IllegalArgumentException";
 
 // Implementation of jni_stack.hpp
 

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp Tue Feb  3 13:15:17 2015
@@ -286,6 +286,25 @@ private:
   static const char* const m_class_name;
 };
 
+/**
+ * Generator class for exceptions of type @c java.lang.IllegalArgumentException.
+ *
+ * @since New in 1.9.
+ */
+class IllegalArgumentException : public Exception
+{
+public:
+  /**
+   * Constructs an exception generator object.
+   */
+  explicit IllegalArgumentException(Env env)
+    : Exception(env, m_class_name)
+    {}
+
+private:
+  static const char* const m_class_name;
+};
+
 } // namespace Java
 
 #endif // SVN_JAVAHL_JNIWRAPPER_ENV_HPP

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Tue Feb  3 13:15:17 2015
@@ -1646,7 +1646,8 @@ JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_blame
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
  jobject jrevisionStart, jobject jrevisionEnd, jboolean jignoreMimeType,
- jboolean jincludeMergedRevisions, jobject jblameCallback)
+ jboolean jincludeMergedRevisions, jobject jblameCallback,
+ jobject jdiffOptions)
 {
   JNIEntry(SVNClient, blame);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -1671,10 +1672,15 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return;
 
+  DiffOptions options(jdiffOptions);
+  if (JNIUtil::isExceptionThrown())
+    return;
+
   BlameCallback callback(jblameCallback);
   cl->blame(path, pegRevision, revisionStart, revisionEnd,
             jignoreMimeType ? true : false,
-            jincludeMergedRevisions ? true : false, &callback);
+            jincludeMergedRevisions ? true : false, &callback,
+            options);
 }
 
 JNIEXPORT void JNICALL

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.cpp Tue Feb  3 13:15:17 2015
@@ -28,12 +28,19 @@
 #include "JNIStackElement.h"
 #include "svn_version.h"
 
+namespace {
+const svn_version_t* javahl_version()
+{
+  SVN_VERSION_BODY;
+}
+} //anonymous namespace
+
 JNIEXPORT jint JNICALL
 Java_org_apache_subversion_javahl_types_Version_getMajor(JNIEnv *env,
  jobject jthis)
 {
   JNIEntry(Version, getMajor);
-  return SVN_VER_MAJOR;
+  return javahl_version()->major;
 }
 
 JNIEXPORT jint JNICALL
@@ -41,7 +48,7 @@ Java_org_apache_subversion_javahl_types_
  jobject jthis)
 {
   JNIEntry(Version, getMinor);
-  return SVN_VER_MINOR;
+  return javahl_version()->minor;
 }
 
 JNIEXPORT jint JNICALL
@@ -49,7 +56,7 @@ Java_org_apache_subversion_javahl_types_
  jobject jthis)
 {
   JNIEntry(Version, getPatch);
-  return SVN_VER_PATCH;
+  return javahl_version()->patch;
 }
 
 JNIEXPORT jstring JNICALL

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp Tue Feb  3 13:15:17 2015
@@ -41,8 +41,10 @@
 #include "JNICriticalSection.h"
 
 #include "svn_auth.h"
+#include "svn_base64.h"
 #include "svn_config.h"
 #include "svn_hash.h"
+#include "svn_x509.h"
 
 #include "svn_private_config.h"
 
@@ -140,41 +142,14 @@ jobject build_credential(Java::Env env,
   else if (0 == strcmp(cred_kind, SVN_AUTH_CRED_SSL_SERVER_TRUST))
     {
       entry = static_cast<svn_string_t*>(
-          svn_hash_gets(cred, SVN_CONFIG_AUTHN_HOSTNAME_KEY));
-      const char* hostname = (entry ? entry->data : NULL);
-
-      entry = static_cast<svn_string_t*>(
-          svn_hash_gets(cred, SVN_CONFIG_AUTHN_FINGERPRINT_KEY));
-      const char* fingerprint = (entry ? entry->data : NULL);
-
-      entry = static_cast<svn_string_t*>(
-          svn_hash_gets(cred, SVN_CONFIG_AUTHN_VALID_FROM_KEY));
-      const char* valid_from = (entry ? entry->data : NULL);
-
-      entry = static_cast<svn_string_t*>(
-          svn_hash_gets(cred, SVN_CONFIG_AUTHN_VALID_UNTIL_KEY));
-      const char* valid_until = (entry ? entry->data : NULL);
-
-      entry = static_cast<svn_string_t*>(
-          svn_hash_gets(cred, SVN_CONFIG_AUTHN_ISSUER_DN_KEY));
-      const char* issuer = (entry ? entry->data : NULL);
-
-      entry = static_cast<svn_string_t*>(
           svn_hash_gets(cred, SVN_CONFIG_AUTHN_ASCII_CERT_KEY));
-      const char* der = (entry ? entry->data : NULL);
+      const char* ascii_cert = (entry ? entry->data : NULL);
 
       entry = static_cast<svn_string_t*>(
           svn_hash_gets(cred, SVN_CONFIG_AUTHN_FAILURES_KEY));
       jint failflags = (!entry ? 0 : jint(apr_atoi64(entry->data)));
 
-      info = JavaHL::AuthnCallback
-        ::SSLServerCertInfo(env,
-                            Java::String(env, hostname),
-                            Java::String(env, fingerprint),
-                            Java::String(env, valid_from),
-                            Java::String(env, valid_until),
-                            Java::String(env, issuer),
-                            Java::String(env, der)).get();
+      info = JavaHL::AuthnCallback::SSLServerCertInfo(env, ascii_cert).get();
       failures = JavaHL::AuthnCallback
         ::SSLServerCertFailures(env, failflags).get();
     }
@@ -370,6 +345,19 @@ Java_org_apache_subversion_javahl_util_C
         const ::Java::Env m_env;
         ::Java::MutableList<JavaHL::Credential> m_credentials;
 
+        bool match_array(const char* pattern,
+                         const apr_array_header_t* hostnames)
+          {
+            for (int i = 0; i < hostnames->nelts; ++i)
+              {
+                const char* const hostname =
+                  APR_ARRAY_IDX(hostnames, i, const char*);
+                if (!apr_fnmatch(pattern, hostname, 0))
+                  return true;
+              }
+            return false;
+          }
+
       public:
         explicit Callback(::Java::Env ctor_env,
                           const char* ctor_cred_kind,
@@ -411,25 +399,41 @@ Java_org_apache_subversion_javahl_util_C
                 svn_hash_gets(cb_cred_hash, SVN_CONFIG_AUTHN_PASSTYPE_KEY));
             const char* const store = (entry ? entry->data : NULL);
 
-            entry = static_cast<svn_string_t*>(
-                svn_hash_gets(cb_cred_hash, SVN_CONFIG_AUTHN_HOSTNAME_KEY));
-            const char* const hostname = (entry ? entry->data : NULL);
-
-            entry = static_cast<svn_string_t*>(
-                svn_hash_gets(cb_cred_hash, SVN_CONFIG_AUTHN_FINGERPRINT_KEY));
-            const char* const fingerprint = (entry ? entry->data : NULL);
+            const svn_string_t* ascii_cert = static_cast<svn_string_t*>(
+                svn_hash_gets(cb_cred_hash, SVN_CONFIG_AUTHN_ASCII_CERT_KEY));
 
-            entry = static_cast<svn_string_t*>(
-                svn_hash_gets(cb_cred_hash, SVN_CONFIG_AUTHN_VALID_FROM_KEY));
-            const char* const valid_from = (entry ? entry->data : NULL);
-
-            entry = static_cast<svn_string_t*>(
-                svn_hash_gets(cb_cred_hash, SVN_CONFIG_AUTHN_VALID_UNTIL_KEY));
-            const char* const valid_until = (entry ? entry->data : NULL);
-
-            entry = static_cast<svn_string_t*>(
-                svn_hash_gets(cb_cred_hash, SVN_CONFIG_AUTHN_ISSUER_DN_KEY));
-            const char* const issuer = (entry ? entry->data : NULL);
+            /* Parsed certificate data. */
+            const char* subject = NULL;
+            const char* issuer = NULL;
+            const char* fingerprint = NULL;
+            const apr_array_header_t* hostnames = NULL;
+
+            if (ascii_cert)
+              {
+                const svn_string_t* const der =
+                  svn_base64_decode_string(ascii_cert, cb_scratch_pool);
+                svn_x509_certinfo_t* certinfo;
+                svn_error_t* err = svn_x509_parse_cert(
+                    &certinfo, der->data, der->len,
+                    cb_scratch_pool, cb_scratch_pool);
+                if (err)
+                  {
+                    // Ignore credentials that can't be parsed.
+                    svn_error_clear(err);
+                    return SVN_NO_ERROR;
+                  }
+                else
+                  {
+                    subject = svn_x509_certinfo_get_subject(
+                        certinfo, cb_scratch_pool);
+                    issuer = svn_x509_certinfo_get_issuer(
+                        certinfo, cb_scratch_pool);
+                    fingerprint = svn_checksum_to_cstring_display(
+                        svn_x509_certinfo_get_digest(certinfo),
+                        cb_scratch_pool);
+                    hostnames = svn_x509_certinfo_get_hostnames(certinfo);
+                  }
+              }
 
             bool match = (m_realm_pattern
                           && !apr_fnmatch(m_realm_pattern, cb_realmstring, 0));
@@ -441,8 +445,8 @@ Java_org_apache_subversion_javahl_util_C
 
             if (!match && m_hostname_pattern)
               match = (match
-                       || (hostname
-                           && !apr_fnmatch(m_hostname_pattern, hostname, 0)));
+                       || (hostnames
+                           &&  match_array(m_hostname_pattern, hostnames)));
 
             if (!match && m_text_pattern)
               match = (match
@@ -450,16 +454,14 @@ Java_org_apache_subversion_javahl_util_C
                            && !apr_fnmatch(m_text_pattern, username, 0))
                        || (store
                            && !apr_fnmatch(m_text_pattern, store, 0))
-                       || (hostname
-                           && !apr_fnmatch(m_text_pattern, hostname, 0))
+                       || (subject
+                           && !apr_fnmatch(m_text_pattern, subject, 0))
+                       || (issuer
+                           && !apr_fnmatch(m_text_pattern, issuer, 0))
                        || (fingerprint
                            && !apr_fnmatch(m_text_pattern, fingerprint, 0))
-                       || (valid_from
-                           && !apr_fnmatch(m_text_pattern, valid_from, 0))
-                       || (valid_until
-                           && !apr_fnmatch(m_text_pattern, valid_until, 0))
-                       || (issuer
-                           && !apr_fnmatch(m_text_pattern, issuer, 0)));
+                       || (hostnames
+                           && match_array(m_text_pattern, hostnames)));
 
             if (match)
               m_credentials.add(

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java Tue Feb  3 13:15:17 2015
@@ -71,13 +71,26 @@ public class ConflictDescriptor
      */
     private ConflictVersion srcRightVersion;
 
-    /** This constructor should only be called from JNI code. */
-    public ConflictDescriptor(String path, Kind conflictKind, NodeKind nodeKind,
+    // Information about property conflicts. New in 1.9
+    private String propRejectAbspath;
+    private byte[] propValueBase;
+    private byte[] propValueWorking;
+    private byte[] propValueIncomingOld;
+    private byte[] propValueIncomingNew;
+
+
+    // Private constructor, only called from the JNI code.
+    private ConflictDescriptor(String path, Kind conflictKind, NodeKind nodeKind,
                        String propertyName, boolean isBinary, String mimeType,
                        Action action, Reason reason, Operation operation,
                        String basePath, String theirPath,
                        String myPath, String mergedPath,
-                       ConflictVersion srcLeft, ConflictVersion srcRight)
+                       ConflictVersion srcLeft, ConflictVersion srcRight,
+                       String propRejectAbspath, byte[] propValueBase,
+                       byte[] propValueWorking,
+                       byte[] propValueIncomingOld,
+                       byte[] propValueIncomingNew)
+
     {
         this.path = path;
         this.conflictKind = conflictKind;
@@ -94,6 +107,28 @@ public class ConflictDescriptor
         this.operation = operation;
         this.srcLeftVersion = srcLeft;
         this.srcRightVersion = srcRight;
+        this.propRejectAbspath = propRejectAbspath;
+        this.propValueBase = propValueBase;
+        this.propValueWorking = propValueWorking;
+        this.propValueIncomingOld = propValueIncomingOld;
+        this.propValueIncomingNew = propValueIncomingNew;
+    }
+
+    /**
+     * This constructor should only be called from JNI code.
+     * @deprecated
+     */
+    @Deprecated
+    public ConflictDescriptor(String path, Kind conflictKind, NodeKind nodeKind,
+                       String propertyName, boolean isBinary, String mimeType,
+                       Action action, Reason reason, Operation operation,
+                       String basePath, String theirPath,
+                       String myPath, String mergedPath,
+                       ConflictVersion srcLeft, ConflictVersion srcRight)
+    {
+        this(path, conflictKind, nodeKind, propertyName, isBinary, mimeType,
+             action, reason, operation, basePath, theirPath, myPath, mergedPath,
+             srcLeft, srcRight, null, null, null, null, null);
     }
 
     public String getPath()
@@ -171,6 +206,32 @@ public class ConflictDescriptor
         return srcRightVersion;
     }
 
+    public String getPropRejectAbspath()
+    {
+        return propRejectAbspath;
+    }
+
+    public byte[] getPropValueBase()
+    {
+        return propValueBase;
+    }
+
+    public byte[] getPropValueWorking()
+    {
+        return propValueWorking;
+    }
+
+    public byte[] getPropValueIncomingOld()
+    {
+        return propValueIncomingOld;
+    }
+
+    public byte[] getPropValueIncomingNew()
+    {
+        return propValueIncomingNew;
+    }
+
+
     /**
      * Rich man's enum for <code>svn_wc_conflict_kind_t</code>.
      */

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Tue Feb  3 13:15:17 2015
@@ -1323,12 +1323,28 @@ public interface ISVNClient
      *                      information
      * @param callback      callback to receive the file content and the other
      *                      information
+     * @param options       additional options for controlling the output
      * @throws ClientException
+     * @since 1.9
      */
     void blame(String path, Revision pegRevision, Revision revisionStart,
                Revision revisionEnd, boolean ignoreMimeType,
                boolean includeMergedRevisions,
-               BlameCallback callback) throws ClientException;
+               BlameCallback callback, DiffOptions options)
+            throws ClientException;
+
+    /**
+     * Retrieve the content together with the author, the revision and the date
+     * of the last change of each line
+     * <p>
+     * Behaves like the 1.9 version with <code>options</code> set to
+     * their default values.
+     */
+    void blame(String path, Revision pegRevision, Revision revisionStart,
+               Revision revisionEnd, boolean ignoreMimeType,
+               boolean includeMergedRevisions,
+               BlameCallback callback)
+            throws ClientException;
 
     /**
      * Set directory for the configuration information, taking the

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Tue Feb  3 13:15:17 2015
@@ -651,11 +651,23 @@ public class SVNClient implements ISVNCl
                                 boolean ignoreExternals)
             throws ClientException;
 
+    public void blame(String path, Revision pegRevision,
+                      Revision revisionStart,
+                      Revision revisionEnd, boolean ignoreMimeType,
+                      boolean includeMergedRevisions,
+                      BlameCallback callback)
+            throws ClientException
+    {
+        blame(path, pegRevision, revisionStart, revisionEnd, ignoreMimeType,
+              includeMergedRevisions, callback, null);
+    }
+
     public native void blame(String path, Revision pegRevision,
                              Revision revisionStart,
                              Revision revisionEnd, boolean ignoreMimeType,
                              boolean includeMergedRevisions,
-                             BlameCallback callback)
+                             BlameCallback callback,
+                             DiffOptions options)
             throws ClientException;
 
     public native void setConfigDirectory(String configDir)

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java Tue Feb  3 13:15:17 2015
@@ -466,11 +466,12 @@ public class SVNUtil
      *             otherwise, only those credentials that have a username,
      *             and where the username matches the pattern, will be
      *             returned.
-     * @param hostnamePattern A glob pattern for the hostname (CN) of
-     *             a server certificate; if <code>null</code>, all credntials
-     *             will be considered; otherwise, only those credentials
-     *             that have a server certificate with a hostname that
-     *             matches the pattern will be returned.
+     * @param hostnamePattern A glob pattern for the hostnames of a
+     *             server certificate; if <code>null</code>, all
+     *             credntials will be considered; otherwise, only
+     *             those credentials that have a server certificate
+     *             with a hostname that matches the pattern will be
+     *             returned.
      * @param textPattern A glob pattern that must match any textual
      *             information in a credential, for example, a realm,
      *             username, certificate details, etc; passwords, passphrases

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/AuthnCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/AuthnCallback.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/AuthnCallback.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/AuthnCallback.java Tue Feb  3 13:15:17 2015
@@ -23,6 +23,8 @@
 
 package org.apache.subversion.javahl.callback;
 
+import java.util.Date;
+import java.util.List;
 import java.util.logging.Logger;
 
 /**
@@ -243,74 +245,84 @@ public interface AuthnCallback
         private static final long serialVersionUID = 1L;
 
         /**
-         * @return The primary CN of the certificate.
+         * @return The subject of the certificate.
          */
-        public String getHostname()
+        public String getSubject()
         {
-            return hostname;
+            return subject;
         }
 
         /**
-         * @return The text representation of the certificate fingerprint.
+         * @return The certificate issuer.
          */
-        public String getFingerprint()
+        public String getIssuer()
         {
-            return fingerprint;
+            return issuer;
         }
 
         /**
-         * @return The text represent representation of the date from
-         *         which the certificate is valid.
+         * @return The from which the certificate is valid.
          */
-        public String getValidFrom()
+        public Date getValidFrom()
         {
             return validFrom;
         }
 
         /**
-         * @return The text represent representation of the date after
-         *         which the certificate is no longer valid.
+         * @return The date after which the certificate is no longer valid.
          */
-        public String getValidUntil()
+        public Date getValidTo()
         {
-            return validUntil;
+            return validTo;
         }
 
         /**
-         * @return The DN of the certificate issuer.
+         * @return The certificate fingerprint.
          */
-        public String getIssuer()
+        public byte[] getFingerprint()
         {
-            return issuer;
+            return fingerprint;
         }
 
         /**
-         * @return the Base64-encoded DER representation of the certificate.
+         * @return A list of host names that the certificate represents.
          */
-        public String getDER()
+        public List<String> getHostnames()
         {
-            return der;
+            return hostnames;
+        }
+
+        /**
+         * @return the Base64-encoded raw certificate data.
+         */
+        public String getCert()
+        {
+            return asciiCert;
         }
 
         /* This private constructor is used by the native implementation. */
-        private SSLServerCertInfo(String hostname, String fingerprint,
-                                  String validFrom, String validUntil,
-                                  String issuer, String der)
+        private SSLServerCertInfo(String subject, String issuer,
+                                  long validFrom, long validTo,
+                                  byte[] fingerprint,
+                                  List<String> hostnames,
+                                  String asciiCert)
         {
-            this.hostname = hostname;
-            this.fingerprint = fingerprint;
-            this.validFrom = validFrom;
-            this.validUntil = validUntil;
+            this.subject = subject;
             this.issuer = issuer;
-            this.der = der;
+            this.validFrom = new Date(validFrom);
+            this.validTo = new Date(validTo);
+            this.fingerprint = fingerprint;
+            this.hostnames = hostnames;
+            this.asciiCert = asciiCert;
         }
 
-        private String hostname;
-        private String fingerprint;
-        private String validFrom;
-        private String validUntil;
+        private String subject;
         private String issuer;
-        private String der;
+        private Date validFrom;
+        private Date validTo;
+        private byte[] fingerprint;
+        private List<String> hostnames;
+        private String asciiCert;
     }
 
     /**

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java Tue Feb  3 13:15:17 2015
@@ -81,48 +81,6 @@ public class ConfigLib
         return nativeRemoveCredential(configDir, kind.toString(), realm);
     }
 
-    ///** @see SVNUtil.addCredential */
-    //public SVNUtil.Credential addCredential(String configDir,
-    //                                        SVNUtil.Credential credential,
-    //                                        boolean replace)
-    //    throws ClientException, SubversionException
-    //{
-    //    final SVNUtil.Credential.Kind kind = credential.getKind();
-    //
-    //    final String username =
-    //        ((kind == SVNUtil.Credential.Kind.username
-    //          || kind == SVNUtil.Credential.Kind.simple)
-    //         ? credential.getUsername() : null);
-    //
-    //    final String password =
-    //        (kind == SVNUtil.Credential.Kind.simple
-    //         ? credential.getPassword() : null);
-    //
-    //    final AuthnCallback.SSLServerCertInfo sci =
-    //        (kind == SVNUtil.Credential.Kind.sslServer
-    //         ? credential.getServerCertInfo() : null);
-    //
-    //    final AuthnCallback.SSLServerCertFailures scf =
-    //        (kind == SVNUtil.Credential.Kind.sslServer
-    //         ? credential.getServerCertFailures() : null);
-    //
-    //    final String passphrase =
-    //        (kind == SVNUtil.Credential.Kind.sslClientPassphrase
-    //         ? credential.getClientCertPassphrase() : null);
-    //
-    //    return nativeAddCredential(configDir, kind.toString(),
-    //                               credential.getRealm(),
-    //                               username, password,
-    //                               (sci != null ? sci.getHostname() : null),
-    //                               (sci != null ? sci.getFingerprint() : null),
-    //                               (sci != null ? sci.getValidFrom() : null),
-    //                               (sci != null ? sci.getValidUntil() : null),
-    //                               (sci != null ? sci.getIssuer() : null),
-    //                               (sci != null ? sci.getDER() : null),
-    //                               (scf != null ? scf.getFailures() : 0),
-    //                               passphrase);
-    //}
-
     /** @see SVNUtil.searchCredentials */
     public List<SVNUtil.Credential>
         searchCredentials(String configDir,
@@ -151,22 +109,6 @@ public class ConfigLib
                                String realm)
         throws ClientException, SubversionException;
 
-    //private native SVNUtil.Credential
-    //    nativeAddCredential(String configDir,
-    //                        String kind,
-    //                        String realm,
-    //                        String username,
-    //                        String password,
-    //                        String serverCertHostname,
-    //                        String serverCertFingerprint,
-    //                        String serverCertValidFrom,
-    //                        String serverCertValidUntil,
-    //                        String serverCertIssuer,
-    //                        String serverCertDER,
-    //                        int serverCertFailures,
-    //                        String clientCertPassphrase)
-    //    throws ClientException, SubversionException;
-
     private native List<SVNUtil.Credential>
         nativeSearchCredentials(String configDir,
                                 String kind,

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Tue Feb  3 13:15:17 2015
@@ -259,7 +259,7 @@ public class BasicTests extends SVNTests
         tempclient.dispose();
 
         // create Y and Y/Z directories in the repository
-        addExpectedCommitItem(null, thisTest.getUrl().toString(), "Y", NodeKind.none,
+        addExpectedCommitItem(null, thisTest.getUrl().toString(), "Y", NodeKind.dir,
                               CommitItemStateFlags.Add);
         Set<String> urls = new HashSet<String>(1);
         urls.add(thisTest.getUrl() + "/Y");
@@ -1004,9 +1004,9 @@ public class BasicTests extends SVNTests
         OneTest thisTest = new OneTest();
 
         // create Y and Y/Z directories in the repository
-        addExpectedCommitItem(null, thisTest.getUrl().toString(), "Y", NodeKind.none,
+        addExpectedCommitItem(null, thisTest.getUrl().toString(), "Y", NodeKind.dir,
                               CommitItemStateFlags.Add);
-        addExpectedCommitItem(null, thisTest.getUrl().toString(), "Y/Z", NodeKind.none,
+        addExpectedCommitItem(null, thisTest.getUrl().toString(), "Y/Z", NodeKind.dir,
                               CommitItemStateFlags.Add);
         Set<String> urls = new HashSet<String>(2);
         urls.add(thisTest.getUrl() + "/Y");
@@ -3885,11 +3885,46 @@ public class BasicTests extends SVNTests
                      false, false, callback);
         assertEquals(1, callback.numberOfLines());
         BlameCallbackImpl.BlameLine line = callback.getBlameLine(0);
-        if (line != null)
-        {
-            assertEquals(1, line.getRevision());
-            assertEquals("jrandom", line.getAuthor());
+        assertNotNull(line);
+        assertEquals(1, line.getRevision());
+        assertEquals("jrandom", line.getAuthor());
+        assertEquals("This is the file 'iota'.", line.getLine());
+    }
+
+    /**
+     * Test blame with diff options.
+     * @since 1.9
+     */
+    public void testBlameWithDiffOptions() throws Throwable
+    {
+        OneTest thisTest = new OneTest();
+        // Modify the file iota, making only whitespace changes.
+        File iota = new File(thisTest.getWorkingCopy(), "iota");
+        FileOutputStream stream = new FileOutputStream(iota, false);
+        stream.write("This   is   the   file   'iota'.\t".getBytes());
+        stream.close();
+        Set<String> srcPaths = new HashSet<String>(1);
+        srcPaths.add(thisTest.getWCPath());
+        try {
+            client.username("rayjandom");
+            client.commit(srcPaths, Depth.infinity, false, false, null, null,
+                          new ConstMsg("Whitespace-only change in /iota"), null);
+        } finally {
+            client.username("jrandom");
         }
+
+        // Run blame on the result
+        BlameCallbackImpl callback = new BlameCallbackImpl();
+        client.blame(thisTest.getWCPath() + "/iota", Revision.HEAD,
+                     Revision.getInstance(1), Revision.HEAD,
+                     false, false, callback,
+                     new DiffOptions(DiffOptions.Flag.IgnoreWhitespace));
+        assertEquals(1, callback.numberOfLines());
+        BlameCallbackImpl.BlameLine line = callback.getBlameLine(0);
+        assertNotNull(line);
+        assertEquals(1, line.getRevision());
+        assertEquals("jrandom", line.getAuthor());
+        assertEquals("This   is   the   file   'iota'.\t", line.getLine());
     }
 
     /**

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java Tue Feb  3 13:15:17 2015
@@ -257,10 +257,11 @@ class SVNTests extends TestCase
         greekRepos = new File(localTmp, "repos");
         greekDump = new File(localTmp, "greek_dump");
         admin.create(greekRepos, true,false, null, this.fsType);
-        addExpectedCommitItem(greekFiles.getAbsolutePath(), null, null,
-                              NodeKind.none, CommitItemStateFlags.Add);
+        addExpectedCommitItem(greekFiles.getAbsolutePath(),
+                              makeReposUrl(greekRepos).toString(), null,
+                              NodeKind.dir, CommitItemStateFlags.Add);
         client.doImport(greekFiles.getAbsolutePath(),
-                       makeReposUrl(greekRepos).toString(),
+                        makeReposUrl(greekRepos).toString(),
                         Depth.infinity, false, false, null,
                         new MyCommitMessage(), null);
         admin.dump(greekRepos, new FileOutputStream(greekDump),

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java Tue Feb  3 13:15:17 2015
@@ -627,16 +627,41 @@ public class UtilTests extends SVNTests
     private static final String util_cred_ssl_server =
         "K 10\n" +
         "ascii_cert\n" +
-        "V 12\n" +
-        "NotTelling==\n" +
+        "V 1616\n" +
+        "MIIEtzCCA5+gAwIBAgIQWGBOrapkezd+BWVsAtmtmTANBgkqhkiG9w0BAQsFADA8" +
+        "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMuMRYwFAYDVQQDEw1U" +
+        "aGF3dGUgU1NMIENBMB4XDTE0MDQxMTAwMDAwMFoXDTE2MDQwNzIzNTk1OVowgYsx" +
+        "CzAJBgNVBAYTAlVTMREwDwYDVQQIEwhNYXJ5bGFuZDEUMBIGA1UEBxQLRm9yZXN0" +
+        "IEhpbGwxIzAhBgNVBAoUGkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uMRcwFQYD" +
+        "VQQLFA5JbmZyYXN0cnVjdHVyZTEVMBMGA1UEAxQMKi5hcGFjaGUub3JnMIIBIjAN" +
+        "BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Tq4mH+stRoxe4xth8tUCgLt+P4L" +
+        "D/JWZz4a2IecaaAk57vIlTxEyP16fUShUfxVJnD0KV11zv2qaEUXNaA6hKd4H/oB" +
+        "u2OyGev+quRM+aFCjWqASkXt7fLGsIkHAwP3XwBVBpARbcXJeCjCBxqaYrQqS8LT" +
+        "wfPUD9eYncGlQ+ixb3Bosy7TmkWKeLsRdS90cAO/rdgQ8OI7kLT/1tr5GpF9RmXo" +
+        "RnVqMP+U0zGd/BNNSneg7emb7TxLzxeMKZ7QbF4MZi8RRN11spvx8/f92CiYrGGu" +
+        "y67VdOGPaomYc+VZ2syLwduHGK40ADrEK3+MQpsRFB0dM08j9bhpr5A44wIDAQAB" +
+        "o4IBYzCCAV8wFwYDVR0RBBAwDoIMKi5hcGFjaGUub3JnMAkGA1UdEwQCMAAwQgYD" +
+        "VR0gBDswOTA3BgpghkgBhvhFAQc2MCkwJwYIKwYBBQUHAgEWG2h0dHBzOi8vd3d3" +
+        "LnRoYXd0ZS5jb20vY3BzLzAOBgNVHQ8BAf8EBAMCBaAwHwYDVR0jBBgwFoAUp6KD" +
+        "uzRFQD381TBPErk+oQGf9tswOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL3N2ci1v" +
+        "di1jcmwudGhhd3RlLmNvbS9UaGF3dGVPVi5jcmwwHQYDVR0lBBYwFAYIKwYBBQUH" +
+        "AwEGCCsGAQUFBwMCMGkGCCsGAQUFBwEBBF0wWzAiBggrBgEFBQcwAYYWaHR0cDov" +
+        "L29jc3AudGhhd3RlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3N2ci1vdi1haWEu" +
+        "dGhhd3RlLmNvbS9UaGF3dGVPVi5jZXIwDQYJKoZIhvcNAQELBQADggEBAF52BLvl" +
+        "x5or9/aO7+cPhxuPxwiNRgbvHdCakD7n8vzjNyct9fKp6/XxB6GQiTZ0nZPJOyIu" +
+        "Pi1QDLKOXvaPeLKDBilL/+mrn/ev3s/aRQSrUsieKDoQnqtmlxEHc/T3+Ni/RZob" +
+        "PD4GzPuNKpK3BIc0fk/95T8R1DjBSQ5/clvkzOKtcl3VffAwnHiE9TZx9js7kZwO" +
+        "b9nOKX8DFao3EpQcS7qn63Ibzbq5A6ry8ZNRQSIJK/xlCAWoyUd1uxnqGFnus8wb" +
+        "9RVZJQe8YvyytBjgbE3QjnfPOxoEJA3twupnPmH+OCTM6V3TZqpRZj/sZ5rtIQ++" +
+        "hI5FdJWUWVSgnSw=\n" +
         "K 8\n" +
         "failures\n" +
         "V 1\n" +
         "8\n" +
         "K 15\n" +
         "svn:realmstring\n" +
-        "V 27\n" +
-        "https://svn.example.com:443\n" +
+        "V 26\n" +
+        "https://svn.apache.org:443\n" +
         "END\n";
 
     private static final String util_cred_ssl_client_passphrase =
@@ -717,9 +742,12 @@ public class UtilTests extends SVNTests
         /* one SSL server trust credential */
         cred = SVNUtil.getCredential(configDir,
                                      SVNUtil.Credential.Kind.sslServer,
-                                     "https://svn.example.com:443");
+                                     "https://svn.apache.org:443");
         assertNotNull(cred);
-        assertEquals(cred.getServerCertInfo().getDER(), "NotTelling==");
+        assertEquals(cred.getServerCertInfo().getSubject(),
+                     "C=US, ST=Maryland, L=Forest Hill, " +
+                     "O=Apache Software Foundation, OU=Infrastructure, " +
+                     "CN=*.apache.org");
 
         /* one SSL client passphrase credential */
         cred = SVNUtil.getCredential(configDir,
@@ -764,10 +792,16 @@ public class UtilTests extends SVNTests
         assertNotNull(creds);
         assertEquals(creds.size(), 2);
 
+        /* search with match on subvject */
+        creds = SVNUtil.searchCredentials(configDir, null,
+                                          null, null, "\\*.apache.org", null);
+        assertNotNull(creds);
+        assertEquals(creds.size(), 1);
+
         /* search with match on realm */
         creds = SVNUtil.searchCredentials(configDir, null,
                                           "*example*", null, null, null);
         assertNotNull(creds);
-        assertEquals(creds.size(), 4);
+        assertEquals(creds.size(), 3);
     }
 }

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java Tue Feb  3 13:15:17 2015
@@ -232,8 +232,9 @@ class SVNTests extends TestCase
         greekDump = new File(localTmp, "greek_dump");
         admin.create(greekRepos.getAbsolutePath(), true,false, null,
                      this.fsType);
-        addExpectedCommitItem(greekFiles.getAbsolutePath(), null, null,
-                              NodeKind.none, CommitItemStateFlags.Add);
+        addExpectedCommitItem(greekFiles.getAbsolutePath(),
+                              makeReposUrl(greekRepos).toString(), null,
+                              NodeKind.dir, CommitItemStateFlags.Add);
         client.doImport(greekFiles.getAbsolutePath(), makeReposUrl(greekRepos),
                         null, true );
         admin.dump(greekRepos.getAbsolutePath(), new FileOutputer(greekDump),

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/swig/core.i
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/swig/core.i?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/swig/core.i (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/swig/core.i Tue Feb  3 13:15:17 2015
@@ -800,10 +800,11 @@ core_set_current_pool (apr_pool_t *pool)
 #endif
 
 #ifdef SWIGPYTHON
-# The auth baton depends on the providers, so we preserve a
-# reference to them inside the wrapper. This way, if all external
-# references to the providers are gone, they will still be alive,
-# keeping the baton valid.
+/* The auth baton depends on the providers, so we preserve a
+   reference to them inside the wrapper. This way, if all external
+   references to the providers are gone, they will still be alive,
+   keeping the baton valid.
+ */
 %feature("pythonappend") svn_auth_open %{
   val.__dict__["_deps"] = list(args[0])
 %}

Modified: subversion/branches/dump-load-cross-check/subversion/bindings/swig/ruby/test/test_client.rb
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/bindings/swig/ruby/test/test_client.rb?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/bindings/swig/ruby/test/test_client.rb (original)
+++ subversion/branches/dump-load-cross-check/subversion/bindings/swig/ruby/test/test_client.rb Tue Feb  3 13:15:17 2015
@@ -2243,8 +2243,8 @@ class SvnClientTest < Test::Unit::TestCa
 
       items = nil
       ctx.cp(path, repos_uri2)
-      assert_equal([nil], items.collect {|item| item.wcprop_changes})
-      assert_equal([nil], items.collect {|item| item.incoming_prop_changes})
+      assert_equal([[]], items.collect {|item| item.wcprop_changes})
+      assert_equal([[]], items.collect {|item| item.incoming_prop_changes})
       assert_equal([nil], items.collect {|item| item.outgoing_prop_changes})
     end
   end

Modified: subversion/branches/dump-load-cross-check/subversion/include/private/svn_ra_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/include/private/svn_ra_private.h?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/include/private/svn_ra_private.h (original)
+++ subversion/branches/dump-load-cross-check/subversion/include/private/svn_ra_private.h Tue Feb  3 13:15:17 2015
@@ -39,6 +39,33 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+
+/**
+ * Open a new ra session @a *new_session to the same repository as an existing
+ * ra session @a old_session, copying the callbacks, auth baton, etc. from the
+ * old session. This essentially limits the lifetime of the new, duplicated
+ * session to the lifetime of the old session. If the new session should
+ * outlive the new session, creating a new session using svn_ra_open4() is
+ * recommended.
+ *
+ * If @a session_url is not NULL, parent the new session at session_url. Note
+ * that @a session_url MUST BE in the same repository as @a old_session or an
+ * error will be returned. When @a session_url NULL the same session root
+ * will be used.
+ *
+ * Allocate @a new_session in @a result_pool. Perform temporary allocations
+ * in @a scratch_pool.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_ra__dup_session(svn_ra_session_t **new_session,
+                    svn_ra_session_t *old_session,
+                    const char *session_url,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool);
+
 /* Equivalent to svn_ra__assert_capable_server()
    for SVN_RA_CAPABILITY_MERGEINFO. */
 svn_error_t *

Modified: subversion/branches/dump-load-cross-check/subversion/include/private/svn_utf_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/include/private/svn_utf_private.h?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/include/private/svn_utf_private.h (original)
+++ subversion/branches/dump-load-cross-check/subversion/include/private/svn_utf_private.h Tue Feb  3 13:15:17 2015
@@ -159,6 +159,23 @@ svn_utf__normalize(const char **result,
 svn_boolean_t
 svn_utf__is_normalized(const char *string, apr_pool_t *scratch_pool);
 
+/* Encode an UCS-4 string to UTF-8, placing the result into BUFFER.
+ * While utf8proc does have a similar function, it does more checking
+ * and processing than we want here; this function does not attempt
+ * any normalizations but just encodes the individual code points.
+ * The encoded string will always be NUL-terminated.
+ *
+ * Return the length of the result (excluding the NUL terminator) in
+ * *result_length.
+ *
+ * A returned error indicates that a codepoint is invalid.
+ */
+svn_error_t *
+svn_utf__encode_ucs4_string(svn_membuf_t *buffer,
+                            const apr_int32_t *ucs4str,
+                            apr_size_t length,
+                            apr_size_t *result_length);
+
 /* Pattern matching similar to the the SQLite LIKE and GLOB
  * operators. PATTERN, KEY and ESCAPE must all point to UTF-8
  * strings. Furthermore, ESCAPE, if provided, must be a character from
@@ -191,6 +208,48 @@ svn_utf__glob(svn_boolean_t *match,
 const char *
 svn_utf__utf8proc_version(void);
 
+/* Convert an UTF-16 (or UCS-2) string to UTF-8, returning the pointer
+ * in RESULT. If BIG_ENDIAN is set, then UTF16STR is big-endian;
+ * otherwise, it's little-endian.
+ *
+ * If UTF16LEN is SVN_UTF__UNKNOWN_LENGTH, then UTF16STR must be
+ * terminated with a zero; otherwise, it is the number of 16-bit codes
+ * to convert, and the source string may contain NUL values.
+ *
+ * Allocate RESULT in RESULT_POOL and use SCRATCH_POOL for
+ * intermediate allocation.
+ *
+ * This function combines UTF-16 surrogate pairs into single code
+ * points, but will leave single lead or trail surrogates unchanged.
+ */
+svn_error_t *
+svn_utf__utf16_to_utf8(const svn_string_t **result,
+                       const apr_uint16_t *utf16str,
+                       apr_size_t utf16len,
+                       svn_boolean_t big_endian,
+                       apr_pool_t *result_pool,
+                       apr_pool_t *scratch_pool);
+
+/* Convert an UTF-32 string to UTF-8, returning the pointer in
+ * RESULT. If BIG_ENDIAN is set, then UTF32STR is big-endian;
+ * otherwise, it's little-endian.
+ *
+ * If UTF32LEN is SVN_UTF__UNKNOWN_LENGTH, then UTF32STR must be
+ * terminated with a zero; otherwise, it is the number of 32-bit codes
+ * to convert, and the source string may contain NUL values.
+ *
+ * Allocate RESULT in RESULT_POOL and use SCRATCH_POOL for
+ * intermediate allocation.
+ */
+svn_error_t *
+svn_utf__utf32_to_utf8(const svn_string_t **result,
+                       const apr_int32_t *utf32str,
+                       apr_size_t utf32len,
+                       svn_boolean_t big_endian,
+                       apr_pool_t *result_pool,
+                       apr_pool_t *scratch_pool);
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/dump-load-cross-check/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/include/svn_client.h?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/include/svn_client.h (original)
+++ subversion/branches/dump-load-cross-check/subversion/include/svn_client.h Tue Feb  3 13:15:17 2015
@@ -465,13 +465,19 @@ typedef struct svn_client_commit_item3_t
 {
   /* IMPORTANT: If you extend this structure, add new fields to the end. */
 
-  /** absolute working-copy path of item */
+  /** absolute working-copy path of item. Always set during normal commits
+   * (and copies from a working copy) to the repository. Can only be NULL
+   * when stub commit items are created for operations that only involve
+   * direct repository operations. During WC->REPOS copy operations, this
+   * path is the WC source path of the operation. */
   const char *path;
 
   /** node kind (dir, file) */
   svn_node_kind_t kind;
 
-  /** commit URL for this item */
+  /** commit URL for this item. Points to the repository location of PATH
+   * during commits, or to the final URL of the item when copying from the
+   * working copy to the repository. */
   const char *url;
 
   /** revision of textbase */
@@ -1014,11 +1020,6 @@ typedef struct svn_client_ctx_t
    * @since New in 1.7.  */
   svn_wc_context_t *wc_ctx;
 
-  /** Total number of bytes transferred over network.
-   *
-   * @since New in 1.9. */
-  apr_off_t progress;
-
   /** Check-tunnel callback
    *
    * If not @c NULL, and open_tunnel_func is also not @c NULL, this

Modified: subversion/branches/dump-load-cross-check/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/dump-load-cross-check/subversion/include/svn_config.h?rev=1656719&r1=1656718&r2=1656719&view=diff
==============================================================================
--- subversion/branches/dump-load-cross-check/subversion/include/svn_config.h (original)
+++ subversion/branches/dump-load-cross-check/subversion/include/svn_config.h Tue Feb  3 13:15:17 2015
@@ -731,31 +731,6 @@ svn_config_ensure(const char *config_dir
  */
 #define SVN_CONFIG_AUTHN_FAILURES_KEY           "failures"
 
-/** A hash-key for a hostname, such as hostnames in SSL certificates.
- * @since New in 1.9.
- */
-#define SVN_CONFIG_AUTHN_HOSTNAME_KEY           "hostname"
-
-/** A hash-key for a fingerprint, such as fingerprints in SSL certificates.
- * @since New in 1.9.
- */
-#define SVN_CONFIG_AUTHN_FINGERPRINT_KEY        "fingerprint"
-
-/** A hash-key for a valid-from date, such as dates in SSL certificates.
- * @since New in 1.9.
- */
-#define SVN_CONFIG_AUTHN_VALID_FROM_KEY         "valid_from"
-
-/** A hash-key for a valid-to date, such as dates in SSL certificates.
- * @since New in 1.9.
- */
-#define SVN_CONFIG_AUTHN_VALID_UNTIL_KEY        "valid_until"
-
-/** A hash-key for an issuer distinguished name, such as issuer names
- * in SSL certificates.
- * @since New in 1.9.
- */
-#define SVN_CONFIG_AUTHN_ISSUER_DN_KEY        "issuer_dn"
 
 /** @} */
 



Mime
View raw message