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
* ====================================================================
26
#include "jni_iterator.hpp"
28
#include "svn_private_config.h"
32
// Class Java::BaseIterator
34
const char* const BaseIterator::m_class_name = "java/util/Iterator";
36
BaseIterator::ClassImpl::ClassImpl(Env env, jclass cls)
37
: Object::ClassImpl(env, cls),
38
m_mid_has_next(env.GetMethodID(cls, "hasNext", "()Z")),
39
m_mid_next(env.GetMethodID(cls, "next", "()Ljava/lang/Object;"))
42
BaseIterator::ClassImpl::~ClassImpl() {}
44
jobject BaseIterator::next()
48
return m_env.CallObjectMethod(m_jthis, impl().m_mid_next);
50
catch (const SignalExceptionThrown&)
52
// Just rethrow if it's not a NoSuchElementException.
53
if (!m_env.IsInstanceOf(
54
m_env.ExceptionOccurred(),
55
ClassCache::get_exc_no_such_element(m_env)->get_class()))
58
m_env.ExceptionClear();
59
throw std::range_error(_("Iterator out of bounds"));