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 2013/06/25 00:37:30 UTC

svn commit: r1496245 - in /subversion/trunk/subversion/bindings/javahl/native: RevpropTable.cpp RevpropTable.h

Author: brane
Date: Mon Jun 24 22:37:29 2013
New Revision: 1496245

URL: http://svn.apache.org/r1496245
Log:
Unlike the client wrapper, the JavaHL RA wrapper treats revision property
values as byte arrays. Enhance the helper class to deal with that.

* subversion/bindings/javahl/native/RevpropTable.h
  (RevpropTable::RevpropTable): Add optional parameter bytearray_values.
  subversion/bindings/javahl/native/RevpropTable.cpp
  (RevpropTable::RevpropTable): When bytearray_values is true, assume
   values in the revprop table are byte[], not String.

Modified:
    subversion/trunk/subversion/bindings/javahl/native/RevpropTable.cpp
    subversion/trunk/subversion/bindings/javahl/native/RevpropTable.h

Modified: subversion/trunk/subversion/bindings/javahl/native/RevpropTable.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/RevpropTable.cpp?rev=1496245&r1=1496244&r2=1496245&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/RevpropTable.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/RevpropTable.cpp Mon Jun 24 22:37:29 2013
@@ -27,6 +27,7 @@
 #include "RevpropTable.h"
 #include "JNIUtil.h"
 #include "JNIStringHolder.h"
+#include "JNIByteArray.h"
 #include "Array.h"
 #include <apr_tables.h>
 #include <apr_strings.h>
@@ -71,7 +72,7 @@ apr_hash_t *RevpropTable::hash(const SVN
   return revprop_table;
 }
 
-RevpropTable::RevpropTable(jobject jrevpropTable)
+RevpropTable::RevpropTable(jobject jrevpropTable, bool bytearray_values)
 {
   m_revpropTable = jrevpropTable;
 
@@ -116,12 +117,27 @@ RevpropTable::RevpropTable(jobject jrevp
           if (JNIUtil::isExceptionThrown())
             return;
 
-          JNIStringHolder propval((jstring)jpropval);
-          if (JNIUtil::isExceptionThrown())
-            return;
+          std::string pv;
+          if (bytearray_values)
+            {
+              JNIByteArray propval((jbyteArray)jpropval);
+              if (JNIUtil::isExceptionThrown())
+                return;
+              if (!propval.isNull())
+                pv = std::string(
+                    reinterpret_cast<const char*>(propval.getBytes()),
+                    propval.getLength());
+            }
+          else
+            {
+              JNIStringHolder propval((jstring)jpropval);
+              if (JNIUtil::isExceptionThrown())
+                return;
+              if (NULL != static_cast<const char *>(propval))
+                pv = static_cast<const char *>(propval);
+            }
 
-          m_revprops[std::string(static_cast<const char *>(propname))]
-            = std::string(static_cast<const char *>(propval));
+          m_revprops[std::string(static_cast<const char *>(propname))] = pv;
 
           JNIUtil::getEnv()->DeleteLocalRef(jpropval);
         }

Modified: subversion/trunk/subversion/bindings/javahl/native/RevpropTable.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/RevpropTable.h?rev=1496245&r1=1496244&r2=1496245&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/RevpropTable.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/RevpropTable.h Mon Jun 24 22:37:29 2013
@@ -42,7 +42,7 @@ class RevpropTable
   std::map<std::string, std::string> m_revprops;
   jobject m_revpropTable;
  public:
-  RevpropTable(jobject jrevpropTable);
+  RevpropTable(jobject jrevpropTable, bool bytearray_values=false);
   ~RevpropTable();
   apr_hash_t *hash(const SVN::Pool &pool, bool nullIfEmpty = true);
 };