void Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStream()

in java/com_spotify_voyager_jni_Index.cpp [950:973]


void Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStream(
    JNIEnv *env, jobject self, jobject jInputStream) {
  try {
    auto inputStream = std::make_shared<JavaInputStream>(env, jInputStream);
    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());
    }
  }
}