3
* ====================================================================
4
* Licensed to the Apache Software Foundation (ASF) under one
5
* or more contributor license agreements. See the NOTICE file
6
* distributed with this work for additional information
7
* regarding copyright ownership. The ASF licenses this file
8
* to you under the Apache License, Version 2.0 (the
9
* "License"); you may not use this file except in compliance
10
* with the License. You may obtain a copy of the License at
12
* http://www.apache.org/licenses/LICENSE-2.0
14
* Unless required by applicable law or agreed to in writing,
15
* software distributed under the License is distributed on an
16
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
* KIND, either express or implied. See the License for the
18
* specific language governing permissions and limitations
20
* ====================================================================
23
* @file ReposVerifyCallback.cpp
24
* @brief Implementation of the class ReposVerifyCallback
27
#include "ReposVerifyCallback.h"
30
ReposVerifyCallback::ReposVerifyCallback(jobject jverify_cb)
31
: m_jverify_cb(jverify_cb)
34
ReposVerifyCallback::~ReposVerifyCallback()
36
// Don't need to destroy the reference, since it was given us by Java
40
ReposVerifyCallback::callback(void *baton,
41
svn_revnum_t revision,
42
svn_error_t *verify_err,
43
apr_pool_t *scratch_pool)
48
static_cast<ReposVerifyCallback*>(baton)
49
->onVerifyError(revision, verify_err, scratch_pool);
50
if (JNIUtil::isJavaExceptionThrown())
51
return JNIUtil::wrapJavaException();
56
ReposVerifyCallback::onVerifyError(svn_revnum_t revision,
57
svn_error_t *verify_err,
58
apr_pool_t *scratch_pool)
60
JNIEnv *env = JNIUtil::getEnv();
62
// Java method id will not change during the time this library is
63
// loaded, so it can be cached.
64
static jmethodID mid = 0;
67
jclass clazz = env->FindClass(JAVAHL_CLASS("/callback/ReposVerifyCallback"));
68
if (JNIUtil::isJavaExceptionThrown())
71
mid = env->GetMethodID(clazz, "onVerifyError",
72
"(J" JAVAHL_ARG("/ClientException;") ")V");
73
if (JNIUtil::isJavaExceptionThrown() || mid == 0)
76
env->DeleteLocalRef(clazz);
79
jthrowable jverify_err = NULL;
81
jverify_err = JNIUtil::createClientException(svn_error_dup(verify_err), NULL);
82
if (JNIUtil::isJavaExceptionThrown())
85
env->CallVoidMethod(m_jverify_cb, mid, jlong(revision), jverify_err);
87
env->DeleteLocalRef(jverify_err);