Vaadin TouchKit: Widgetset does not contain implementation for com.vaadin.t

I tried
Vaadin 6.4.6
and
Vaadin TouchKit 1.0
(which says it’s for Vaadin 6.3), the Vaadin Eclipse plugin recompiled the widgetset.

But it still doesn’t work:

Widgetset does not contain implementation for com.vaadin.touchkit.TouchPanel. Check its @ClientWidget mapping, widgetsets GWT module description file and re-compile your widgetset. In case you have downloaded a vaadin add-on package, you might want to refer to add-on instructions. Unrendered UIDL:

	com.vaadin.touchkit.TouchPanel(NO CLIENT IMPLEMENTATION FOUND) id=PID1 width=100.0%
	com.vaadin.terminal.gwt.client.ui.VVerticalLayout id=PID2 width=100.0% margins=15 alignments={} expandRatios={}

Does Vaadin TouchKit already supports Vaadin 6.4.6, or that I did something wrong?

Compilation seems flawless (here’s the verbose compilation output):

Executing compiler with parameters 
[/usr/lib/jvm/java-6-sun-1.6.0.21/bin/java, -Djava.awt.headless=true, -Xss8M, -Xmx512M, -XX:MaxPermSize=512M, -classpath, /usr/lib/jvm/java-6-sun-1.6.0.21/jre/lib/rt.jar:/home/ceefour/project/BorrowBuddy/borrowbuddy/src:/home/ceefour/project/BorrowBuddy/borrowbuddy/build/classes:/opt/eclipse_jee/configuration/com.vaadin.integration.eclipse/download/gwt-dev/2.0.4/gwt-dev.jar:/opt/eclipse_jee/configuration/com.vaadin.integration.eclipse/download/gwt-user/2.0.4/gwt-user.jar:/home/ceefour/project/BorrowBuddy/borrowbuddy/WebContent/WEB-INF/lib/vaadin-6.4.6.jar:/home/ceefour/project/BorrowBuddy/borrowbuddy/WebContent/WEB-INF/lib/vaadin-touchkit-1.0.0.jar, com.vaadin.tools.WidgetsetCompiler, -out, WebContent/VAADIN/widgetsets, -localWorkers, 2, -logLevel, INFO, com.soluvas.borrowbuddy.widgetset.BorrowbuddyWidgetset]
Updating GWT module description file...
Oct 16, 2010 5:34:26 AM com.vaadin.terminal.gwt.widgetsetutils.ClassPathExplorer getAvailableWidgetSets
INFO: Widgetsets found from classpath:
	com.soluvas.borrowbuddy.widgetset.BorrowbuddyWidgetset in file:/home/ceefour/project/BorrowBuddy/borrowbuddy/src
	com.vaadin.terminal.gwt.DefaultWidgetSet in jar:file:/home/ceefour/project/BorrowBuddy/borrowbuddy/WebContent/WEB-INF/lib/vaadin-6.4.6.jar!/
	com.vaadin.touchkit.widgetset.TouchKitWidgetset in jar:file:/home/ceefour/project/BorrowBuddy/borrowbuddy/WebContent/WEB-INF/lib/vaadin-touchkit-1.0.0.jar!/

Done.
Starting GWT compiler
Compiling module com.soluvas.borrowbuddy.widgetset.BorrowbuddyWidgetset
   Scanning for additional dependencies: jar:file:/home/ceefour/project/BorrowBuddy/borrowbuddy/WebContent/WEB-INF/lib/vaadin-6.4.6.jar!/com/vaadin/terminal/gwt/client/WidgetSet.java
      Computing all possible rebind results for 'com.vaadin.terminal.gwt.client.WidgetMap'
         Rebinding com.vaadin.terminal.gwt.client.WidgetMap
            Invoking com.google.gwt.dev.javac.StandardGeneratorContext@107dd21
               Detecting Vaadin components in classpath to generate WidgetMapImpl.java ...
               Widget set will contain implementations for following components: 
               	com.vaadin.touchkit.TouchLayout
               	com.vaadin.touchkit.TouchMenu
               	com.vaadin.touchkit.TouchPanel
               	com.vaadin.ui.AbsoluteLayout
               	com.vaadin.ui.Accordion
               	com.vaadin.ui.Button
               	com.vaadin.ui.CheckBox
               	com.vaadin.ui.ComboBox
               	com.vaadin.ui.CssLayout
               	com.vaadin.ui.CustomComponent
               	com.vaadin.ui.CustomLayout
               	com.vaadin.ui.DateField
               	com.vaadin.ui.DragAndDropWrapper
               	com.vaadin.ui.Embedded
               	com.vaadin.ui.Form
               	com.vaadin.ui.FormLayout
               	com.vaadin.ui.GridLayout
               	com.vaadin.ui.HorizontalLayout
               	com.vaadin.ui.Label
               	com.vaadin.ui.Link
               	com.vaadin.ui.ListSelect
               	com.vaadin.ui.MenuBar
               	com.vaadin.ui.NativeButton
               	com.vaadin.ui.NativeSelect
               	com.vaadin.ui.OptionGroup
               	com.vaadin.ui.OrderedLayout
               	com.vaadin.ui.Panel
               	com.vaadin.ui.PopupView
               	com.vaadin.ui.ProgressIndicator
               	com.vaadin.ui.RichTextArea
               	com.vaadin.ui.Select
               	com.vaadin.ui.Slider
               	com.vaadin.ui.SplitPanel
               	com.vaadin.ui.TabSheet
               	com.vaadin.ui.Table
               	com.vaadin.ui.TextField
               	com.vaadin.ui.Tree
               	com.vaadin.ui.TwinColSelect
               	com.vaadin.ui.Upload
               	com.vaadin.ui.UriFragmentUtility
               	com.vaadin.ui.VerticalLayout
               	com.vaadin.ui.Window
               Done. (50seconds)
   Scanning for additional dependencies: jar:file:/home/ceefour/project/BorrowBuddy/borrowbuddy/WebContent/WEB-INF/lib/vaadin-6.4.6.jar!/com/vaadin/terminal/gwt/client/ui/dd/VAcceptCriteria.java
      Computing all possible rebind results for 'com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriterionFactory'
         Rebinding com.vaadin.terminal.gwt.client.ui.dd.VAcceptCriterionFactory
            Invoking com.google.gwt.dev.javac.StandardGeneratorContext@107dd21
               Detecting available criteria ...
               creating mapping for com.vaadin.event.dd.acceptcriteria.AcceptAll
               creating mapping for com.vaadin.event.dd.acceptcriteria.ServerSideCriterion
               creating mapping for com.vaadin.event.dd.acceptcriteria.SourceIsTarget
               creating mapping for com.vaadin.ui.Tree.TreeDropCriterion
               creating mapping for com.vaadin.ui.Tree.TargetInSubtree
               creating mapping for com.vaadin.event.dd.acceptcriteria.ContainsDataFlavor
               creating mapping for com.vaadin.event.dd.acceptcriteria.Or
               creating mapping for com.vaadin.ui.Table.TableDropCriterion
               creating mapping for com.vaadin.event.dd.acceptcriteria.And
               creating mapping for com.vaadin.event.dd.acceptcriteria.SourceIs
               creating mapping for com.vaadin.event.dd.acceptcriteria.TargetDetailIs
               creating mapping for com.vaadin.ui.AbstractSelect.TargetItemIs
               creating mapping for com.vaadin.event.dd.acceptcriteria.Not
               creating mapping for com.vaadin.ui.AbstractSelect.AcceptItem
               Done. (0seconds)
   Compiling 1 permutation
      Compiling permutation 0...
   Compile of permutations succeeded
   Linking into WebContent/VAADIN/widgetsets
      Link succeeded
   Compilation succeeded -- 173.667s

The compilation indeed looks good, although you are only compiling one permutation (for one browser) - but the widgetset you just compiled is not used.

First make sure that your web.xml (or portlet.xml) correctly refers to the widgetset as an init parameter.

This could also be an issue with some cache or similar (try cleaning the Tomcat work directory if running Tomcat in Eclipse), or see if the widgetset is copied to the correct location if that is needed for your server.

Finally, make sure the permutation you are compiling is the correct one for the browser you are using - you could try compiling all permutations.

THANK YOU Henri!

I modified web.xml so it says like this:

	<servlet>
		<servlet-name>Borrowbuddy Mobile</servlet-name>
		<servlet-class>com.soluvas.borrowbuddy.MobileServlet</servlet-class>
		<init-param>
			<description>Vaadin application class to start</description>
			<param-name>application</param-name>
			<param-value>com.soluvas.borrowbuddy.BorrowbuddyMobileApplication</param-value>
		</init-param>
		<init-param>
			<param-name>widgetset</param-name>
			<param-value>com.soluvas.borrowbuddy.widgetset.BorrowbuddyWidgetset</param-value>
		</init-param>
	</servlet>

and it works flawlessly now!

One question is: why the Vaadin Eclipse Plugin didn’t automatically put that in the web.xml when I added the TouchKit add-on ?

Regarding permutation, I don’t set a specific browser, so why does Vaadin only compiles for one browser? (and what browser would it be???) Here’s my widgetset XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
<module>
	<inherits name="com.vaadin.terminal.gwt.DefaultWidgetSet" />
	
    <!--
     Uncomment the following to compile the widgetset for one browser only.
     This can reduce the GWT compilation time significantly when debugging.
     The line should be commented out before deployment to production
     environments.
      
     Multiple browsers can be specified for GWT 1.7 as a comma separated
     list. The supported user agents at the moment of writing were:
     ie6,ie8,gecko,gecko1_8,safari,opera
     
     The value gecko is used for Firefox 3 and later, gecko1_8 is for
     Firefox 2 and safari is used for  webkit based browsers including
     Google Chrome.
    -->
    <!-- <set-property name="user.agent" value="gecko"/> -->


    <inherits name="com.vaadin.touchkit.widgetset.TouchKitWidgetset" />
</module>

Your configuration has the user.agent property commented out, but in fact TouchKit is primarily targeted for the mobile browsers and does define the property so that only the permutation “safari” (used by all webkit-based browsers including Google Chrome) is compiled.

If you want to compile other permutations, you’ll need to uncomment the line and add the browser entries you want to support there. In addition, the order of defining it and inheriting the TouchKit widgetset might matter.

Thank you Henri for the explanation :slight_smile: