superdevmode documentation

I’ve been trying to get superdevmode running for a vaadin 8 project.

So far I’ve gotten no where dispite trying multiple alternatives.

Key problem is that the documenation seems to make a whole lot of assumptions.

Now some of my problem may be that I’m running eclipses oxygen which may causing issues with the vaadin plugin.
Either way I think the documentation should provide a complete explaination even if you arn’t using the plugin as that way if you need to adjust any settings you would have a full understanding of how the system works.

So I thought I might put a series of questions here so we can get some clarity around the documentation and then perhaps get the doco updated. It looks like we can do pull requests on the doco so I’m happy to contribute.

So questions that I raised as reading the documentation.

  1. docu needs an overview of the lauch configuration requirements and what they do.

I think that you need:

a) a code server configuation. This is a web servlet container (tomcat | jetty etc) that serves the java source code for the widget set and performs incremental compilation.

b) your standard web servlet container (tomcat | jetty etc) that you currently use to launch your vaadin application.

c) to do superdevmode debugging you need both of the above servers running side by side.
This implies that you need to either bind them to different ip address (e.g. 127.0.0.1 and 127.0.0.2) or different port no.s on the same ip address.

The doco states that you run the class com.google.gwt.dev.DevMode.
What package is this class in? When I attempted to run launch this I got a class not found error.

The doco states that there should be a button ‘Create development mode launch’ in the vaadin section of the project properties.
My eclipse install does not have this. I am running oxygen which may be the issue. I’m running vaadin plugin 4.0.0 final.
Can anyone confirm that this button is available in Eclipse neon or is this an actual problem?

The doco the states you can edit the launch configuration by selecting Run | Run Configurations.
What it doesn’t say is what type of Run Configuration this should be. This would be helpful.
It looks like its meant to be a tomcat (or jetty) server configuation. I think you can just copy or modify your exising tomcat server launch. As I write this I’m not certain I’m correct here as the -noserver option implies that normally it will run up jetty itself, so is this meant to be just a Java Applicaiton launcher?
I’ve just found an artical that states that it is a Java Application Launcher.
and that you need to install the GWT toolkit.

https://stackoverflow.com/questions/18330001/super-dev-mode-in-gwt

It also provides the following argument details with some explaination but it fall short.

-noserver -war WebContent/VAADIN/widgetsets com.example.myproject.widgetset.MyWidgetSet -startupUrl http://localhost:8080/myproject -bindAddress 127.0.0.1 So I have two project. One contains the widget set (I’m working on GridFastNavigation improvements) and the other my vaadin application.

I would guess that this would be a fairly typical project setup.

However the documentation provides no guidance on this type of configuration.
Specifically I’m unclear on what the widget set path should look like.
The example shows:
com.example.myproject.widgetset.MyWidgetSet

Given the case I’m guessing that ‘MyWidgetSet’ is the class name of the widget I’m debugging. The documentation fails to details exactly what this refers to. And yes I can guess but when you are dealing with fifteen other vaugeries it gets a little difficult.

The doco states that you need to add some additional configuration to your .gwt.xml file.
My maven/vaadin project doesn’t seem to have one.
Well thats not quite true.
There is a file in target/generated-resources (as I write this the file doesn’t exist as I moved it).
So I created the file under src/main/resources/(packagename)/AppWidgetsetgwt.xml.

Is this the correct thing to do?

My widget set now looks like:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN"
        "http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd">
<module>
<inherits name="com.vaadin.DefaultWidgetSet"/>

    <inherits name="org.vaadin.patrik.GridFastNavigation" />
    
    <!--  super dev mode settings -->
    <add-linker name="xsiframe"/>
    <set-configuration-property name="devModeRedirectEnabled" value="true" />

</module>    

The discussion around creating the ‘SuperDevMode launch’ has the same limitations.

What type of launch configuration is this?
What does the com.google.gwt.dev.codeserver.CodeServer package come from?
When it says to add the ‘project sources’ to the class path do they mean the widget set classes or the main vaadin applications source folders?

The doco states:

‘The above configuration only needs to be done once to enable the SuperDevMode. After that, you can launch the mode as follows:’

Exactly what only needs to be done once? As far as I can tell both services need to be run each time, so I’m really unclear what this is referring to?

Superdev mode seems like a very useful tool in doing client side development.

As such it would seem that having some excellent documenation to support it would be worth the effort.
Happy to help if I can get some answers.

Brett

So I’ve just fired up Eclipse Neon with Vaadin 4.0.0 final plugin and I still can’t find either of the launch configuration buttons.

So either I’m looking in the wrong spot or they are missing from the plugin.

We either have a problem with the doco or the plugin.

Hi Brett,

First a couple of questions. Are you using Vaadin 7 or Vaadin 8? Is your project Ant + Ivy or Maven? Is the project something you’ve had for a longer time or something made recently eg. from an archetype? Once I understand what kind of a project setup you have, I can help you get your SuperDevMode up and running.

The documentation you’ve been reading sounds really unclear and just confusing and definitely needs some improvement. Can you provide me a link to where you found this documentation, so I can find out how badly outdated it is and possibly wipe it away and rewrite it?

Sorry I intended to include the link.

https://vaadin.com/docs/-/part/framework/clientside/clientside-debugging.html

Its a new project.

Maven
Vaadin 8

From recollection I created the project using the simple vaadin maven archetype

I’m building an app which is using Tatu Lund’s GridFastNavigation addon.

https://github.com/TatuLund/GridFastNavigation

I’m working with Tatu to create an 8.0 port of his addon whilst also working on a project that uses it.

I’m trying to debug Tatu’s addon whilst using it in my project (as I have some issues that only occur when its used in my project).

Perhaps to be more specific I’m working with this branch:

https://github.com/TatuLund/GridFastNavigation/tree/vaadin8

That project is a classic example of a Vaadin Add-On project. The demo module contains the UI and all related parts, including the widgetset. In the pom.xml of the demo module is the vaadin-maven-plugin definition, which has all the tools you need to run the SuperDevMode. From your IDE, debug the demo project as a maven build, goal [font=courier new]
vaadin:run-codeserver [font=arial]
and check the “Resolve workspace artifacts” checkbox. This should get your codeserver up and running in [font=courier new]
localhost:9876


After you have your codeserver running from the demo module, you start the jetty/tomcat/widfly/younameit from the demo module as well, open the demo UI and add
?superdevmode
at the end of the URL. If you have the superdevmode running in some non-default ip/port you can define it with
?superdevmode=mydomain.foo:port




[/font]
[/font]
[/font]

Thanks, but I’m not looking to debug the demo project but a third project of my own.

The particular problem I’m investigating only exhibits itself in my own code.

Additionally the reason for the detailed questions was that I was hoping to update the documentation. If your happy to provide some answers to my specific questions (although your above answer goes a fair way) I would be happy to submit a pull request.

As a base line I’ve followed your guide and got the code server running and it appears to compile the widget set.

I will attempt to get my own project working later tonight.

Thanks,
Brett

How did it go with this?

If you see gaps or problems in the current documentation, a pull request would be welcome.