summaryrefslogtreecommitdiff
path: root/subversion/bindings/javahl/native/ListCallback.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/bindings/javahl/native/ListCallback.cpp')
-rw-r--r--subversion/bindings/javahl/native/ListCallback.cpp60
1 files changed, 5 insertions, 55 deletions
diff --git a/subversion/bindings/javahl/native/ListCallback.cpp b/subversion/bindings/javahl/native/ListCallback.cpp
index 9759ff6..1cd089d 100644
--- a/subversion/bindings/javahl/native/ListCallback.cpp
+++ b/subversion/bindings/javahl/native/ListCallback.cpp
@@ -87,13 +87,13 @@ ListCallback::doList(const char *path,
static jmethodID mid = 0;
if (mid == 0)
{
- jclass clazz = env->FindClass(JAVA_PACKAGE"/callback/ListCallback");
+ jclass clazz = env->FindClass(JAVAHL_CLASS("/callback/ListCallback"));
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN(SVN_NO_ERROR);
mid = env->GetMethodID(clazz, "doEntry",
- "(L"JAVA_PACKAGE"/types/DirEntry;"
- "L"JAVA_PACKAGE"/types/Lock;)V");
+ "(" JAVAHL_ARG("/types/DirEntry;")
+ JAVAHL_ARG("/types/Lock;") ")V");
if (JNIUtil::isJavaExceptionThrown() || mid == 0)
POP_AND_RETURN(SVN_NO_ERROR);
}
@@ -113,10 +113,8 @@ ListCallback::doList(const char *path,
// call the Java method
env->CallVoidMethod(m_callback, mid, jdirentry, jlock);
- // No need to check for exception here, because we'll just return anyway
- env->PopLocalFrame(NULL);
- return SVN_NO_ERROR;
+ POP_AND_RETURN_EXCEPTION_AS_SVNERROR();
}
/**
@@ -126,53 +124,5 @@ jobject
ListCallback::createJavaDirEntry(const char *path, const char *absPath,
const svn_dirent_t *dirent)
{
- JNIEnv *env = JNIUtil::getEnv();
-
- // Create a local frame for our references
- env->PushLocalFrame(LOCAL_FRAME_SIZE);
- if (JNIUtil::isJavaExceptionThrown())
- return SVN_NO_ERROR;
-
- jclass clazz = env->FindClass(JAVA_PACKAGE"/types/DirEntry");
- if (JNIUtil::isJavaExceptionThrown())
- POP_AND_RETURN_NULL;
-
- static jmethodID mid = 0;
- if (mid == 0)
- {
- mid = env->GetMethodID(clazz, "<init>",
- "(Ljava/lang/String;Ljava/lang/String;"
- "L"JAVA_PACKAGE"/types/NodeKind;"
- "JZJJLjava/lang/String;)V");
- if (JNIUtil::isJavaExceptionThrown())
- POP_AND_RETURN_NULL;
- }
-
- jstring jPath = JNIUtil::makeJString(path);
- if (JNIUtil::isJavaExceptionThrown())
- POP_AND_RETURN_NULL;
-
- jstring jAbsPath = JNIUtil::makeJString(absPath);
- if (JNIUtil::isJavaExceptionThrown())
- POP_AND_RETURN_NULL;
-
- jobject jNodeKind = EnumMapper::mapNodeKind(dirent->kind);
- if (JNIUtil::isJavaExceptionThrown())
- POP_AND_RETURN_NULL;
-
- jlong jSize = dirent->size;
- jboolean jHasProps = (dirent->has_props? JNI_TRUE : JNI_FALSE);
- jlong jLastChangedRevision = dirent->created_rev;
- jlong jLastChanged = dirent->time;
- jstring jLastAuthor = JNIUtil::makeJString(dirent->last_author);
- if (JNIUtil::isJavaExceptionThrown())
- POP_AND_RETURN_NULL;
-
- jobject ret = env->NewObject(clazz, mid, jPath, jAbsPath, jNodeKind,
- jSize, jHasProps, jLastChangedRevision,
- jLastChanged, jLastAuthor);
- if (JNIUtil::isJavaExceptionThrown())
- POP_AND_RETURN_NULL;
-
- return env->PopLocalFrame(ret);
+ return CreateJ::DirEntry(path, absPath, dirent);
}