void Java_com_spotify_voyager_jni_Index_nativeLoadFromFile()

in java/com_spotify_voyager_jni_Index.cpp [922:948]


void Java_com_spotify_voyager_jni_Index_nativeLoadFromFile(JNIEnv *env,
                                                           jobject self,
                                                           jstring filename) {
  try {
    auto inputStream =
        std::make_shared<FileInputStream>(toString(env, filename));
    std::unique_ptr<voyager::Metadata::V1> metadata =
        voyager::Metadata::loadFromStream(inputStream);

    if (metadata) {
      setHandle<Index>(
          env, self,
          loadTypedIndexFromMetadata(std::move(metadata), inputStream)
              .release());
    } else {
      throw std::domain_error(
          "Provided index file has no metadata and no index parameters were "
          "specified. Must either provide an index with metadata or specify "
          "storageDataType, spaceType, and numDimensions.");
    }

  } catch (std::exception const &e) {
    if (!env->ExceptionCheck()) {
      env->ThrowNew(env->FindClass("java/lang/RuntimeException"), e.what());
    }
  }
}