Open danielesser opened 6 years ago
True -- in earlier KNIME versions (before 3 afair???) there was no extension point for port types at all.
So we have to extract this information to the portDocumentation.json
even though it might be missing in the extension point (in this case, we have e.g. no port color, as this can only be defined via extension point)
What's the type of the FieldTemplater input port? What does a grey triangle mean??
@danielesser Okay, here's some details...
After above's modifications, we receive the following exception:
java.lang.NoClassDefFoundError: Could not initialize class org.knime.core.node.defaultnodesettings.DialogComponentColumnNameSelection
at com.cressetgroup.knime.core.options.ColumnSelectOption$Builder.create(ColumnSelectOption.java:149)
at com.cressetgroup.knime.nodes.forge.fbuild.field.FBuildFieldOptions.<init>(FBuildFieldOptions.java:253)
at com.cressetgroup.knime.nodes.forge.fbuild.field.FBuildFieldNodeModel.<init>(FBuildFieldNodeModel.java:109)
at com.cressetgroup.knime.nodes.forge.fbuild.field.FBuildNodeFactory.createNodeModel(FBuildNodeFactory.java:63)
at com.cressetgroup.knime.nodes.forge.fbuild.field.FBuildNodeFactory.createNodeModel(FBuildNodeFactory.java:1)
at de.philippkatz.knime.jsondocgen.JsonNodeDocuGenerator.generate(JsonNodeDocuGenerator.java:398)
at de.philippkatz.knime.jsondocgen.JsonNodeDocuGenerator.generate(JsonNodeDocuGenerator.java:440)
at de.philippkatz.knime.jsondocgen.JsonNodeDocuGenerator.generate(JsonNodeDocuGenerator.java:440)
at de.philippkatz.knime.jsondocgen.JsonNodeDocuGenerator.generate(JsonNodeDocuGenerator.java:440)
at de.philippkatz.knime.jsondocgen.JsonNodeDocuGenerator.generate(JsonNodeDocuGenerator.java:440)
at de.philippkatz.knime.jsondocgen.JsonNodeDocuGenerator.generate(JsonNodeDocuGenerator.java:231)
at de.philippkatz.knime.jsondocgen.JsonNodeDocuGenerator.start(JsonNodeDocuGenerator.java:191)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
Inspecting the installation instructions of the Cresset Nodes gives the following clue:
This category contains KNIME nodes that wrap the Cresset command line programs forgeV10, sparkV10, XedeX and XedMin as well as Cresset's torchV10lite molecule viewer. These nodes are compatible with KNIME 2.6.x, 2.7.x and 2.8.x. To function correctly you require access to the appropriate binaries and license files available from http://www.cresset-group.co.uk/cgi-bin/demo.cgi. To learn more about Cresset products go to http://www.cresset-group.com/products
I inspected the dependencies, and the Cresset Nodes list the following:
Require-Bundle: org.knime.workbench.core,
org.knime.base,
org.knime.workbench.repository
In a current KNIME version however, the org.knime.core.node.defaultnodesettings.DialogComponentColumnNameSelection
resides in the org.knime.core
plugin. So, I think there's nothing we can do about it and should just discard the Cresset Nodes as they'll not work with a current KNIME version anyways.
@danielesser PS: We might still want to merge the PR in case there are further cases of unregistered port types?
@qqilihq I don't know how the NodeModel is invoked in KNIME but the Cresset nodes work pretty well in my local KNIME installation. Nevertheless, catching port exceptions and printing a warning should be sufficient. We should definitely merge the PR for the sake of "future old" nodes.
the Cresset nodes work pretty well in my local KNIME installation
That's really weird. Have you tried to open the dialog of com.cressetgroup.knime.nodes.forge.fbuild.field.FBuildNodeFactory
? According to my theory it should produce a java.lang.NoClassDefFoundError
re. the org.knime.core.node.defaultnodesettings.DialogComponentColumnNameSelection
when trying to open the dialog.
Would be great to get feedback. B/c if it should work contrary to my theory, we'll probably need to invest some more debugging efforts.
The dialog for Forge Build Field QSAR
(com.cressetgroup.knime.nodes.forge.fbuild.field.FBuildNodeFactory
) appears and can be saved without producing any error. I used this workflow from NodePit.
Execution fails with ERROR Forge Build Field QSAR 0:12 Execute failed: Platform is not supported
when trying to load some binaries. But this should be independent of this error.
Meeeh. Let's check this again during our next personal meeting.
It looks like, we are currently missing some port types. The
Field Templater
node inCresset KNIME Nodes
(available via this update site) provides a port typeForge Project
that is not registered as an extension via settings.xml and thus does not appear in theportDocumentation.json
. ThenodeDocumentation.json
forField Templater
does contain this port.Identifier:
Field Templater
: com.cressetgroup.knime.nodes.forge.ftemplater.FTemplaterNodeFactoryForge Project
: com.cressetgroup.knime.nodes.forge.ForgeProjectPortObject