annotate Sphinx/source/plugins/java.rst @ 1077:df28170c2af3

documenting java
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 14 Jun 2024 17:39:11 +0200
parents d2be251975d1
children a8d6ae201eeb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
999
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 .. _java-plugin:
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 Java plugin for Orthanc
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 =======================
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 .. contents::
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 Overview
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 --------
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 This plugin can be used to write :ref:`Orthanc plugins
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 <creating-plugins>` using the `Java programming language
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 <https://en.wikipedia.org/wiki/Java_(programming_language)>`__ instead
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 of the more complex C/C++ programming languages.
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17
1077
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
18 Java applications for Orthanc have access to more features and a more
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
19 consistent SDK than :ref:`Lua scripts <lua>`. The largest part of the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
20 Java API is automatically generated from the `Orthanc plugin SDK in C
1075
d2be251975d1 Orthanc 1.12.4
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1055
diff changeset
21 <https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.4/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
999
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 using the `Clang <https://en.wikipedia.org/wiki/Clang>`__ compiler
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 front-end.
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 As of release 1.0 of the plugin, the coverage of the C SDK is about
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 76% (122 functions are automatically wrapped in Java out of a total of
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27 160 functions from the Orthanc SDK 1.10.0).
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28
1055
ebe3214f3ab0 added citation instructions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1021
diff changeset
29 **For researchers**: `Please cite this paper
ebe3214f3ab0 added citation instructions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1021
diff changeset
30 <https://doi.org/10.5220/0012384600003657>`__.
ebe3214f3ab0 added citation instructions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1021
diff changeset
31
999
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33 Source code
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34 -----------
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36 * Link to the `official releases of this plugin
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37 <https://orthanc.uclouvain.be/downloads/sources/orthanc-java/index.html>`__.
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 * Link to the `code repository
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40 <https://orthanc.uclouvain.be/hg/orthanc-java/>`__.
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
41
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42
1077
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
43 Compilation
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
44 -----------
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
45
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
46 The Java plugin for Orthanc implies the compilation of two modules:
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
47
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
48 - The **plugin shared library**, which is needed for all users to run
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
49 Java applications from within Orthanc, and
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
50
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
51 - The **Orthanc Java SDK**, which is needed for developers of Java
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
52 applications for Orthanc.
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
53
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
54
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
55 .. _java_shared_library:
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
56
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
57 Shared library
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
58 ^^^^^^^^^^^^^^
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
59
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
60 .. highlight:: text
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
61
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
62 If targeting **GNU/Linux distributions**, compiling the shared library
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
63 of the Java plugin (which is written in C++) works as follows::
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
64
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
65 $ mkdir BuildPlugin
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
66 $ cd BuildPlugin
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
67 $ cmake ../Plugin -DCMAKE_BUILD_TYPE=Release
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
68 $ make
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
69
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
70 This requires the `JNI (Java Native Interface)
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
71 <https://en.wikipedia.org/wiki/Java_Native_Interface>`__ to be
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
72 installed on your system (on Ubuntu setups, you can simply install the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
73 ``default-jdk`` package). This produces the ``libOrthancJava.so``
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
74 shared library. This shared library depends on the very specific
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
75 configuration of your system, so precompiled binaries are not
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
76 available.
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
77
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
78 If targeting **Microsoft Windows**, the supported way of compiling the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
79 plugin consists in using the MinGW toolchains to cross-compile the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
80 shared library on a GNU/Linux host::
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
81
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
82 $ mkdir BuildWindows64
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
83 $ cd BuildWindows64
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
84 $ cmake ../Plugin -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release \
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
85 -DCMAKE_TOOLCHAIN_FILE=../Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
86 $ make
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
87
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
88 This produces the ``libOrthancJava.dll`` shared library. Contrarily to
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
89 GNU/Linux distributions, precompiled binaries are available:
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
90
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
91 * For `Microsoft Windows 32 <https://orthanc.uclouvain.be/downloads/windows-32/orthanc-java/index.html>`__, and
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
92 * For `Microsoft Windows 64 <https://orthanc.uclouvain.be/downloads/windows-64/orthanc-java/index.html>`__.
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
93
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
94
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
95 .. _java_sdk:
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
96
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
97 Java SDK
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
98 ^^^^^^^^
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
99
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
100 In addition to the shared library that is needed by all the users, the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
101 developers of Java applications for Orthanc need a set of Java classes
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
102 that provide access to the native functions of the Orthanc plugin SDK.
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
103
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
104 The Orthanc Java SDK is available in the folder ``JavaSDK`` of the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
105 source distribution. A cross-platform ``.jar`` file containing the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
106 Orthanc Java SDK can be compiled as follows::
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
107
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
108 $ mkdir BuildJavaSDK
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
109 $ cd BuildJavaSDK
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
110 $ cmake ../JavaSDK
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
111 $ make
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
112
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
113 This requires a JDK to be installed on your computer. This generates
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
114 the file ``OrthancJavaSDK.jar``.
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
115
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
116
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
117 Usage
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
118 -----
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
119
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
120 Here is a minimal example of a Java application for Orthanc:
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
121
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
122 .. literalinclude:: java/HelloWorld.java
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
123 :language: java
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
124
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
125 If both the :ref:`shared library <java_shared_library>` and the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
126 :ref:`Java SDK <java_sdk>` are located in the current directory, here
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
127 is a :ref:`configuration file <configuration>` to run this sample Java
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
128 application on a GNU/Linux distribution:
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
129
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
130 .. literalinclude:: java/HelloWorld.json
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
131 :language: json
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
132
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
133 Orthanc can then be started as follows (the path to ``libjvm.so`` must
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
134 be adapted depending on your configuration)::
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
135
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
136 $ javac HelloWorld.java -classpath ./OrthancJavaSDK.jar
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
137 $ LD_PRELOAD=/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so ./Orthanc ./HelloWorld.json
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
138
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
139 On Microsoft Windows, one would use the following configuration file
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
140 (beware of the ``:`` that is replaced by ``;`` in the ``Classpath``
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
141 option):
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
142
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
143 .. literalinclude:: java/HelloWorldWindows.json
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
144 :language: json
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
145
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
146 This example simply outputs a line in the logs of Orthanc. Indeed, the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
147 ``static`` section of the class that is specified in the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
148 ``InitializationClass`` option is executed during the initialization
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
149 of the plugin.
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
150
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
151 You can find the full **Javadoc documentation of the Orthanc Java
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
152 SDK** `at the following location
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
153 <https://orthanc.uclouvain.be/javadoc/>`__.
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
154
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
155
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
156 Examples
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
157 --------
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
158
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
159 Adding a route in the REST API of Orthanc
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
160 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
161
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
162 New routes can be added to the REST API of Orthanc as follows:
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
163
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
164 .. literalinclude:: java/ExtendingRest.java
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
165 :language: java
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
166
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
167 Reacting to events
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
168 ^^^^^^^^^^^^^^^^^^
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
169
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
170 Java applications can react to Orthanc events as follows:
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
171
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
172 .. literalinclude:: java/Changes.java
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
173 :language: java
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
174
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
175
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
176 Additional samples
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
177 ^^^^^^^^^^^^^^^^^^
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
178
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
179 More advanced samples using Maven can be found `in the source
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
180 distribution of the Java plugin
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
181 <https://orthanc.uclouvain.be/hg/orthanc-java/file/default/Samples>`__.
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
182
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
183
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
184 FHIR server for Orthanc
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
185 -----------------------
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
186
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
187 Instructions for using the sample FHIR server for Orthanc that is
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
188 described in the `reference paper
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
189 <https://doi.org/10.5220/0012384600003657>`__ can be found in the
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
190 `source distribution
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
191 <https://orthanc.uclouvain.be/hg/orthanc-java/file/default/Samples/FHIR/NOTES.txt>`__.
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
192
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
193
999
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
194 Licensing
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
195 ---------
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
196
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
197 This plugin is licensed under the terms of the `GPLv3+ license
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
198 <https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License>`__,
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
199 which is the same as the core of Orthanc.
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
200
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
201 This has an important consequence: If you distribute Orthanc to
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
202 clients together with one Java plugin, you **must** disclose the
1077
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
203 source code of your Java plugins to the Orthanc community under the
999
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
204 terms of the GPL or AGPL licenses.
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
205
1077
df28170c2af3 documenting java
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1075
diff changeset
206 We suggest you to put the source code of your Java plugins on the
999
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
207 dedicated `"OrthancContributed" repository on GitHub
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
208 <https://github.com/jodogne/OrthancContributed/tree/master/Plugins>`__,
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
209 and/or to send it to the `Orthanc Users discussion forum
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
210 <https://discourse.orthanc-server.org>`__.
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
211
3b62529bfe91 added java plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
212 Check out the :ref:`FAQ about licensing <licensing>` for more context.