diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index fca6f23..82b4caa 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -21,8 +21,11 @@ jobs:
path: ~/.m2
key: 'm2-cache'
+ - name: Install Xvfb
+ run: sudo apt-get update && sudo apt-get install -y xvfb libgtk-3-0
+
- name: Build
- run: mvn -V -B clean install
+ run: xvfb-run -a mvn -V -B clean install
- name: Publish to NodePit
# https://stackoverflow.com/questions/58139406/only-run-job-on-specific-branch-with-github-actions
diff --git a/application/META-INF/MANIFEST.MF b/application/META-INF/MANIFEST.MF
index bd370b6..343530e 100644
--- a/application/META-INF/MANIFEST.MF
+++ b/application/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ 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.16.0.qualifier
+Bundle-Version: 1.16.1.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)",
diff --git a/application/pom.xml b/application/pom.xml
index 0df1c87..695522a 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -4,13 +4,13 @@
4.0.0
de.philippkatz.knime.jsondocgen.application
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
eclipse-plugin
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
diff --git a/application/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGenerator.java b/application/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGenerator.java
index 6ca489d..520fd5f 100644
--- a/application/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGenerator.java
+++ b/application/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGenerator.java
@@ -464,8 +464,9 @@ private static void processPorts(Collection> portObj
* been skipped
*/
@SuppressWarnings({ "restriction", "unchecked" })
- private boolean generate(final IRepositoryObject current, final IRepositoryObject parent,
- CategoryDocBuilder parentCategory, Set hiddenNodeFactoryIds) throws TransformerException, Exception {
+ /* package */ boolean generate(final IRepositoryObject current, final IRepositoryObject parent,
+ CategoryDocBuilder parentCategory, Set hiddenNodeFactoryIds)
+ throws TransformerException, Exception {
if (current instanceof NodeTemplate nodeTemplate) {
@@ -514,14 +515,14 @@ private boolean generate(final IRepositoryObject current, final IRepositoryObjec
List dynamicOutPorts = getDynamicPorts(factory, PortDirection.Out);
builder.setDynamicInPorts(mergeDynamicPortInfo(builder.build().dynamicInPorts, dynamicInPorts, current.getID()));
builder.setDynamicOutPorts(mergeDynamicPortInfo(builder.build().dynamicOutPorts, dynamicOutPorts, current.getID()));
+
+ 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));
} 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
diff --git a/application/src/de/philippkatz/knime/jsondocgen/docs/CategoryDoc.java b/application/src/de/philippkatz/knime/jsondocgen/docs/CategoryDoc.java
index 2eb5d3f..d93d779 100644
--- a/application/src/de/philippkatz/knime/jsondocgen/docs/CategoryDoc.java
+++ b/application/src/de/philippkatz/knime/jsondocgen/docs/CategoryDoc.java
@@ -59,5 +59,9 @@ public Set getAllContributingPlugins() {
}
return result;
}
+
+ public List getNodes() {
+ return nodes;
+ }
}
diff --git a/feature/feature.xml b/feature/feature.xml
index 504f959..cd38e73 100644
--- a/feature/feature.xml
+++ b/feature/feature.xml
@@ -2,7 +2,7 @@
4.0.0
de.philippkatz.knime.jsondocgen.feature
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
eclipse-feature
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
diff --git a/p2/pom.xml b/p2/pom.xml
index 3b5a611..1a22d81 100644
--- a/p2/pom.xml
+++ b/p2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
de.philippkatz.knime.jsondocgen.p2
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
eclipse-repository
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index 07ea0db..422c2e2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
pom
@@ -17,6 +17,7 @@
+
4.0.8
UTF-8
@@ -39,7 +40,7 @@
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen.targetplatform
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
@@ -87,4 +88,18 @@
+
+
+ macosx-jvm-flags
+
+
+ mac
+
+
+
+ -XstartOnFirstThread
+
+
+
+
diff --git a/targetplatform/pom.xml b/targetplatform/pom.xml
index 8a8dbab..5627b26 100644
--- a/targetplatform/pom.xml
+++ b/targetplatform/pom.xml
@@ -9,7 +9,7 @@
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
diff --git a/tests/META-INF/MANIFEST.MF b/tests/META-INF/MANIFEST.MF
index 8ff1515..0f89279 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.16.0.qualifier
+Bundle-Version: 1.16.1.qualifier
Bundle-Vendor: Philipp Katz; Selenium Nodes
Bundle-RequiredExecutionEnvironment: JavaSE-17
-Fragment-Host: de.philippkatz.knime.jsondocgen.application;bundle-version="1.16.0"
+Fragment-Host: de.philippkatz.knime.jsondocgen.application;bundle-version="1.16.1"
Require-Bundle: org.junit;bundle-version="4.12.0"
diff --git a/tests/pom.xml b/tests/pom.xml
index 0ecc6df..f12c7bf 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -4,13 +4,13 @@
4.0.0
de.philippkatz.knime.jsondocgen.tests
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
eclipse-test-plugin
de.philippkatz.knime.jsondocgen
de.philippkatz.knime.jsondocgen
- 1.16.0-SNAPSHOT
+ 1.16.1-SNAPSHOT
@@ -31,6 +31,14 @@
+
+ org.eclipse.tycho
+ tycho-surefire-plugin
+ ${tycho-version}
+
+ ${eclipserun.jvm.flags}
+
+
diff --git a/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_NoClassDefFound_Test.java b/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_NoClassDefFound_Test.java
new file mode 100644
index 0000000..86f099b
--- /dev/null
+++ b/tests/src/de/philippkatz/knime/jsondocgen/JsonNodeDocuGeneratorTest_NoClassDefFound_Test.java
@@ -0,0 +1,75 @@
+package de.philippkatz.knime.jsondocgen;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collections;
+
+import javax.xml.transform.TransformerException;
+
+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.node.NodeFactory.NodeType;
+import org.knime.workbench.repository.RepositoryManager;
+import org.knime.workbench.repository.model.DefaultNodeTemplate;
+import org.knime.workbench.repository.model.IRepositoryObject;
+
+import de.philippkatz.knime.jsondocgen.docs.CategoryDoc.CategoryDocBuilder;
+
+public class JsonNodeDocuGeneratorTest_NoClassDefFound_Test {
+
+ public static class MyNodeFactory extends NodeFactory {
+
+ @Override
+ public NodeModel createNodeModel() {
+ throw new NoClassDefFoundError("org/RDKit/ROMol");
+ }
+
+ @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;
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void test() throws TransformerException, Exception {
+ var parentCategory = new CategoryDocBuilder();
+ var parent = RepositoryManager.INSTANCE.getRoot();
+ NodeFactory factory = new MyNodeFactory();
+ var current = new DefaultNodeTemplate( //
+ (Class>) factory.getClass(), //
+ "Bad Node", //
+ "de.philippkatz.knime.nodes.plugin", //
+ "/", //
+ NodeType.Other);
+
+ var result = new JsonNodeDocuGenerator().generate(current, parent, parentCategory, Collections.emptySet());
+
+ assertTrue(result);
+
+ var nodes = parentCategory.build().getNodes();
+ assertEquals(1, nodes.size());
+ assertEquals("Bad Node", nodes.get(0).name);
+ }
+
+}