diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 6e214e4..fca6f23 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -9,7 +9,7 @@ jobs:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
- - uses: s4u/setup-maven-action@v1.14.0
+ - uses: s4u/setup-maven-action@v1.18.0
with:
java-version: '17'
java-distribution: temurin
diff --git a/application/META-INF/MANIFEST.MF b/application/META-INF/MANIFEST.MF
index 2039bb9..323fcde 100644
--- a/application/META-INF/MANIFEST.MF
+++ b/application/META-INF/MANIFEST.MF
@@ -2,19 +2,20 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: JSON node documentation generator
Bundle-SymbolicName: de.philippkatz.knime.jsondocgen.application;singleton:=true
-Bundle-Version: 1.14.2.qualifier
+Bundle-Version: 1.15.0.qualifier
Bundle-Vendor: Philipp Katz; Selenium Nodes
Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.6.0,5.0.0)",
- org.knime.workbench.core;bundle-version="[5.3.0,6.0.0)",
- org.knime.workbench.repository;bundle-version="[5.3.0,6.0.0)",
+ org.knime.workbench.core;bundle-version="[5.5.0,6.0.0)",
+ org.knime.workbench.repository;bundle-version="[5.5.0,6.0.0)",
org.eclipse.equinox.p2.metadata;bundle-version="[2.3.100,3.0.0)",
org.eclipse.equinox.p2.core;bundle-version="[2.4.100,3.0.0)",
org.eclipse.equinox.p2.engine;bundle-version="[2.4.100,3.0.0)",
- org.knime.product;bundle-version="[5.3.0,6.0.0)",
+ org.knime.product;bundle-version="[5.5.0,6.0.0)",
org.apache.log4j;bundle-version="[1.2.0,2.0.0)",
com.google.gson;bundle-version="[2.8.6,3.0.0)",
- org.knime.workflow.migration;bundle-version="[5.3.0,6.0.0)"
+ org.knime.workflow.migration;bundle-version="[5.5.0,6.0.0)",
+ org.knime.core.ui;bundle-version="[5.5.0,6.0.0)"
Bundle-ClassPath: .,
lib-download/mockito-core.jar,
lib-download/byte-buddy.jar,
diff --git a/application/pom.xml b/application/pom.xml
index d02960e..2f9989d 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -4,13 +4,13 @@
4.0.0
de.philippkatz.knime.jsondocgen.application
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
eclipse-plugin
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
diff --git a/application/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGenerator.java b/application/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGenerator.java
index 1473500..c8b1f37 100644
--- a/application/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGenerator.java
+++ b/application/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGenerator.java
@@ -88,6 +88,8 @@
import org.knime.core.node.port.PortTypeRegistry;
import org.knime.core.node.streamable.PartitionInfo;
import org.knime.core.util.IEarlyStartup;
+import org.knime.core.webui.node.dialog.NodeDialogFactory;
+import org.knime.core.webui.node.dialog.kai.KaiNodeInterfaceFactory;
import org.knime.workbench.repository.RepositoryManager;
import org.knime.workbench.repository.model.Category;
import org.knime.workbench.repository.model.IContainerObject;
@@ -421,6 +423,7 @@ private static void processPorts(Collection> portObj
* @return true, if the element was added to the documentation, false if it has
* been skipped
*/
+ @SuppressWarnings({ "restriction", "unchecked" })
private boolean generate(final File directory, final IRepositoryObject current, final IRepositoryObject parent,
CategoryDocBuilder parentCategory) throws TransformerException, Exception {
@@ -474,6 +477,15 @@ private boolean generate(final File directory, final IRepositoryObject current,
} catch (Throwable t) {
LOGGER.warn(String.format("Could not create NodeModel for %s", factory.getClass().getName()), t);
}
+
+ Node node = new Node((NodeFactory) factory);
+ var nodeDescription = node.invokeGetNodeDescription();
+ builder.setKeywords(Arrays.asList(nodeDescription.getKeywords()));
+ builder.setSinceVersion(nodeDescription.getSinceVersion().map(v -> v.toString()).orElse(null));
+
+ builder.setHasModernDialog(hasModernDialog(factory));
+ // since KNIME 5.5; https://github.com/knime/knime-core-ui/commit/8769e99ab4df0a435fb90936d664fdc6c6ac2b6d
+ builder.setHasKaiInterface(factory instanceof KaiNodeInterfaceFactory);
if (deprecated) {
// there are two locations, where nodes can be set to deprecated:
@@ -717,8 +729,14 @@ private static String getPath(final IRepositoryObject object) {
return "";
}
}
-
+
/* package */ static enum PortDirection {
In, Out
}
+
+ @SuppressWarnings("restriction")
+ static boolean hasModernDialog(NodeFactory> nodeFactory) {
+ // supported since KNIME 4.5
+ return nodeFactory instanceof NodeDialogFactory nodeDialogFactory && nodeDialogFactory.hasNodeDialog();
+ }
}
diff --git a/application/src/de/philippkatz/knime/jsondocgen/docs/NodeDoc.java b/application/src/de/philippkatz/knime/jsondocgen/docs/NodeDoc.java
index b12dabd..333ff4d 100644
--- a/application/src/de/philippkatz/knime/jsondocgen/docs/NodeDoc.java
+++ b/application/src/de/philippkatz/knime/jsondocgen/docs/NodeDoc.java
@@ -27,6 +27,14 @@ public static final class NodeDocBuilder extends AbstractDocBuilder {
private List dynamicInPorts;
/** @since 1.12 -- added with KNIME 4.2 */
private List dynamicOutPorts;
+ /** @since v1.15 */
+ private boolean hasModernDialog;
+ /** @since v1.15 */
+ private boolean hasKaiInterface;
+ /** @since v1.15 */
+ private List keywords;
+ /** @since v1.15 */
+ private String sinceVersion;
public NodeDocBuilder setIntro(String intro) {
this.intro = intro;
return this;
@@ -103,8 +111,28 @@ public NodeDocBuilder setDynamicOutPorts(List dynamicOutPorts)
this.dynamicOutPorts = dynamicOutPorts;
return this;
}
+ /** @since v1.15 */
+ public NodeDocBuilder setHasModernDialog(boolean hasModernDialog) {
+ this.hasModernDialog = hasModernDialog;
+ return this;
+ }
+ /** @since v1.15 */
+ public NodeDocBuilder setHasKaiInterface(boolean hasKaiInterface) {
+ this.hasKaiInterface = hasKaiInterface;
+ return this;
+ }
+ /** @since v1.15 */
+ public NodeDocBuilder setKeywords(List keywords) {
+ this.keywords = keywords;
+ return this;
+ }
+ /** @since v1.15 */
+ public NodeDocBuilder setSinceVersion(String sinceVersion) {
+ this.sinceVersion = sinceVersion;
+ return this;
+ }
}
-
+
public static final class OptionTab {
public final String name;
public final String description;
@@ -211,6 +239,14 @@ public DynamicPortGroup(Integer insertBefore, String name, String groupIdentifie
public final List dynamicInPorts;
/** @since v1.12 -- added with KNIME 4.2 */
public final List dynamicOutPorts;
+ /** @since v1.15 */
+ public final boolean hasModernDialog;
+ /** @since v1.15 */
+ public final boolean hasKaiInterface;
+ /** @since v1.15 */
+ public final List keywords;
+ /** @since v1.15 */
+ public final String sinceVersion;
private NodeDoc(NodeDocBuilder builder) {
super(builder);
@@ -230,6 +266,10 @@ private NodeDoc(NodeDocBuilder builder) {
links = builder.links;
dynamicInPorts = copyOrNull(builder.dynamicInPorts);
dynamicOutPorts = copyOrNull(builder.dynamicOutPorts);
+ hasModernDialog = builder.hasModernDialog;
+ hasKaiInterface = builder.hasKaiInterface;
+ keywords = copyOrNull(builder.keywords);
+ sinceVersion = builder.sinceVersion;
}
private static List convert(List ports) {
diff --git a/feature/feature.xml b/feature/feature.xml
index 83cc352..fe7a387 100644
--- a/feature/feature.xml
+++ b/feature/feature.xml
@@ -2,7 +2,7 @@
4.0.0
de.philippkatz.knime.jsondocgen.feature
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
eclipse-feature
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
diff --git a/p2/pom.xml b/p2/pom.xml
index df7280b..050f1a4 100644
--- a/p2/pom.xml
+++ b/p2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
de.philippkatz.knime.jsondocgen.p2
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
eclipse-repository
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index 34ee2cb..76cb764 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
pom
@@ -39,7 +39,7 @@
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen.targetplatform
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
diff --git a/readme.md b/readme.md
index 6135d15..5a89d0f 100644
--- a/readme.md
+++ b/readme.md
@@ -30,6 +30,11 @@ https://download.nodepit.com/jsondocgen/5.0
https://download.nodepit.com/jsondocgen/5.1
https://download.nodepit.com/jsondocgen/5.2
https://download.nodepit.com/jsondocgen/5.3
+https://download.nodepit.com/jsondocgen/5.4
+https://download.nodepit.com/jsondocgen/5.5
+https://download.nodepit.com/jsondocgen/5.6
+https://download.nodepit.com/jsondocgen/5.7
+https://download.nodepit.com/jsondocgen/5.8
```
Beside that, the `master` branch is available through the following software site:
@@ -262,7 +267,7 @@ License
- - -
-Copyright (c) 2017 – 2024 Philipp Katz
+Copyright (c) 2017 – 2025 Philipp Katz
[1]: https://seleniumnodes.com
[2]: https://github.com/NodePit/knime-json-node-doc-generator/issues
diff --git a/targetplatform/de.philippkatz.knime.jsondocgen.targetplatform.target b/targetplatform/de.philippkatz.knime.jsondocgen.targetplatform.target
index 6224813..b335733 100644
--- a/targetplatform/de.philippkatz.knime.jsondocgen.targetplatform.target
+++ b/targetplatform/de.philippkatz.knime.jsondocgen.targetplatform.target
@@ -1,5 +1,5 @@
-
+
@@ -17,7 +17,7 @@
-
+
diff --git a/targetplatform/pom.xml b/targetplatform/pom.xml
index 1bc8d10..b0c1291 100644
--- a/targetplatform/pom.xml
+++ b/targetplatform/pom.xml
@@ -9,7 +9,7 @@
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
diff --git a/tests/META-INF/MANIFEST.MF b/tests/META-INF/MANIFEST.MF
index e2cf4a1..cb0f54f 100644
--- a/tests/META-INF/MANIFEST.MF
+++ b/tests/META-INF/MANIFEST.MF
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: JSON node documentation generator tests
Bundle-SymbolicName: de.philippkatz.knime.jsondocgen.tests;singleton:=true
-Bundle-Version: 1.14.2.qualifier
+Bundle-Version: 1.15.0.qualifier
Bundle-Vendor: Philipp Katz; Selenium Nodes
Bundle-RequiredExecutionEnvironment: JavaSE-17
-Fragment-Host: de.philippkatz.knime.jsondocgen.application;bundle-version="1.14.2"
+Fragment-Host: de.philippkatz.knime.jsondocgen.application;bundle-version="1.15.0"
Require-Bundle: org.junit;bundle-version="4.12.0"
diff --git a/tests/pom.xml b/tests/pom.xml
index 99b3379..5bd8c13 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -4,13 +4,13 @@
4.0.0
de.philippkatz.knime.jsondocgen.tests
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
eclipse-test-plugin
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.14.2-SNAPSHOT
+ 1.15.0-SNAPSHOT
diff --git a/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_ConfigurableNodeFactory.java b/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_ConfigurableNodeFactory_Test.java
similarity index 94%
rename from tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_ConfigurableNodeFactory.java
rename to tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_ConfigurableNodeFactory_Test.java
index 25da93c..adb9247 100644
--- a/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_ConfigurableNodeFactory.java
+++ b/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_ConfigurableNodeFactory_Test.java
@@ -11,7 +11,7 @@
import org.knime.core.node.NodeView;
import org.knime.core.node.context.NodeCreationConfiguration;
-public class JsonNodeDocuGeneratorTest_ConfigurableNodeFactory {
+public class JsonNodeDocuGeneratorTest_ConfigurableNodeFactory_Test {
private static final class ConfigurableStubNodeFactory extends ConfigurableNodeFactory {
diff --git a/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_DynamicPorts.java b/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_DynamicPorts_Test.java
similarity index 97%
rename from tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_DynamicPorts.java
rename to tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_DynamicPorts_Test.java
index bb4c29a..028c9d9 100644
--- a/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_DynamicPorts.java
+++ b/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_DynamicPorts_Test.java
@@ -16,7 +16,7 @@
import de.philippkatz.knime.jsondocgen.JsonNodeDocuGenerator.PortDirection;
import de.philippkatz.knime.jsondocgen.docs.NodeDoc.DynamicPortGroup;
-public class JsonNodeDocuGeneratorTest_DynamicPorts {
+public class JsonNodeDocuGeneratorTest_DynamicPorts_Test {
// https://github.com/knime/knime-core/blob/master/org.knime.core/src/eclipse/org/knime/core/node/NodeDescription41Proxy.java
// https://github.com/knime/knime-excel/blob/master/org.knime.ext.poi2/src/org/knime/ext/poi2/node/write3/XLSWriter2NodeFactory.java
diff --git a/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_NewFlags_Test.java b/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_NewFlags_Test.java
new file mode 100644
index 0000000..c512113
--- /dev/null
+++ b/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_NewFlags_Test.java
@@ -0,0 +1,63 @@
+package de.philippkatz.knime.jsondocgen;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.knime.core.node.NodeDialogPane;
+import org.knime.core.node.NodeFactory;
+import org.knime.core.node.NodeModel;
+import org.knime.core.node.NodeView;
+import org.knime.core.webui.node.dialog.NodeDialog;
+import org.knime.core.webui.node.dialog.NodeDialogFactory;
+import org.knime.core.webui.node.dialog.kai.KaiNodeInterface;
+import org.knime.core.webui.node.dialog.kai.KaiNodeInterfaceFactory;
+
+public class JsonNodeDocuGeneratorTest_NewFlags_Test {
+
+ @SuppressWarnings("restriction")
+ private static class MyNodeFactory extends NodeFactory
+ implements KaiNodeInterfaceFactory, NodeDialogFactory {
+
+ @Override
+ public NodeModel createNodeModel() {
+ return null;
+ }
+
+ @Override
+ protected int getNrNodeViews() {
+ return 0;
+ }
+
+ @Override
+ public NodeView createNodeView(int viewIndex, NodeModel nodeModel) {
+ return null;
+ }
+
+ @Override
+ protected boolean hasDialog() {
+ return false;
+ }
+
+ @Override
+ protected NodeDialogPane createNodeDialogPane() {
+ return null;
+ }
+
+ @Override
+ public KaiNodeInterface createKaiNodeInterface() {
+ return null;
+ }
+
+ @Override
+ public NodeDialog createNodeDialog() {
+ return null;
+ }
+
+ }
+
+ @Test
+ public void test() {
+ assertTrue(JsonNodeDocuGenerator.hasModernDialog(new MyNodeFactory()));
+ }
+
+}