NodePit / knime-json-node-doc-generator

Generate KNIME node documentation as a structured JSON file.
GNU General Public License v3.0
6 stars 0 forks source link

Extract hidden port types #10

Open danielesser opened 6 years ago

danielesser commented 6 years ago

It looks like, we are currently missing some port types. The Field Templater node in Cresset KNIME Nodes (available via this update site) provides a port type Forge Project that is not registered as an extension via settings.xml and thus does not appear in the portDocumentation.json. The nodeDocumentation.json for Field Templater does contain this port.

Identifier: Field Templater: com.cressetgroup.knime.nodes.forge.ftemplater.FTemplaterNodeFactory Forge Project: com.cressetgroup.knime.nodes.forge.ForgeProjectPortObject

bildschirmfoto 2018-03-30 um 12 23 12

qqilihq commented 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??

qqilihq commented 6 years ago

@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.

qqilihq commented 6 years ago

@danielesser PS: We might still want to merge the PR in case there are further cases of unregistered port types?

danielesser commented 6 years ago

@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.

qqilihq commented 6 years ago

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.

danielesser commented 6 years ago

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.

bildschirmfoto 2018-04-05 um 08 06 43

qqilihq commented 6 years ago

Meeeh. Let's check this again during our next personal meeting.