Code Monkey home page Code Monkey logo

pentaho-kettle's Introduction

Web-based Spoon (aka webSpoon)

webSpoon is a web-based graphical designer for Pentaho Data Integration with the same look & feel as Spoon. Kettle transformation/job files can be designed and executed in your favorite web browser. This is one of the community activities and not supported by Pentaho.

Use cases

  • Data security
  • Remote use
  • Ease of management
  • Cloud

Please see public talks for more details.

How to use

webSpoon is available at http://localhost:8080/spoon/spoon. Depending on how it is deployed, the IP address and port number might be different. Please refer to the wiki and issues for how to use it.

Carte is available at http://localhost:8080/spoon/kettle. Refer to Carte APIs for how to use it.

How to deploy

There are two ways: with Docker and without Docker. Docker is recommended because it is simple hence error-free.

With Docker (recommended)

$ docker run -d -p 8080:8080 hiromuhota/webspoon

Without Docker

Please refer to the wiki for system requirements.

  1. Unzip pdi-ce-9.0.0.0-423.zip, then copy system and plugins folders to $CATALINA_HOME.
  2. Run install.sh at $CATALINA_HOME.
  3. Allow encoded slash (org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true).
  4. (Re)start the Tomcat.

The actual commands look like below:

$ export version=0.9.0.22
$ export dist=9.0.0.0-423
$ export CATALINA_HOME=/home/vagrant/apache-tomcat-8.5.23

$ cd ~/
$ unzip ~/Downloads/pdi-ce-$dist.zip
$ cd $CATALINA_HOME
$ cp -r ~/data-integration/system ./
$ cp -r ~/data-integration/plugins ./

# see [1] below
$ wget https://raw.githubusercontent.com/HiromuHota/pentaho-kettle/$version/docker/install.sh
$ chmod +x install.sh
$ ./install.sh

# see [2] below
$ export CATALINA_OPTS="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
$ ./bin/startup.sh

[1]: 0.9.0.21 and before, use https://raw.githubusercontent.com/HiromuHota/webspoon-docker/$version/install.sh instead.

[2]: Instead of exporting CATALINA_OPTS like above, org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true can be added to conf/catalina.properties.

How to config (optional)

Carte

If $CATALINA_HOME/system/kettle/slave-server-config.xml exists, the embedded Carte servlet can be configured accordingly. See here for the config format. An example config xml looks like this:

<slave_config>
  <max_log_lines>10000</max_log_lines>
  <max_log_timeout_minutes>2880</max_log_timeout_minutes>
  <object_timeout_minutes>240</object_timeout_minutes>
  <repository>
    <name>test</name>
    <username>username</username>
    <password>password</password>
  </repository>
</slave_config>

Note that only repositories defined in $HOME/.kettle/repositories.xml can be used. Also note that it is NOT recommended to define repository element in the XML when the following user authentication is enabled. Issues such as #91 can happen.

Security

See here for HTTPS, user authentication/authorization, steps and job entries restriction.

Third-party plugins, JDBC drivers, and Hadoop drivers

Put third-party plugins in $CATALINA_HOME/plugins, JDBC drivers in $CATALINA_HOME/lib, Hadoop drivers in $CATALINA_HOME/system/karaf/deploy as below:

$CATALINA_HOME
├── system
│   └── karaf
|       └── deploy
|           └── YourDriver.kar
├── plugins
│   ├── YourPlugin
│   │   └── YourPlugin.jar
│   ├── ...
├── lib
│   ├── YourJDBC.jar
│   ├── ...
├── webapps
│   ├── spoon
│   ├── ...

Customize UI component

See here.

How to develop

Spoon relies on SWT for UI widgets, which is great for being OS agnostic, but it only runs as a desktop app. RAP/RWT provides web UIs with SWT API, so replacing SWT with RAP/RWT allows Spoon to run as a web app with a little code change. Having said that, some APIs are not implemented; hence, a little more code change is required than it sounds.

Design philosophy

  1. Minimize the difference from the original Spoon.
  2. Optimize webSpoon as a web application.

Branches and Versioning

I started this project in the webspoon branch, branched off from the branch 6.1 of between 6.1.0.5-R and 6.1.0.6-R. Soon I realized that I should have branched off from one of released versions. So I decided to make two branches: webspoon-6.1 and webspoon-7.0, each of which was rebased onto 6.1.0.1-R and 7.0.0.0-R, respectively.

webSpoon uses 4 digits versioning with the following rules:

  • The 1st digit is always 0 (never be released as a separate software).
  • The 2nd and 3rd digits represent the base Kettle version, e.g., 6.1, 7.0.
  • The last digit represents the patch version.

As a result, the next (pre-)release version will be 0.6.1.4, meaning it is based on the Kettle version 6.1 with the 4th patch. There could be a version of 0.7.0.4, which is based on the Kettle version 7.0 with (basically) the same patch.

Build and locally publish dependent libraries

Please build and locally-publish the following dependent libraries.

  • pentaho-xul-swt
  • org.eclipse.rap.rwt
  • org.eclipse.rap.jface
  • org.eclipse.rap.fileupload
  • org.eclipse.rap.filedialog
  • org.eclipse.rap.rwt.testfixture
  • pentaho-vfs-browser

pentaho-xul-swt

$ git clone -b webspoon-9.0 https://github.com/HiromuHota/pentaho-commons-xul.git
$ cd pentaho-commons-xul
$ mvn clean install -pl swt

rap

$ git clone -b webspoon-3.12.0 https://github.com/HiromuHota/rap.git
$ cd rap
$ mvn clean install

pentaho-vfs-browser

$ git clone -b webspoon-9.0 https://github.com/HiromuHota/apache-vfs-browser.git
$ cd apache-vfs-browser
$ mvn clean install

Build webSpoon

Make sure patched dependent libraries have been published locally

$ git clone -b webspoon-9.0 https://github.com/HiromuHota/pentaho-kettle.git
$ cd pentaho-kettle
$ mvn clean install

Optionally you can specify -Dmaven.test.skip=true (or -DskipTests) to skip the tests

UI testing using Selenium

Currently, only Google Chrome browser has been tested for when running UI test cases. The tests run in headless mode unless a parameter -Dheadless.unittest=false is passed. To run tests in headless mode, the version of Chrome should be higher than 59.

The default url is http://localhost:8080/spoon. Pass a parameter like below if webSpoon is deployed to a different url.

The following command runs all the unit test cases including UI in non-headless mode.

$ cd integration
$ mvn clean test -Dtest.baseurl=http://localhost:8080/spoon -Dheadless.unittest=false

Notices

  • Pentaho is a registered trademark of Hitachi Vantara Corporation.
  • Google Chrome browser is a trademark of Google Inc.
  • Other company and product names mentioned in this document may be the trademarks of their respective owners.

pentaho-kettle's People

Contributors

alexanderbuloichik avatar aliaksandrshuhayeu avatar andreyburikhin avatar artsiomyurhevich avatar ccaspanello avatar ddiroma avatar deinspanjer avatar dfieldfl avatar e-cuellar avatar kolinus avatar lgrill-pentaho avatar mchen-len-son avatar mdamour1976 avatar mkambol avatar pamval avatar pavel-sakun avatar pedrofvteixeira avatar pentaho-nbaker avatar pentaho-skarmali avatar ppatricio avatar prakapenka avatar ricksjames avatar rmansoor avatar sailingscally avatar ssamora avatar stepanovdg avatar tgf avatar tkafalas avatar tmcsantos avatar yuryby avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pentaho-kettle's Issues

java.lang.OutOfMemoryError: GC overhead limit exceeded

This happened when trying to create a new webSpoon session after many sessions are created.
Here is the error message:

Server ErrorThe application terminated unexpectedly.RestartDetails
HTTP Status 500 - Failed to create instance of type: org.pentaho.di.ui.core.gui.GUIResource

type Exception report

message Failed to create instance of type: org.pentaho.di.ui.core.gui.GUIResource

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.eclipse.rap.rwt.internal.util.ClassInstantiationException: Failed to create instance of type: org.pentaho.di.ui.core.gui.GUIResource
	org.eclipse.rap.rwt.internal.util.ClassUtil.throwInstantiationException(ClassUtil.java:68)
	org.eclipse.rap.rwt.internal.util.ClassUtil.newInstance(ClassUtil.java:43)
	org.eclipse.rap.rwt.internal.util.ClassUtil.newInstance(ClassUtil.java:32)
	org.eclipse.rap.rwt.internal.SingletonManager.getSingleton(SingletonManager.java:46)
	org.eclipse.rap.rwt.SingletonUtil.getUniqueInstance(SingletonUtil.java:74)
	org.eclipse.rap.rwt.SingletonUtil.getSessionInstance(SingletonUtil.java:58)
	org.pentaho.di.ui.core.gui.GUIResource.getInstance(GUIResource.java:456)
	org.pentaho.di.ui.core.PropsUI.init(PropsUI.java:122)
	org.pentaho.di.ui.spoon.WebSpoonEntryPoint.createContents(WebSpoonEntryPoint.java:46)
	org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:60)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	java.lang.Thread.run(Thread.java:745)
	org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)
root cause

java.lang.OutOfMemoryError: GC overhead limit exceeded
	sun.font.FreetypeFontScaler.getGlyphOutlineNative(Native Method)
	sun.font.FreetypeFontScaler.getGlyphOutline(FreetypeFontScaler.java:141)
	sun.font.FileFont.getGlyphOutline(FileFont.java:226)
	sun.font.FileFontStrike.getGlyphOutline(FileFontStrike.java:951)
	sun.font.CompositeStrike.getGlyphOutline(CompositeStrike.java:169)
	sun.font.StandardGlyphVector$GlyphStrike.appendGlyphOutline(StandardGlyphVector.java:1818)
	sun.font.StandardGlyphVector.getGlyphsOutline(StandardGlyphVector.java:1189)
	sun.font.StandardGlyphVector.getGlyphOutline(StandardGlyphVector.java:432)
	org.apache.batik.gvt.font.AWTGVTFont.getGlyphGeometry(AWTGVTFont.java:301)
	org.apache.batik.gvt.font.AWTGVTGlyphVector.getGlyphOutline(AWTGVTGlyphVector.java:450)
	org.apache.batik.gvt.font.AWTGVTGlyphVector.getOutline(AWTGVTGlyphVector.java:620)
	org.apache.batik.gvt.font.AWTGVTGlyphVector.getBounds2D(AWTGVTGlyphVector.java:183)
	org.apache.batik.gvt.text.GlyphLayout.getBounds2D(GlyphLayout.java:452)
	org.apache.batik.gvt.renderer.StrokingTextPainter.getBounds2D(StrokingTextPainter.java:1093)
	org.apache.batik.gvt.TextNode.getPrimitiveBounds(TextNode.java:245)
	org.apache.batik.gvt.AbstractGraphicsNode.getTransformedPrimitiveBounds(AbstractGraphicsNode.java:854)
	org.apache.batik.gvt.AbstractGraphicsNode.getTransformedBounds(AbstractGraphicsNode.java:820)
	org.apache.batik.gvt.CompositeGraphicsNode.getPrimitiveBounds(CompositeGraphicsNode.java:207)
	org.apache.batik.gvt.CompositeGraphicsNode.getTransformedPrimitiveBounds(CompositeGraphicsNode.java:295)
	org.apache.batik.gvt.AbstractGraphicsNode.getTransformedBounds(AbstractGraphicsNode.java:820)
	org.apache.batik.gvt.CompositeGraphicsNode.getPrimitiveBounds(CompositeGraphicsNode.java:207)
	org.apache.batik.gvt.AbstractGraphicsNode.getBounds(AbstractGraphicsNode.java:768)
	org.apache.batik.gvt.AbstractGraphicsNode.paint(AbstractGraphicsNode.java:443)
	org.pentaho.di.core.SwingUniversalImageSvg.render(SwingUniversalImageSvg.java:90)
	org.pentaho.di.core.SwtUniversalImageSvg.renderSimple(SwtUniversalImageSvg.java:63)
	org.pentaho.di.core.SwtUniversalImage.getAsBitmapForSize(SwtUniversalImage.java:93)
	org.pentaho.di.ui.core.gui.GUIResource.loadStepImages(GUIResource.java:755)
	org.pentaho.di.ui.core.gui.GUIResource.getResources(GUIResource.java:512)
	org.pentaho.di.ui.core.gui.GUIResource.initialize(GUIResource.java:409)
	org.pentaho.di.ui.core.gui.GUIResource.<init>(GUIResource.java:399)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.39 logs.

Apache Tomcat/8.0.39

Get Fields of Fixed Input causes an NPE error

Clicking on Get Fields of Fixed Input gives the following error.
The other editing and execution work fine.

java.lang.NullPointerException
	at org.eclipse.swt.graphics.GC.textExtent(GC.java:254)
	at org.pentaho.di.ui.trans.steps.fixedinput.FixedTableDraw.<init>(FixedTableDraw.java:124)
	at org.pentaho.di.ui.trans.steps.fixedinput.FixedFileImportWizardPage1.createControl(FixedFileImportWizardPage1.java:80)
	at org.pentaho.di.ui.trans.steps.fixedinput.FixedInputDialog.getFixed(FixedInputDialog.java:783)
	at org.pentaho.di.ui.trans.steps.fixedinput.FixedInputDialog.access$5(FixedInputDialog.java:727)
	at org.pentaho.di.ui.trans.steps.fixedinput.FixedInputDialog$7.handleEvent(FixedInputDialog.java:483)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:109)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:687)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
	at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1217)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1198)
	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1181)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1173)
	at org.pentaho.di.ui.trans.steps.fixedinput.FixedInputDialog.open(FixedInputDialog.java:544)
	at org.pentaho.di.ui.spoon.delegates.SpoonStepsDelegate.editStep(SpoonStepsDelegate.java:125)
	at org.pentaho.di.ui.spoon.Spoon.editStep(Spoon.java:8776)
	at org.pentaho.di.ui.spoon.trans.TransGraph.editStep(TransGraph.java:3123)
	at org.pentaho.di.ui.spoon.trans.TransGraph.editStep(TransGraph.java:2188)
	at org.pentaho.di.ui.spoon.trans.TransGraph.mouseDown(TransGraph.java:867)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:214)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:109)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:687)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
	at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1217)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1198)
	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1181)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1173)
	at org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:69)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	at java.lang.Thread.run(Thread.java:745)
	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)

Problem with Menu

Hi,
When try to access to job , The menu was in a rare position, I attach the screenshot . This test used a docker.

docker version
Client:
Version: 1.11.1
API version: 1.23
Go version: go1.5.4
Git commit: 5604cbe
Built: Tue Apr 26 23:30:23 2016
OS/Arch: linux/amd64

Server:
Version: 1.11.1
API version: 1.23
Go version: go1.5.4
Git commit: 5604cbe
Built: Tue Apr 26 23:30:23 2016
OS/Arch: linux/amd64

OS information : 4.4.0-57-generic #78~14.04.1-Ubuntu SMP Sat Dec 10 00:14:47 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

webspoon

Export Repository does not work

How to reproduce:

  1. Tools > Repository > Connect
  2. Tools > Repository > Export Repository

Seems like it is exporting a repository, but you can get nothing.

Invalid <url-pattern> in servlet mapping when Tomcat 7.0.27 or lower

When deployed to Tomcat 7.0.27 or lower (e.g., Pentaho BI server 5.4), the following error will happen.

SEVERE: Parse error in application web.xml file at jndi:/localhost/spoon/WEB-INF/web.xml
org.xml.sax.SAXParseException; systemId: jndi:/localhost/spoon/WEB-INF/web.xml; lineNumber: 24; columnNumber: 21; Error at (24, 21) : Invalid <url-pattern>  in servlet mapping

Call endpoint step causes errors

When double-clicking the step to edit, StackOverFlow error happens.
Also switching to the parameters tab causes another error with the following error message.

javax.servlet.ServletException: Servlet execution threw an exception
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

404 /favicon.ico when deployed as ROOT.war

How to reproduce:

$ rm -rf webapps/*
$ cp spoon.war webapps/ROOT.war
$ ./bin/startup.sh

You will get a 404 error after successful login.
image

Workaround: try again by typing the url in the address bar (e.g., http://localhost:8080/spoon).

Branch webspoon-7.0 does not properly run on Eclipse IDE

Symptom: webSpoon does not finish loading (the loading image does not disappear)

How to reproduce

  • Import the project into Eclipse IDE as described in here
  • Run (Debug) the project
  • Open the app from a web browser

Workaround: create a war file and deploy to Tomcat/Jetty.

Not starting on Jetty

An error occurs when deploying webSpoon (based on 7.0) to Jetty.
A workaround is to add gwt-servlet.jar to WEB-INF/lib/, but I don't know its implication.

2017-03-20 14:26:27.375:INFO::main: Logging initialized @315ms
2017-03-20 14:26:27.425:WARN:oejs.HomeBaseWarning:main: This instance of Jetty is not running from a separate {jetty.base} directory, this is not recommended.  See documentation at http://www.eclipse.org/jetty/documentation/current/startup.html
2017-03-20 14:26:27.541:INFO:oejs.Server:main: jetty-9.3.8.v20160314
2017-03-20 14:26:27.556:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///usr/local/Cellar/jetty/9.3.8.v20160314/libexec/webapps/] at interval 1
2017-03-20 14:26:33.498:WARN:oejd.DeploymentManager:main: Unable to reach node goal: started
java.lang.NoClassDefFoundError: com/google/gwt/user/client/rpc/RemoteService
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
	at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:549)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:475)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:428)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
	at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:549)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:475)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:428)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
	at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:549)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:475)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:428)
	at org.eclipse.jetty.util.Loader.loadClass(Loader.java:86)
	at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:130)
	at org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:63)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:329)
	at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1379)
	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1341)
	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:772)
	at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261)
	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:517)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41)
	at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188)
	at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:499)
	at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:147)
	at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180)
	at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:452)
	at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64)
	at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:610)
	at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:529)
	at org.eclipse.jetty.util.Scanner.scan(Scanner.java:392)
	at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:313)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:150)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:561)
	at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:236)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
	at org.eclipse.jetty.server.Server.start(Server.java:405)
	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
	at org.eclipse.jetty.server.Server.doStart(Server.java:372)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
	at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1510)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1435)
	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.jetty.start.Main.invokeMain(Main.java:214)
	at org.eclipse.jetty.start.Main.start(Main.java:457)
	at org.eclipse.jetty.start.Main.main(Main.java:75)

BaseStepDialog_ConnectionLine_Test fails

This is a regression caused by fa80df7.

Class	Name	Status	Type	Time(s)
BaseStepDialog_ConnectionLine_Test	showDbDialog_ReturnsNull_OnCancel	Error	Argument cannot be null

java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(SWT.javva:3706)
at org.eclipse.swt.SWT.error(SWT.java:3643)
at org.eclipse.swt.SWT.error(SWT.java:3614)
at org.eclipse.swt.widgets.Dialog.checkParent(Dialog.java:2992)
at org.eclipse.swt.widgets.Dialog.<init>(Dialog.java:115)
at org.pentaho.di.ui.core.dialog.ErrorDialog.<init>(ErrorDialog.java:97)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.createDialog(XulDatabaseDialog.java:159)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.open(XulDatabaseDialog.java:105)
at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:60)
at org.pentaho.di.ui.trans.step.BaseStepDialog.showDbDialogUnlessCancelledOrValid(BaseStepDialog.java:776)
at org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine_Test.test_showDbDialogUnlessCancelledOrValid_ShownOnce(BaseStepDialog_ConnectionLine_Test.java:206)
at org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine_Test.showDbDialog_ReturnsNull_OnCancel(BaseStepDialog_ConnectionLine_Test.java:171)
	0.194
BaseStepDialog_ConnectionLine_Test	showDbDialog_ReturnsInputName_WhenItIsUnique	Error	Argument cannot be null

java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(SWT.java:3706)
at org.eclipse.swt.SWT.error(SWT.java:3643)

at org.eeclipse.swt.SWT.error(SWT.java:3614)
at org.eclipse.swt.widgets.Dialog.checkParent(Dialog.java:292)
at org.eclipse.swt.widgets.Dialog..<init>(Dialog.java:115)
at org.pentaho.di.ui.core.dialog.ErrorDialog.<init>(ErrorDialog.java:97)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog..createDialog(XulDatabaseDialog.java:159)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDiallog.open(XulDatabaseDialog.java:105)
at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:60)
at org.pentaho.di.ui.trans.step.BaseStepDialog.showDbDialogUnlessCancelledOrValid(BaseStepDDialog.java:776)
at org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine__Test.test_showDbDialogUnlessCancelledOrValid_ShownOnce(BaseStepDialog_ConnectionLine_Test.java:206)
at org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine_Test.showDbDialoog_ReturnsInputName_WhenItIsUnique(BaseStepDialog_ConnectionLine_Test.java:176)
	0.010
BaseStepDialog_ConnectionLine_Test	showDbDialog_ReturnsInputName_WhenItIsUnique_WithSpaces	Error	Argument cannot be null

java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(SWT.javva:3706)
at org.eclipse.swt.SWT.error(SWT.java:3643)
at org.eclipse.swt.SWT.error(SWT.java:3614)
at org.eclipse.swt.widgets.Dialog.checkParent(Dialog.java:2992)
at org.eclipse.swt.widgets.Dialog.<init>(Dialog.java:115)
at org.pentaho.di.ui.core.dialog.ErrorDialog.<init>(ErrorDialog.java:97)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.createDialog(XulDatabaseDialog.java:159)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.open(XulDatabaseDialog.java:105)
at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:60)
at org.pentaho.di.ui.trans.step.BaseStepDialog.showDbDialogUnlessCancelledOrValid(BaseStepDialog.java:776)
at org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine_Test.test_showDbDialogUnlessCancelledOrValid_ShownOnce(BaseStepDialog_ConnectionLine_Test.java:206)
at org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine_Test.showDbDialog_ReturnsInputName_WhenItIsUnique_WithSpaces(BaseStepDialog_ConnectionLine_Test.java:182)
	0.009
BaseStepDialog_ConnectionLine_Test	showDbDialog_ReturnsExistingName_WhenNameWasNotChanged	Error	Argument cannot be null

java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(SWT.java:3706)
at org.eclipse.swt.SWT.error(SWT.java:3643)

at org.eeclipse.swt.SWT.error(SWT.java:3614)
at org.eclipse.swt.widgets.Dialog.checkParent(Dialog.java:292)
at org.eclipse.swt.widgets.Dialog..<init>(Dialog.java:115)
at org.pentaho.di.ui.core.dialog.ErrorDialog.<init>(ErrorDialog.java:97)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog..createDialog(XulDatabaseDialog.java:159)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.oppen(XulDatabaseDialog.java:105)
at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:60)
at org.pentaho.di.ui.trans.step.BaseStepDialog.showDbDialogUnlessCancelledOrValid(BaseStepDDialog.java:776)
at org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine_Test..test_showDbDialogUnlessCancelledOrValid_ShownOnce(BaseStepDialog_ConnectionLine_Test.java:206)
at org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine_Test.showDbDialog_RetturnsExistingName_WhenNameWasNotChanged(BaseStepDialog_ConnectionLine_Test.java:188)
	0.021
BaseStepDialog_ConnectionLine_Test	showDbDialog_LoopsUntilUniqueValueIsInput	Error	Argument cannot be null

java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(SWT.java:3706)
at org.eclipse.swt.SWT.error(SWT.java:3643)
at org.eclipse.swt.SWT.error(SWT.java:3614)
at org.eclipse.swt.widgets.Dialog.checkParent(Dialoog.java:292)
at org.eclipse.swt.widgets.Dialog.<init>(Dialog.java:115)
at org.pentaho.di.ui.core.dialog.ErrorDialog.<init>(ErrorDialog.java:97)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.createDialog(XullDatabaseDialog.java:159)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.open(XulDatabaseDialog.java:1105)
at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:60)
at org.pentaho.di.ui.trans.step.BaseSteppDialog.showDbDialogUnlessCancelledOrValid(BaseStepDialog.java:776)
at org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine_Test.showDbDialog_LoopsUntilUniqueValueIsInput(BaseStepDialog_ConnectionLine_Test.java:245)
	0.009

Some of the unit tests have been broken

Some of the unit tests have been broken due to the difference between RWT/SWT.
Here is the output from ant test:

test:
    [junit] Running org.pentaho.di.ui.core.auth.controller.AuthProviderControllerTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.472 sec
    [junit] Running org.pentaho.di.ui.core.dialog.EditRowsDialog_EmptyStringVsNull_Test
    [junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.814 sec
    [junit] Running org.pentaho.di.ui.job.entry.JobEntryDialog_ConnectionLine_Test
    [junit] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.858 sec
    [junit] Running org.pentaho.di.ui.repository.repositoryexplorer.controllers.BrowseControllerTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.426 sec
    [junit] Running org.pentaho.di.ui.repository.repositoryexplorer.controllers.ConnectionsControllerTest
    [junit] Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.88 sec
    [junit] Running org.pentaho.di.ui.repository.repositoryexplorer.model.UIDatabaseConnectionTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.376 sec
    [junit] Running org.pentaho.di.ui.spoon.DatabasesCollectorTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.403 sec
    [junit] Running org.pentaho.di.ui.spoon.GraphTest
    [junit] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.768 sec
    [junit] Running org.pentaho.di.ui.spoon.JobFileListenerTest
    [junit] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.49 sec
    [junit] Running org.pentaho.di.ui.spoon.SharedObjectSyncUtilTest
    [junit] Tests run: 20, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.014 sec
    [junit] Running org.pentaho.di.ui.spoon.SpoonActiveJobGraphTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.591 sec
    [junit] Running org.pentaho.di.ui.spoon.SpoonExportXmlTest
    [junit] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.569 sec
    [junit] Test org.pentaho.di.ui.spoon.SpoonExportXmlTest FAILED
    [junit] Running org.pentaho.di.ui.spoon.SpoonFilterMatchingTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.566 sec
    [junit] Running org.pentaho.di.ui.spoon.SpoonPerspectiveManagerTest
    [junit] Tests run: 3, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 0.201 sec
    [junit] Test org.pentaho.di.ui.spoon.SpoonPerspectiveManagerTest FAILED
    [junit] Running org.pentaho.di.ui.spoon.SpoonPluginManagerTest
    [junit] Tests run: 5, Failures: 0, Errors: 5, Skipped: 0, Time elapsed: 0.353 sec
    [junit] Test org.pentaho.di.ui.spoon.SpoonPluginManagerTest FAILED
    [junit] Running org.pentaho.di.ui.spoon.SpoonRefreshClustersSubtreeTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.624 sec
    [junit] Running org.pentaho.di.ui.spoon.SpoonRefreshDbConnectionsSubtreeTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.602 sec
    [junit] Running org.pentaho.di.ui.spoon.SpoonRefreshHopsSubtreeTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.627 sec
    [junit] Running org.pentaho.di.ui.spoon.SpoonRefreshPartitionsSubtreeTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.619 sec
    [junit] Running org.pentaho.di.ui.spoon.SpoonRefreshSlavesSubtreeTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.583 sec
    [junit] Running org.pentaho.di.ui.spoon.SpoonTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.019 sec
    [junit] Running org.pentaho.di.ui.spoon.TransFileListenerTest
    [junit] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.53 sec
    [junit] Running org.pentaho.di.ui.spoon.delegates.SpoonSharedObjectDelegateTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.29 sec
    [junit] Running org.pentaho.di.ui.spoon.partition.PartitionSettingsTest
    [junit] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.43 sec
    [junit] Running org.pentaho.di.ui.trans.step.BaseStepDialog_ConnectionLine_Test
    [junit] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.911 sec
    [junit] Running org.pentaho.di.ui.trans.steps.mapping.MappingDialogTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.373 sec
    [junit] Running org.pentaho.di.ui.trans.steps.sftpput.SFTPPutDialogTest
    [junit] Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.536 sec
    [junit] Test org.pentaho.di.ui.trans.steps.sftpput.SFTPPutDialogTest FAILED
    [junit] Running org.pentaho.di.ui.trans.steps.simplemapping.SimpleMappingDialogTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.356 sec
    [junit] Running org.pentaho.di.ui.trans.steps.textfileinput.TextFileInputDialogTest
    [junit] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.925 sec
    [junit] Test org.pentaho.di.ui.trans.steps.textfileinput.TextFileInputDialogTest FAILED
    [junit] Running org.pentaho.di.ui.trans.steps.userdefinedjavaclass.UserDefinedJavaClassCodeSnippitsTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.241 sec
    [junit] Running org.pentaho.di.ui.util.DialogUtilsTest
    [junit] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.267 sec
    [junit] Running org.pentaho.xul.swt.tab.TabSetTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.315 sec

The pdi-pur-plugin included in the war file is not loaded

When webSpoon is deployed to the Apache Tomcat shipped with BI server (CE or EE), it will search plugins in the pentaho-solutions/system/kettle/plugins folder and will find the pdi-pur-plugin.
However, when deployed to the vanilla Tomcat or Jetty, the pentaho-solutions/system/kettle/plugins folder is not there and it will not look for the plugins folder extracted from the war file; consequently, the pdi-pur-plugin is not loaded.

Tomcat, shared with BI server, not starting up when webSpoon also uses Karaf

Assumption: the plugins and system directories have been copied to tomcat/bin as instructed in https://github.com/HiromuHota/pentaho-kettle#plugins and https://github.com/HiromuHota/pentaho-kettle#deploy

Sympton: The startup process hangs after Karaf (launched by BI server) aquires a lock as below.

23-Feb-2017 17:21:04.692 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /Users/hiromu/Applications/pentaho/6.1.0.1/biserver-ce/
tomcat/webapps/spoon.war

...

23-Feb-2017 17:21:41.082 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /Users/hiromu/Applications/pentaho/6.1.0.1/biserver-ce/tomcat/webapps/spoon.war has finished in 36,389 ms
23-Feb-2017 17:21:41.082 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /Users/hiromu/Applications/pentaho/6.1.0.1/biserver-ce/tomcat/webapps/pentaho

...

23-Feb-2017 17:22:24.459 INFO [Thread-60] org.apache.karaf.main.Main$KarafLockCallback.lockAquired Lock acquired. Setting startlevel to 100

This issue can be avoided by deleting the copied system directory or deploying webSpoon to a new, dedicated Tomcat (not sharing with BI server).

Here are some related information.
http://jira.pentaho.com/browse/PDI-15302
http://forums.pentaho.com/showthread.php?211468-Some-errors-in-the-new-version-6-1
http://karaf.922171.n3.nabble.com/2-Potential-Bugs-Not-figuring-out-how-to-reproduce-td4041828.html

Certain keys cannot be typed

Certain keys (e.g., "t", "a") cannot be typed sometimes for field name, note, etc.
What's worse, these broken keys are changing.
Yesterday, they were "e", but today they are "a" and "t".

Karaf not starting properly

Related to #10, I've been trying to launch Karaf.
As described in here, I am able to launch Karaf by adding PDI-OSGI-Bridge and related dependencies, but errors happen within Karaf.

This was the message when I first launched Karaf from webSpoon.

11:13:51,194 INFO  [KarafInstance] 
*******************************************************************************
*** Karaf Instance Number: 5 at /Users/hiromu/workspace/webspoon/ui/./syste ***
***   m/karaf/caches/basicapplication/data-1                                ***
*** Karaf Port:8806                                                         ***
*** OSGI Service Port:9055                                                  ***
*******************************************************************************
11:13:51,195 INFO  [KarafBoot] Checking to see if org.pentaho.clean.karaf.cache is enabled
Dec 13, 2016 11:13:51 AM org.apache.karaf.main.Main launch
INFO: Installing and starting initial bundles
Dec 13, 2016 11:13:51 AM org.apache.karaf.main.Main launch
INFO: All initial bundles installed and set to start
Dec 13, 2016 11:13:52 AM org.apache.karaf.main.Main$KarafLockCallback lockAquired
INFO: Lock acquired. Setting startlevel to 100
Creating configuration from jmx.acl.org.apache.karaf.bundle.cfg
Creating configuration from org.apache.karaf.command.acl.config.cfg
Creating configuration from pentaho.marketplace.di.cfg
Creating configuration from jmx.acl.osgi.compendium.cm.cfg
Creating configuration from org.apache.karaf.features.repos.cfg
Creating configuration from org.ops4j.pax.logging.cfg
Creating configuration from mondrian.cfg
Creating configuration from org.apache.karaf.jaas.cfg
Creating configuration from org.apache.karaf.command.acl.kar.cfg
Creating configuration from jmx.acl.org.apache.karaf.config.cfg
Creating configuration from org.apache.karaf.kar.cfg
Creating configuration from pentaho.geo.roles.cfg
Creating configuration from org.apache.karaf.shell.cfg
Creating configuration from org.apache.karaf.webconsole.cfg
Creating configuration from org.apache.karaf.features.cfg
Creating configuration from jmx.acl.java.lang.Memory.cfg
Creating configuration from org.apache.karaf.command.acl.scope_bundle.cfg
Creating configuration from org.apache.karaf.log.cfg
Creating configuration from org.apache.karaf.command.acl.shell.cfg
Creating configuration from org.apache.karaf.command.acl.bundle.cfg
Creating configuration from org.ops4j.pax.url.mvn.cfg
Creating configuration from org.pentaho.caching-default.cfg
Creating configuration from org.apache.karaf.features.obr.cfg
Creating configuration from org.ops4j.pax.web.cfg
Creating configuration from org.apache.karaf.command.acl.feature.cfg
Creating configuration from org.apache.activemq.server-default.cfg
Creating configuration from org.apache.karaf.command.acl.jaas.cfg
Creating configuration from jmx.acl.org.apache.karaf.security.jmx.cfg
Creating configuration from org.apache.activemq.webconsole.cfg
Creating configuration from org.apache.karaf.command.acl.system.cfg
Creating configuration from pentaho.metaverse.cfg
Creating configuration from jmx.acl.cfg
Creating configuration from org.apache.karaf.management.cfg
Creating configuration from org.apache.felix.fileinstall-deploy.cfg
Creating configuration from org.pentaho.features.cfg
Dec 13, 2016 11:13:55 AM org.pentaho.caching.impl.PentahoCacheManagerFactory$RegistrationHandler$1 onSuccess
INFO: New Caching Service registered
11:15:32,393 ERROR [KarafLifecycleListener] The Kettle Karaf Lifecycle Listener failed to execute properly after waiting for 100 seconds. Releasing lifecycle hold, but some services may be unavailable.

This was another message on the 2nd run.

11:16:19,074 INFO  [KarafInstance] 
*******************************************************************************
*** Karaf Instance Number: 5 at /Users/hiromu/workspace/webspoon/ui/./syste ***
***   m/karaf/caches/basicapplication/data-1                                ***
*** Karaf Port:8806                                                         ***
*** OSGI Service Port:9055                                                  ***
*******************************************************************************
11:16:19,074 INFO  [KarafBoot] Checking to see if org.pentaho.clean.karaf.cache is enabled
Dec 13, 2016 11:16:19 AM org.apache.karaf.main.Main$KarafLockCallback lockAquired
INFO: Lock acquired. Setting startlevel to 100
Dec 13, 2016 11:16:21 AM org.pentaho.caching.impl.PentahoCacheManagerFactory$RegistrationHandler$1 onSuccess
INFO: New Caching Service registered
ERROR: Bundle pdi-dataservice-server-plugin [59] Error starting mvn:pentaho/pdi-dataservice-server-plugin/6.1.0.1-196 (org.osgi.framework.BundleException: Unresolved constraint in bundle pdi-dataservice-server-plugin [59]: Unable to resolve 59.0: missing requirement [59.0] osgi.wiring.package; (&(osgi.wiring.package=org.pentaho.di.trans.steps.mongodbinput)(version>=6.1.0)(!(version>=7.0.0))) [caused by: Unable to resolve 65.0: missing requirement [65.0] osgi.wiring.package; (osgi.wiring.package=org.pentaho.di.ui.core)])org.osgi.framework.BundleException: Unresolved constraint in bundle pdi-dataservice-server-plugin [59]: Unable to resolve 59.0: missing requirement [59.0] osgi.wiring.package; (&(osgi.wiring.package=org.pentaho.di.trans.steps.mongodbinput)(version>=6.1.0)(!(version>=7.0.0))) [caused by: Unable to resolve 65.0: missing requirement [65.0] osgi.wiring.package; (osgi.wiring.package=org.pentaho.di.ui.core)]
	at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4002)
	at org.apache.felix.framework.Felix.startBundle(Felix.java:2045)
	at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)
	at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
	at java.lang.Thread.run(Thread.java:745)

11:18:00,009 ERROR [KarafLifecycleListener] The Kettle Karaf Lifecycle Listener failed to execute properly after waiting for 100 seconds. Releasing lifecycle hold, but some services may be unavailable.

Invalid thread access error caused by big-data-plugin when multiple sessions are present

Here is the error message on the server side.

2017/01/11 13:55:44 - Spoon - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : Error handling menu right click on job entry through extension point
2017/01/11 13:55:44 - Spoon - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : org.eclipse.swt.SWTException: Invalid thread access
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.SWT.error(SWT.java:3720)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.SWT.error(SWT.java:3643)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.SWT.error(SWT.java:3614)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Widget.error(Widget.java:1018)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:956)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Text.getText(Text.java:203)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.di.core.hadoop.HadoopClusterViewTreeExtension.filterMatch(HadoopClusterViewTreeExtension.java:144)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.di.core.hadoop.HadoopClusterViewTreeExtension.refreshNamedClusterSubtree(HadoopClusterViewTreeExtension.java:124)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.di.core.hadoop.HadoopClusterViewTreeExtension.callExtensionPoint(HadoopClusterViewTreeExtension.java:84)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.di.core.extension.ExtensionPointHandler.callExtensionPoint(ExtensionPointHandler.java:46)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.di.ui.spoon.Spoon.refreshSelectionTreeExtension(Spoon.java:6403)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.di.ui.spoon.Spoon.refreshTree(Spoon.java:6235)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.di.ui.spoon.Spoon$8.modifyText(Spoon.java:1972)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:202)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:109)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:687)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Text.setText(Text.java:184)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.di.ui.spoon.Spoon.setDesignMode(Spoon.java:2076)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.di.ui.spoon.Spoon.newJobFile(Spoon.java:4774)
2017/01/11 13:55:44 - Spoon - 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2017/01/11 13:55:44 - Spoon - 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2017/01/11 13:55:44 - Spoon - 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2017/01/11 13:55:44 - Spoon - 	at java.lang.reflect.Method.invoke(Method.java:498)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.ui.xul.impl.AbstractXulDomContainer.invoke(AbstractXulDomContainer.java:313)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:157)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:141)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.ui.xul.jface.tags.JfaceMenuitem.access$100(JfaceMenuitem.java:43)
2017/01/11 13:55:44 - Spoon - 	at org.pentaho.ui.xul.jface.tags.JfaceMenuitem$1.run(JfaceMenuitem.java:106)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.jface.action.Action.runWithEvent(Action.java:493)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:575)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:492)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:403)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:109)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:687)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1217)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1198)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1181)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1173)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:69)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
2017/01/11 13:55:44 - Spoon - 	at java.lang.Thread.run(Thread.java:745)
2017/01/11 13:55:44 - Spoon - 	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)

Invalid thread access error when opening kettle files in a multi-user environment

How to reproduce

  1. User A opens webSpoon
  2. User B opens webSpoon
  3. User A tries to open a kettle file on a local filesystem

NPE happens when User A tries to open a kettle file on a repository.

org.eclipse.swt.SWTException: Invalid thread access
	at org.eclipse.swt.SWT.error(SWT.java:3720)
	at org.eclipse.swt.SWT.error(SWT.java:3643)
	at org.eclipse.swt.SWT.error(SWT.java:3614)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:1018)
	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:956)
	at org.eclipse.swt.widgets.Control.getShell(Control.java:258)
	at org.eclipse.swt.widgets.Control.checkBackground(Control.java:624)
	at org.eclipse.swt.widgets.Control.createWidget(Control.java:213)
	at org.eclipse.swt.widgets.Control.<init>(Control.java:206)
	at org.eclipse.swt.widgets.Scrollable.<init>(Scrollable.java:74)
	at org.eclipse.swt.widgets.Composite.<init>(Composite.java:89)
	at org.pentaho.di.ui.spoon.AbstractGraph.<init>(AbstractGraph.java:61)
	at org.pentaho.di.ui.spoon.trans.TransGraph.<init>(TransGraph.java:404)
	at org.pentaho.di.ui.spoon.delegates.SpoonTransformationDelegate.addTransGraph(SpoonTransformationDelegate.java:180)
	at org.pentaho.di.ui.spoon.Spoon.addTransGraph(Spoon.java:8751)
	at org.pentaho.di.ui.spoon.TransFileListener.open(TransFileListener.java:111)
	at org.pentaho.di.ui.spoon.Spoon.openFile(Spoon.java:4593)
	at org.pentaho.di.ui.spoon.Spoon.lastFileSelect(Spoon.java:1866)
	at org.pentaho.di.ui.spoon.Spoon$6.run(Spoon.java:1786)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:493)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:575)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:492)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:403)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:109)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:687)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
	at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1217)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1198)
	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1181)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1173)
	at org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:69)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	at java.lang.Thread.run(Thread.java:745)
	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)

webSpoon deployed to AWS Elastic Beanstalk does not run properly

webSpoon of ver. 0.0.0.3 was successfully deployed to AWS Elastic Beanstalk, but it gave me the following error when I accessed via a web browser.

HTTP Status 500 - Could not create entrypoint instance: org.pentaho.di.ui.spoon.Spoon

type Exception report

message Could not create entrypoint instance: org.pentaho.di.ui.spoon.Spoon

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.RuntimeException: Could not create entrypoint instance: org.pentaho.di.ui.spoon.Spoon
	org.eclipse.rap.rwt.internal.lifecycle.DefaultEntryPointFactory.create(DefaultEntryPointFactory.java:52)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:176)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	java.lang.Thread.run(Thread.java:745)
	org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)
root cause

java.lang.IllegalArgumentException: Argument cannot be null
	org.eclipse.swt.SWT.error(SWT.java:3706)
	org.eclipse.swt.SWT.error(SWT.java:3643)
	org.eclipse.swt.SWT.error(SWT.java:3614)
	org.eclipse.swt.widgets.Dialog.checkParent(Dialog.java:292)
	org.eclipse.swt.widgets.Dialog.<init>(Dialog.java:115)
	org.pentaho.di.ui.core.dialog.ErrorDialog.<init>(ErrorDialog.java:97)
	org.pentaho.di.ui.spoon.Spoon.<init>(Spoon.java:735)
	org.pentaho.di.ui.spoon.Spoon.<init>(Spoon.java:714)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	org.eclipse.rap.rwt.internal.util.ClassUtil.createInstance(ClassUtil.java:57)
	org.eclipse.rap.rwt.internal.util.ClassUtil.newInstance(ClassUtil.java:38)
	org.eclipse.rap.rwt.internal.util.ClassUtil.newInstance(ClassUtil.java:32)
	org.eclipse.rap.rwt.internal.lifecycle.DefaultEntryPointFactory.create(DefaultEntryPointFactory.java:49)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:176)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	java.lang.Thread.run(Thread.java:745)
	org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.38 logs.

Apache Tomcat/8.0.38

Image disposed error in the repository dialog

Under some condition, clicking on a "Connect" button at the top-right corner causes an "Image is disposed" error as below.

java.lang.IllegalArgumentException: Image is disposed
	org.eclipse.rap.rwt.remote.JsonMapping.toJson(JsonMapping.java:185)
	org.eclipse.rap.rwt.internal.lifecycle.WidgetLCAUtil.renderProperty(WidgetLCAUtil.java:424)
	org.eclipse.swt.internal.widgets.shellkit.ShellLCA.renderImage(ShellLCA.java:198)
	org.eclipse.swt.internal.widgets.shellkit.ShellLCA.renderChanges(ShellLCA.java:121)
	org.eclipse.swt.internal.widgets.shellkit.ShellLCA.renderChanges(ShellLCA.java:1)
	org.eclipse.rap.rwt.internal.lifecycle.WidgetLCA.render(WidgetLCA.java:40)
	org.eclipse.swt.internal.widgets.displaykit.DisplayLCA$RenderVisitor.render(DisplayLCA.java:313)
	org.eclipse.swt.internal.widgets.displaykit.DisplayLCA$RenderVisitor.visit(DisplayLCA.java:297)
	org.eclipse.swt.internal.widgets.WidgetTreeUtil.accept(WidgetTreeUtil.java:32)
	org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.renderShells(DisplayLCA.java:175)
	org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.render(DisplayLCA.java:101)
	org.eclipse.rap.rwt.internal.lifecycle.Render.execute(Render.java:32)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.continueLifeCycle(RWTLifeCycle.java:155)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.sleep(RWTLifeCycle.java:229)
	org.eclipse.swt.widgets.Display.sleep(Display.java:1258)
	org.pentaho.di.ui.repo.RepositoryDialog.open(RepositoryDialog.java:255)
	org.pentaho.di.ui.repo.RepositoryDialog.open(RepositoryDialog.java:85)
	org.pentaho.di.ui.repo.RepositoryDialog.openLogin(RepositoryDialog.java:278)
	org.pentaho.di.ui.repo.RepositoryConnectMenu$4$1.widgetSelected(RepositoryConnectMenu.java:177)
	org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:263)
	org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:109)
	org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:687)
	org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
	org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1217)
	org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1198)
	org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1181)
	org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1173)
	org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:69)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
	org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	java.lang.Thread.run(Thread.java:745)
	org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)

Moving a note twice causes an error

How to reproduce:

  1. Create a new transformation file
  2. Right-click on the canvas, Select "New Note", Type some note, and click "OK"
  3. Move the note once
  4. Move it again

Redirect to /rwt-resources/XXX after successful login

Symptom

Redirect to /rwt-resources/XXX after login

How to reproduce

  1. Login and keep it open until timeout (30min by default on Tomcat)
  2. Login again

[Client]
OS: Mac OS X (10.12.4)
Browser: Safari (10.1)

This has not happened on other browsers (Google Chrome 57.0.2987.133, Firefox 53.0).

[Server]
OS: Mac OS X (10.12.4)
Java: Oracle Java (1.8.0_121)
Servlet container: Tomcat (8.0.33.0)
App: webSpoon (0.7.0.8)

Workaround

Manually go to /spoon

NPE when opening a dialog of "Add fields changing sequence" step

The following error can be seen in the log when opening a dialog of "Add fields changing sequence" step

Exception in thread "Thread-25" java.lang.NullPointerException
	at org.pentaho.di.ui.trans.steps.fieldschangesequence.FieldsChangeSequenceDialog$7.run(FieldsChangeSequenceDialog.java:298)
	at java.lang.Thread.run(Thread.java:745)

I could not connect to a repository

In Pentaho 7, the connection to the repository has been removed from the Tools> Repository> Connect menu. Now this option is in the upper right corner of the screen. I could not find any of the options on Spoon Web. Am I doing something wrong? Or is it really a bug for version 7?

testDatabaseConnectionDialog fails when no connection defined yet

The current testDatabaseConnectionDialog tests if the following user operations go without an error:

  1. Open a DB connection by clicking "New" button.
  2. Close the dialog.
  3. Open another dialog again by clicking "Edit" button.
  4. Close the dialog.

When no connection defined yet, this test fails because a dialog cannot be opened in the step 3.

Intalling a plugin

I installed a plugin by copying the plugin jar into

tomcat > webapps> spoon > plugin

.
This is a step plugin and working fine in desktop application installation.

Step is not visible in webspoon. Am i missing some configuration? Does webspoon uses ba server installation of data integration?

My installation details:

Version of BA Server EE 6.0.1.0.386
Java version jdk 1.8.0_73
Host OS windows 7 professional 64 bits

type connection

Hi ,
I don't see in the menu the possibility to use different type connection (jdbc,odbc and jndi).
screen shot 2017-04-20 at 10 27 25

An error happens in an unknown condition when opening a step dialog of Modified Java Script Value

java.lang.IllegalArgumentException: Argument not valid
	at org.eclipse.swt.SWT.error(SWT.java:3794)
	at org.eclipse.swt.SWT.error(SWT.java:3731)
	at org.eclipse.swt.SWT.error(SWT.java:3702)
	at org.eclipse.swt.widgets.Item.setImage(Item.java:156)
	at org.eclipse.swt.widgets.MenuItem.setImage(MenuItem.java:278)
	at org.pentaho.di.ui.trans.steps.scriptvalues_mod.ScriptValuesModDialog.buildingFolderMenu(ScriptValuesModDialog.java:1892)
	at org.pentaho.di.ui.trans.steps.scriptvalues_mod.ScriptValuesModDialog.open(ScriptValuesModDialog.java:599)
	at org.pentaho.di.ui.spoon.delegates.SpoonStepsDelegate.editStep(SpoonStepsDelegate.java:127)
	at org.pentaho.di.ui.spoon.Spoon.editStep(Spoon.java:8796)
	at org.pentaho.di.ui.spoon.trans.TransGraph.editStep(TransGraph.java:3257)
	at org.pentaho.di.ui.spoon.trans.TransGraph.mouseDoubleClick(TransGraph.java:796)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:218)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:109)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:687)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
	at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1217)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1198)
	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1181)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1173)
	at org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:69)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	at java.lang.Thread.run(Thread.java:745)
	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)

Run in server (Carte) causes NPE error

A transformation can be submitted and executed, but a NPE error occurs when opening a monitor tab.

Caused by:

org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
	at org.eclipse.swt.SWT.error(SWT.java:3720)
	at org.eclipse.swt.SWT.error(SWT.java:3643)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:200)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1201)
	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1181)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1173)
	at org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:69)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	at java.lang.Thread.run(Thread.java:745)
	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)
Caused by: java.lang.NullPointerException
	at org.eclipse.swt.graphics.GC.textExtent(GC.java:254)
	at org.pentaho.di.ui.core.widget.TreeUtil.setOptimalWidthOnColumns(TreeUtil.java:41)
	at org.pentaho.di.ui.spoon.SpoonSlave.refreshView(SpoonSlave.java:935)
	at org.pentaho.di.ui.spoon.SpoonSlave.refreshViewAndLog(SpoonSlave.java:595)
	at org.pentaho.di.ui.spoon.SpoonSlave$12$1.run(SpoonSlave.java:1221)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:38)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:193)
	... 8 more
Caused by:

java.lang.NullPointerException
	at org.eclipse.swt.graphics.GC.textExtent(GC.java:254)
	at org.pentaho.di.ui.core.widget.TreeUtil.setOptimalWidthOnColumns(TreeUtil.java:41)
	at org.pentaho.di.ui.spoon.SpoonSlave.refreshView(SpoonSlave.java:935)
	at org.pentaho.di.ui.spoon.SpoonSlave.refreshViewAndLog(SpoonSlave.java:595)
	at org.pentaho.di.ui.spoon.SpoonSlave$12$1.run(SpoonSlave.java:1221)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:38)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:193)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1201)
	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1181)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1173)
	at org.eclipse.rap.rwt.application.AbstractEntryPoint.createUI(AbstractEntryPoint.java:69)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
	at java.lang.Thread.run(Thread.java:745)
	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)

DET is not available

After copying all the libraries and plugins from EE and start webSpoon, the following error occurred and DET service plugin was not successfully started.
Looks like the plugin tries to access a Display (=ui session), which is not available until the first user starts using webSpoon.

17:09:05,822 ERROR [ServiceRecipe] Error retrieving service from ServiceRecipe[name='auto_pdi_plugin_service_transGraphMouseUpExtensionPoint']
org.osgi.service.blueprint.container.ComponentDefinitionException: Error when instantiating bean transGraphMouseUpExtensionPoint of class com.pentaho.det.di.impl.plugin.TransGraphMouseUpExtensionPoint
        at org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:333)
        at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:806)
        at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)
        at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
        at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62)
        at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)
        at org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:268)
        at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:806)
        at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)
        at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
        at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62)
        at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)
        at org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:284)
        at org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:251)
        at org.apache.aries.blueprint.container.ServiceRecipe.internalCreate(ServiceRecipe.java:148)
        at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
        at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)
        at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
        at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:682)
        at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:377)
        at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)
        at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)
        at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)
        at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253)
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)
        at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1127)
        at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696)
        at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484)
        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4429)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2100)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Argument cannot be null
        at org.eclipse.swt.SWT.error(SWT.java:3794)
        at org.eclipse.swt.SWT.error(SWT.java:3731)
        at org.eclipse.swt.SWT.error(SWT.java:3702)
        at org.eclipse.swt.graphics.Resource.checkDevice(Resource.java:112)
        at org.eclipse.swt.graphics.Cursor.<init>(Cursor.java:100)
        at com.pentaho.det.di.impl.plugin.TransGraphMouseUpExtensionPoint.<init>(SourceFile:41)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.apache.aries.blueprint.utils.ReflectionUtils.newInstance(ReflectionUtils.java:329)
        at org.apache.aries.blueprint.container.BeanRecipe.newInstance(BeanRecipe.java:962)
        at org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:331)
        ... 42 more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.