You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/05/28 16:51:25 UTC
svn commit: r949194 - in /subversion/trunk/subversion/bindings/javahl:
native/ src/org/apache/subversion/javahl/ src/org/tigris/subversion/javahl/
tests/org/apache/subversion/javahl/
Author: hwright
Date: Fri May 28 14:51:24 2010
New Revision: 949194
URL: http://svn.apache.org/viewvc?rev=949194&view=rev
Log:
JavaHL: Use the standard InputStream to collect bytes, rather than a
home-grown variety.
[ in subversion/bindings/javahl/ ]
* tests/org/apache/subversion/javahl/SVNAdminTests.java
(testLoadRepo): Use a generic InputStream.
* tests/org/apache/subversion/javahl/SVNTests.java
(FileInputer): Remove.
(createInitialRepository): Use a FileInputSream, rather than a custome class.
* native/SVNAdmin.h,
native/SVNAdmin.cpp
(load): Use the InputStream object.
* native/InputStream.h:
Copied from Inputer.h, replace use of Inputer with InputStream.
* native/org_apache_subversion_javahl_SVNAdmin.cpp
(Java_org_apache_subversion_javahl_SVNAdmin_load): Use InputStream.
* native/InputStream.cpp:
Copied from Inputer.cpp, replace uses of Inputer with InputStream.
* native/Inputer.cpp:
Remove.
* native/Inputer.h:
Remove.
* src/org/apache/subversion/javahl/IInput.java:
Remove.
* src/org/apache/subversion/javahl/ISVNAdmin.java,
src/org/apache/subversion/javahl/SVNAdmin.java
(load): Use a standard InputStream.
* src/org/tigris/subversion/javahl/SVNAdmin.java
(load): Update wrapper to pass an InputStream to the Apache method.
(InputWrapper): New.
* src/org/tigris/subversion/javahl/InputInterface.java:
Revert changes made in r906648.
Added:
subversion/trunk/subversion/bindings/javahl/native/InputStream.cpp
- copied, changed from r949066, subversion/trunk/subversion/bindings/javahl/native/Inputer.cpp
subversion/trunk/subversion/bindings/javahl/native/InputStream.h
- copied, changed from r949066, subversion/trunk/subversion/bindings/javahl/native/Inputer.h
Removed:
subversion/trunk/subversion/bindings/javahl/native/Inputer.cpp
subversion/trunk/subversion/bindings/javahl/native/Inputer.h
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/IInput.java
Modified:
subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp
subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
Copied: subversion/trunk/subversion/bindings/javahl/native/InputStream.cpp (from r949066, subversion/trunk/subversion/bindings/javahl/native/Inputer.cpp)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/InputStream.cpp?p2=subversion/trunk/subversion/bindings/javahl/native/InputStream.cpp&p1=subversion/trunk/subversion/bindings/javahl/native/Inputer.cpp&r1=949066&r2=949194&rev=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/Inputer.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/InputStream.cpp Fri May 28 14:51:24 2010
@@ -20,24 +20,24 @@
* ====================================================================
* @endcopyright
*
- * @file Inputer.cpp
- * @brief Implementation of the class Inputer
+ * @file InputStream.cpp
+ * @brief Implementation of the class InputStream
*/
-#include "Inputer.h"
+#include "InputStream.h"
#include "JNIUtil.h"
#include "JNIByteArray.h"
/**
- * Create an Inputer object.
+ * Create an InputStream object.
* @param jthis the Java object to be stored
*/
-Inputer::Inputer(jobject jthis)
+InputStream::InputStream(jobject jthis)
{
m_jthis = jthis;
}
-Inputer::~Inputer()
+InputStream::~InputStream()
{
// The m_jthis does not need to be destroyed, because it is the
// passed in parameter to the Java method.
@@ -49,35 +49,35 @@ Inputer::~Inputer()
* @param pool the pool, from which the structure is allocated
* @return the input stream
*/
-svn_stream_t *Inputer::getStream(const SVN::Pool &pool)
+svn_stream_t *InputStream::getStream(const SVN::Pool &pool)
{
// Create a stream with this as the baton and set the read and
// close functions.
svn_stream_t *ret = svn_stream_create(this, pool.pool());
- svn_stream_set_read(ret, Inputer::read);
- svn_stream_set_close(ret, Inputer::close);
+ svn_stream_set_read(ret, InputStream::read);
+ svn_stream_set_close(ret, InputStream::close);
return ret;
}
/**
* Implements svn_read_fn_t to read to data into Subversion.
- * @param baton an Inputer object for the callback
+ * @param baton an InputStream object for the callback
* @param buffer the buffer for the read data
* @param len on input the buffer len, on output the number of read bytes
* @return a subversion error or SVN_NO_ERROR
*/
-svn_error_t *Inputer::read(void *baton, char *buffer, apr_size_t *len)
+svn_error_t *InputStream::read(void *baton, char *buffer, apr_size_t *len)
{
JNIEnv *env = JNIUtil::getEnv();
// An object of our class is passed in as the baton.
- Inputer *that = (Inputer*)baton;
+ InputStream *that = (InputStream*)baton;
// The method id will not change during the time this library is
// loaded, so it can be cached.
static jmethodID mid = 0;
if (mid == 0)
{
- jclass clazz = env->FindClass(JAVA_PACKAGE"/IInput");
+ jclass clazz = env->FindClass("java/io/InputStream");
if (JNIUtil::isJavaExceptionThrown())
return SVN_NO_ERROR;
@@ -122,22 +122,22 @@ svn_error_t *Inputer::read(void *baton,
/**
* Implements svn_close_fn_t to close the input stream.
- * @param baton an Inputer object for the callback
+ * @param baton an InputStream object for the callback
* @return a subversion error or SVN_NO_ERROR
*/
-svn_error_t *Inputer::close(void *baton)
+svn_error_t *InputStream::close(void *baton)
{
JNIEnv *env = JNIUtil::getEnv();
// An object of our class is passed in as the baton
- Inputer *that = (Inputer*)baton;
+ InputStream *that = (InputStream*)baton;
// The method id will not change during the time this library is
// loaded, so it can be cached.
static jmethodID mid = 0;
if (mid == 0)
{
- jclass clazz = env->FindClass(JAVA_PACKAGE"/IInput");
+ jclass clazz = env->FindClass("java/io/InputStream");
if (JNIUtil::isJavaExceptionThrown())
return SVN_NO_ERROR;
Copied: subversion/trunk/subversion/bindings/javahl/native/InputStream.h (from r949066, subversion/trunk/subversion/bindings/javahl/native/Inputer.h)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/InputStream.h?p2=subversion/trunk/subversion/bindings/javahl/native/InputStream.h&p1=subversion/trunk/subversion/bindings/javahl/native/Inputer.h&r1=949066&r2=949194&rev=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/Inputer.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/InputStream.h Fri May 28 14:51:24 2010
@@ -20,22 +20,22 @@
* ====================================================================
* @endcopyright
*
- * @file Inputer.h
- * @brief Interface of the class Inputer
+ * @file InputStream.h
+ * @brief Interface of the class InputStream
*/
-#ifndef INPUTER_H
-#define INPUTER_H
+#ifndef INPUT_STREAM_H
+#define INPUT_STREAM_H
#include <jni.h>
#include "svn_io.h"
#include "Pool.h"
/**
- * This class contains a Java objects implementing the interface Inputer and
+ * This class contains a Java objects implementing the interface InputStream and
* implements the functions read & close of svn_stream_t.
*/
-class Inputer
+class InputStream
{
private:
/**
@@ -45,9 +45,9 @@ class Inputer
static svn_error_t *read(void *baton, char *buffer, apr_size_t *len);
static svn_error_t *close(void *baton);
public:
- Inputer(jobject jthis);
- ~Inputer();
+ InputStream(jobject jthis);
+ ~InputStream();
svn_stream_t *getStream(const SVN::Pool &pool);
};
-#endif // INPUTER_H
+#endif // INPUT_STREAM_H
Modified: subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp?rev=949194&r1=949193&r2=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp Fri May 28 14:51:24 2010
@@ -263,7 +263,7 @@ void SVNAdmin::listUnusedDBLogs(const ch
}
void SVNAdmin::load(const char *path,
- Inputer &dataIn,
+ InputStream &dataIn,
OutputStream &messageOut,
bool ignoreUUID,
bool forceUUID,
Modified: subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h?rev=949194&r1=949193&r2=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h Fri May 28 14:51:24 2010
@@ -32,7 +32,7 @@
#include "SVNBase.h"
#include "Revision.h"
#include "OutputStream.h"
-#include "Inputer.h"
+#include "InputStream.h"
#include "MessageReceiver.h"
#include "StringArray.h"
@@ -50,7 +50,7 @@ class SVNAdmin : public SVNBase
void rmtxns(const char *path, StringArray &transactions);
jlong recover(const char *path);
void lstxns(const char *path, MessageReceiver &messageReceiver);
- void load(const char *path, Inputer &dataIn, OutputStream &messageOut,
+ void load(const char *path, InputStream &dataIn, OutputStream &messageOut,
bool ignoreUUID, bool forceUUID, bool usePreCommitHook,
bool usePostCommitHook, const char *relativePath);
void listUnusedDBLogs(const char *path,
Modified: subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp?rev=949194&r1=949193&r2=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp Fri May 28 14:51:24 2010
@@ -31,7 +31,7 @@
#include "JNIByteArray.h"
#include "SVNAdmin.h"
#include "Revision.h"
-#include "Inputer.h"
+#include "InputStream.h"
#include "OutputStream.h"
#include "MessageReceiver.h"
#include "svn_props.h"
@@ -253,7 +253,7 @@ Java_org_apache_subversion_javahl_SVNAdm
if (JNIUtil::isExceptionThrown())
return;
- Inputer inputData(jinputData);
+ InputStream inputData(jinputData);
if (JNIUtil::isExceptionThrown())
return;
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java?rev=949194&r1=949193&r2=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java Fri May 28 14:51:24 2010
@@ -25,6 +25,7 @@ package org.apache.subversion.javahl;
import java.util.Set;
import java.io.OutputStream;
+import java.io.InputStream;
import org.apache.subversion.javahl.SVNAdmin.MessageReceiver;
@@ -134,7 +135,7 @@ public interface ISVNAdmin {
* @throws ClientException throw in case of problem
* @since 1.5
*/
- public abstract void load(String path, IInput dataInput,
+ public abstract void load(String path, InputStream dataInput,
OutputStream messageOutput, boolean ignoreUUID, boolean forceUUID,
boolean usePreCommitHook, boolean usePostCommitHook,
String relativePath) throws ClientException;
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java?rev=949194&r1=949193&r2=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java Fri May 28 14:51:24 2010
@@ -25,6 +25,7 @@ package org.apache.subversion.javahl;
import java.util.Set;
import java.io.OutputStream;
+import java.io.InputStream;
/**
* This class offers the same commands as the svnadmin commandline
@@ -185,7 +186,7 @@ public class SVNAdmin implements ISVNAdm
* @throws ClientException throw in case of problem
* @since 1.5
*/
- public native void load(String path, IInput dataInput,
+ public native void load(String path, InputStream dataInput,
OutputStream messageOutput, boolean ignoreUUID,
boolean forceUUID, boolean usePreCommitHook,
boolean usePostCommitHook, String relativePath)
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java?rev=949194&r1=949193&r2=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java Fri May 28 14:51:24 2010
@@ -23,11 +23,24 @@
package org.tigris.subversion.javahl;
+import java.io.IOException;
+
/**
* Interface for data to be received from subversion
* used for SVNAdmin.load and SVNAdmin.dump
*/
public interface InputInterface
- extends org.apache.subversion.javahl.IInput
{
+ /**
+ * read the number of data.length bytes from input.
+ * @param data array to store the read bytes.
+ * @throws IOException throw in case of problems.
+ */
+ public int read(byte [] data) throws IOException;
+
+ /**
+ * close the input
+ * @throws IOException throw in case of problems.
+ */
+ public void close() throws IOException;
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java?rev=949194&r1=949193&r2=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java Fri May 28 14:51:24 2010
@@ -25,6 +25,7 @@ package org.tigris.subversion.javahl;
import java.util.Set;
import java.io.OutputStream;
+import java.io.InputStream;
import java.io.IOException;
/**
@@ -289,7 +290,8 @@ public class SVNAdmin
{
try
{
- aSVNAdmin.load(path, dataInput, new OutputWrapper(messageOutput),
+ aSVNAdmin.load(path, new InputWrapper(dataInput),
+ new OutputWrapper(messageOutput),
ignoreUUID, forceUUID, usePreCommitHook,
usePostCommitHook, relativePath);
}
@@ -516,4 +518,33 @@ public class SVNAdmin
outputer.close();
}
}
+
+ private class InputWrapper extends InputStream
+ {
+ private InputInterface inputer;
+
+ InputWrapper(InputInterface inputer)
+ {
+ this.inputer = inputer;
+ }
+
+ public int read() throws IOException
+ {
+ byte[] b = new byte[1];
+ if (inputer.read(b) > 0)
+ return b[0];
+ else
+ return -1;
+ }
+
+ public int read(byte[] b) throws IOException
+ {
+ return inputer.read(b);
+ }
+
+ public void close() throws IOException
+ {
+ inputer.close();
+ }
+ }
}
Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java?rev=949194&r1=949193&r2=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java (original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java Fri May 28 14:51:24 2010
@@ -25,7 +25,9 @@ package org.apache.subversion.javahl;
import org.apache.subversion.javahl.callback.*;
import java.io.File;
+import java.io.FileInputStream;
import java.io.OutputStream;
+import java.io.InputStream;
import java.io.IOException;
import java.util.Map;
@@ -98,7 +100,7 @@ public class SVNAdminTests extends SVNTe
String testSrcdir = System.getProperty("test.srcdir",
"subversion/bindings/javahl");
File dump = new File(testSrcdir, "tests/data/issue2979.dump");
- IInput input = new FileInputer(dump);
+ InputStream input = new FileInputStream(dump);
OutputStream loadLog = new IgnoreOutputer();
admin.load(thisTest.getRepositoryPath(),
input, loadLog, true, true, false, false, null);
Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java?rev=949194&r1=949193&r2=949194&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java (original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java Fri May 28 14:51:24 2010
@@ -441,48 +441,6 @@ class SVNTests extends TestCase
}
/**
- * internal class which implements the InputInterface to read the data
- * from a file.
- */
- public class FileInputer implements IInput
- {
- /**
- * input file stream
- */
- FileInputStream myStream;
-
- /**
- * create a new object
- * @param inputName the file from which the data is read
- * @throws IOException If <code>inputName</code> is not
- * found.
- */
- public FileInputer(File inputName) throws IOException
- {
- myStream = new FileInputStream(inputName);
- }
-
- /**
- * read the number of data.length bytes from input.
- * @param data array to store the read bytes.
- * @throws IOException throw in case of problems.
- */
- public int read(byte[] data) throws IOException
- {
- return myStream.read(data);
- }
-
- /**
- * close the input
- * @throws IOException throw in case of problems.
- */
- public void close() throws IOException
- {
- myStream.close();
- }
- }
-
- /**
* Represents the repository and (possibly) the working copy for
* one test.
*/
@@ -705,7 +663,8 @@ class SVNTests extends TestCase
conf.getAbsolutePath(), fsType);
if (loadGreek)
{
- admin.load(repos.getAbsolutePath(), new FileInputer(greekDump),
+ admin.load(repos.getAbsolutePath(),
+ new FileInputStream(greekDump),
new IgnoreOutputer(), false, false, false, false,
null);
}