static void loadChildren(JNIEnv* env, jobject jparent, shared_ptr<ePub3::NavigationElement> parent) { auto children = parent->Children(); for (auto childIt = children.begin(); childIt != children.end(); ++childIt) { auto instance = &*childIt; auto navigationElement = instance->get(); if (ePub3::NavigationPoint *navigationPoint = dynamic_cast<ePub3::NavigationPoint*>(navigationElement)) { jni::StringUTF title(env, (std::string&) navigationPoint->Title().stl_str()); jstring jtitle = (jstring) title; jni::StringUTF content(env, (std::string&) navigationPoint->Content().stl_str()); jstring jcontent = (jstring) content; jobject jchild = env->CallStaticObjectMethod(javaJavaObjectsFactoryClass, createNavigationPoint_ID, jtitle, jcontent); env->DeleteLocalRef(jtitle); env->DeleteLocalRef(jcontent); env->CallStaticVoidMethod(javaJavaObjectsFactoryClass, addElementToParent_ID, jparent, jchild); loadChildren(env, jchild, *instance); env->DeleteLocalRef(jchild); } } }