Mercurial > hg > orthanc-java
diff Plugin/JavaEnvironment.h @ 5:c8f19e93ff99
reorganization
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 19 Oct 2023 08:49:07 +0200 |
parents | |
children | 1c407ba1d311 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugin/JavaEnvironment.h Thu Oct 19 08:49:07 2023 +0200 @@ -0,0 +1,90 @@ +/** + * SPDX-FileCopyrightText: 2023 Sebastien Jodogne, UCLouvain, Belgium + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/** + * Java plugin for Orthanc + * Copyright (C) 2023 Sebastien Jodogne, UCLouvain, Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + **/ + + +#pragma once + +#include "JavaVirtualMachine.h" + +#include <orthanc/OrthancCPlugin.h> + +#include <vector> + + +class JavaEnvironment : public NonCopyable +{ +private: + JavaVM *jvm_; + JNIEnv *env_; + +public: + JavaEnvironment(JNIEnv* env); + + JavaEnvironment(JavaVirtualMachine& jvm); + + ~JavaEnvironment(); + + JNIEnv& GetValue(); + + void CheckException(); + + void ThrowException(const std::string& fqn, + const std::string& message); + + void ThrowOrthancException(const std::string& message); + + void ThrowOrthancException(OrthancPluginErrorCode code); + + static void ThrowOrthancException(JNIEnv* env, + const std::string& message); + + static void ThrowOrthancException(JNIEnv* env, + OrthancPluginErrorCode code); + + void RegisterNatives(const std::string& fqn, + const std::vector<JNINativeMethod>& methods); + + void RunGarbageCollector(); + + jclass FindClass(const std::string& fqn); + + jclass GetObjectClass(jobject obj); + + jmethodID GetMethodID(jclass c, + const std::string& method, + const std::string& signature); + + jobject ConstructJavaWrapper(const std::string& fqn, + void* nativeObject); + + jbyteArray ConstructByteArray(const size_t size, + const void* data); + + jbyteArray ConstructByteArray(const std::string& data) + { + return ConstructByteArray(data.size(), data.c_str()); + } + + jobject ConstructEnumValue(const std::string& fqn, + int value); +};