Widgetset does not contain implementation for XY

Hey developers,

i’m having trouble getting Vaadin-Addons functionally (especially dCharts and VaadinCharts).
Answers from related posts didn’t helped, so here i am.

The Error is very common:

Widgetset does not contain implementation for com.vaadin.addon.charts.Chart. Check its component connector’s @Connect 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.

Even my clean newly created “Tester” vaadin-project did’nt display VaadinCharts charts.
I’m using a simple example from VaadinCharts for a piechart.
I’ve copied the 5 jars in the WEB-INF/lib folder, completed the ivy.xml / ivysettings.xml and web.xml , resolved the dependencies (with Ivy), cleaned the project and re-compiled the widgetset (without success).

i tried (as seen in other Posts):

  • re-compiling the widgetset
  • manually delete widgetset-folder and -package
  • clear cache and resolve Dependencies with Ivy
  • refresh and clean project

Maybe i’m overlooking something but i didn’t find it.
“Any idea of what I am doing wrong?”

So here are some infos.

Thanks in advance!

My System and Software:
Win 7 - 64 Bit
Juno Service Release 2 Build id: 20130225-0426
Vaadin-Plugin for Eclipse
M2E - Maven Integration for Eclipse

Project:
Vaadin 7.1.7
Java 6 + Servlet 3.0
Tomcat v7.0 Server
Ivy

My WebContent/WEB-INF/lib - Folder contains:

commons-io-1.4.jar
gson-2.2.jar
vaadin-charts-1.1.2.jar
vaadin-charts-1.1.2-javadoc.jar
vaadin-charts-1.1.2-sources.jar

TesterWidgetset.gwt.xml (inside the com.example.tester.widgetset package) contains:

<?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="com.vaadin.addon.charts.Widgetset" />

<inherits name="com.vaadin.addon.timeline.gwt.TimelineWidgetSet" />
</module>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Tester</display-name>
<servlet>
<servlet-name>Tester</servlet-name>
<servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
<init-param>
<param-name>UI</param-name>
<param-value>com.example.tester</param-value>
</init-param>
<init-param>
<description>TesterWidgetset</description>
<param-name>widgetset</param-name>
<param-value>com.example.tester.widgetset</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Tester</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

ivy.xml:

<?xml version="1.0"?>
<!DOCTYPE ivy-module [
    <!ENTITY vaadin.version "7.1.7">
]>
<ivy-module version="2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info organisation="com.example" module="v7proj" />
    <configurations>
        <!-- The default configuration, which should be deployed to the server -->
        <conf name="default" />
        <!-- A configuration only needed when compiling the widget set. Should
            not be deployed to the server -->
        <conf name="widgetset-compile" />
        <!-- A configuration used in compilation of server side classes only.
            Should be deployed to the server -->
        <conf name="nodeploy" />
    </configurations>
    <dependencies defaultconf="default" defaultconfmapping="default->default">
        <!-- The core server part of Vaadin -->
        <dependency org="com.vaadin" name="vaadin-server" rev="&vaadin.version;" />

        <!-- Vaadin themes -->
        <dependency org="com.vaadin" name="vaadin-themes" rev="&vaadin.version;" />
        
        <!-- Vaadin Add-Ons -->
        <dependency org="com.vaadin.addon" name="vaadin-charts" rev="1.1.2" conf="default->default" />

        <!-- Push support -->
        <dependency org="com.vaadin" name="vaadin-push" rev="&vaadin.version;" />

        <!-- Servlet 3.0 API -->
        <dependency org="javax.servlet" name="javax.servlet-api" rev="3.0.1" conf="nodeploy->default" />

        <!-- Precompiled DefaultWidgetSet -->
        <dependency org="com.vaadin" name="vaadin-client-compiled"
            rev="&vaadin.version;" />

        <!-- Vaadin client side, needed for widget set compilation -->
        <dependency org="com.vaadin" name="vaadin-client" rev="&vaadin.version;"
             conf="widgetset-compile->default" />

        <!-- Compiler for custom widget sets. Should not be deployed -->
        <dependency org="com.vaadin" name="vaadin-client-compiler"
            rev="&vaadin.version;" conf="widgetset-compile->default" />
    </dependencies>
</ivy-module>

ivysettings.xml

<?xml version="1.0" encoding="UTF-8"?>
<ivysettings>
    <settings defaultResolver="default" />
    <resolvers>
        <chain name="default">
            <!-- Public Maven repository -->
            <ibiblio name="public" m2compatible="true" />

            <!-- Vaadin Add-on repository -->
            <ibiblio name="vaadin-addons" usepoms="true" m2compatible="true"
                root="http://maven.vaadin.com/vaadin-addons" />

            <!-- Vaadin snapshots repository -->
            <ibiblio name="vaadin-snapshots" usepoms="true" m2compatible="true"
                root="https://oss.sonatype.org/content/repositories/vaadin-snapshots" />
            <!-- Repository used for Vaadin modified smartsprites library -->
            <dual name="custom-smartsprites">
                <filesystem name="smartsprites-ivy">
                    <ivy pattern="${basedir}/ivymodule/[module]
-ivy-[revision]
.xml" />
                </filesystem>
                <url name="smartsprites-artifact">
                    <artifact
                        pattern="http://dev.vaadin.com/svn/versions/6.8/build/smartsprites/lib/[artifact]
(-[revision]
).[ext]
" />
                </url>
            </dual>
        </chain>
    </resolvers>
    <modules>
        <!-- Vaadin patched SmartSprites -->
        <module organisation="com.carrotsearch" name="smartsprites"
            revision="0.2.3-itmill" resolver="custom-smartsprites" />
    </modules>
</ivysettings>

Output from widgetset-compiling:

Executing compiler with command line:
C:\Program Files\Java\jre7\bin\java.exe -Djava.awt.headless=true -Xss8M -Xmx512M -XX:MaxPermSize=512M -classpath C:\Program Files\Java\jre7\lib\resources.jar;C:\Program Files\Java\jre7\lib\rt.jar;C:\Program Files\Java\jre7\lib\jsse.jar;C:\Program Files\Java\jre7\lib\jce.jar;C:\Program Files\Java\jre7\lib\charsets.jar;C:\Program Files\Java\jre7\lib\jfr.jar;C:\Program Files\Java\jre7\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jre7\lib\ext\dnsns.jar;C:\Program Files\Java\jre7\lib\ext\jaccess.jar;C:\Program Files\Java\jre7\lib\ext\localedata.jar;C:\Program Files\Java\jre7\lib\ext\sunec.jar;C:\Program Files\Java\jre7\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jre7\lib\ext\sunmscapi.jar;C:\Program Files\Java\jre7\lib\ext\zipfs.jar;D:/Development/eclipse JUNO/Workspace/Tester/src;D:/Development/eclipse JUNO/Workspace/Tester/build/classes;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-client/jars/vaadin-client-7.1.7.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-shared/jars/vaadin-shared-7.1.7.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-shared-deps/jars/vaadin-shared-deps-1.0.2.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-server/jars/vaadin-server-7.1.7.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-theme-compiler/jars/vaadin-theme-compiler-7.1.7.jar;C:/Users/Mobil/.ivy2/cache/org.apache.commons/commons-jexl/jars/commons-jexl-2.1.1.jar;C:/Users/Mobil/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.1.1.jar;C:/Users/Mobil/.ivy2/cache/org.w3c.css/sac/jars/sac-1.3.jar;C:/Users/Mobil/.ivy2/cache/net.sourceforge.cssparser/cssparser/jars/cssparser-0.9.5.jar;C:/Users/Mobil/.ivy2/cache/commons-cli/commons-cli/jars/commons-cli-1.2.jar;C:/Users/Mobil/.ivy2/cache/org.jsoup/jsoup/jars/jsoup-1.6.3.jar;C:/Users/Mobil/.ivy2/cache/javax.validation/validation-api/jars/validation-api-1.0.0.GA-sources.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-client-compiler/jars/vaadin-client-compiler-7.1.7.jar;C:/Users/Mobil/.ivy2/cache/commons-collections/commons-collections/jars/commons-collections-3.1.jar;C:/Users/Mobil/.ivy2/cache/ant/ant/jars/ant-1.6.5.jar;C:/Users/Mobil/.ivy2/cache/ant/ant-launcher/jars/ant-launcher-1.6.5.jar;C:/Users/Mobil/.ivy2/cache/org.mortbay.jetty/jetty/jars/jetty-6.1.11.jar;C:/Users/Mobil/.ivy2/cache/org.mortbay.jetty/jetty-util/jars/jetty-util-6.1.11.jar;C:/Users/Mobil/.ivy2/cache/org.mortbay.jetty/servlet-api-2.5/jars/servlet-api-2.5-6.1.11.jar;C:/Users/Mobil/.ivy2/cache/org.jdesktop/swing-worker/jars/swing-worker-1.1.jar;C:/Users/Mobil/.ivy2/cache/commons-codec/commons-codec/jars/commons-codec-1.3.jar;C:/Users/Mobil/.ivy2/cache/commons-io/commons-io/jars/commons-io-2.2.jar;C:/Users/Mobil/.ivy2/cache/commons-lang/commons-lang/jars/commons-lang-2.6.jar;C:/Users/Mobil/.ivy2/cache/org.apache.james/apache-mime4j/jars/apache-mime4j-0.6.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-client-compiler-deps/jars/vaadin-client-compiler-deps-1.0.2.jar;C:/Program Files/Java/jre7/lib/resources.jar;C:/Program Files/Java/jre7/lib/rt.jar;C:/Program Files/Java/jre7/lib/jsse.jar;C:/Program Files/Java/jre7/lib/jce.jar;C:/Program Files/Java/jre7/lib/charsets.jar;C:/Program Files/Java/jre7/lib/jfr.jar;C:/Program Files/Java/jre7/lib/ext/access-bridge-64.jar;C:/Program Files/Java/jre7/lib/ext/dnsns.jar;C:/Program Files/Java/jre7/lib/ext/jaccess.jar;C:/Program Files/Java/jre7/lib/ext/localedata.jar;C:/Program Files/Java/jre7/lib/ext/sunec.jar;C:/Program Files/Java/jre7/lib/ext/sunjce_provider.jar;C:/Program Files/Java/jre7/lib/ext/sunmscapi.jar;C:/Program Files/Java/jre7/lib/ext/zipfs.jar;D:/Development/Tomcat v7/lib/annotations-api.jar;D:/Development/Tomcat v7/lib/catalina-ant.jar;D:/Development/Tomcat v7/lib/catalina-ha.jar;D:/Development/Tomcat v7/lib/catalina-tribes.jar;D:/Development/Tomcat v7/lib/catalina.jar;D:/Development/Tomcat v7/lib/ecj-3.6.2.jar;D:/Development/Tomcat v7/lib/el-api.jar;D:/Development/Tomcat v7/lib/jasper-el.jar;D:/Development/Tomcat v7/lib/jasper.jar;D:/Development/Tomcat v7/lib/jsp-api.jar;D:/Development/Tomcat v7/lib/servlet-api.jar;D:/Development/Tomcat v7/lib/sqljdbc4.jar;D:/Development/Tomcat v7/lib/tomcat-api.jar;D:/Development/Tomcat v7/lib/tomcat-coyote.jar;D:/Development/Tomcat v7/lib/tomcat-dbcp.jar;D:/Development/Tomcat v7/lib/tomcat-i18n-es.jar;D:/Development/Tomcat v7/lib/tomcat-i18n-fr.jar;D:/Development/Tomcat v7/lib/tomcat-i18n-ja.jar;D:/Development/Tomcat v7/lib/tomcat-util.jar;D:/Development/eclipse JUNO/Workspace/Tester/WebContent/WEB-INF/lib/commons-io-1.4.jar;D:/Development/eclipse JUNO/Workspace/Tester/WebContent/WEB-INF/lib/gson-2.2.jar;D:/Development/eclipse JUNO/Workspace/Tester/WebContent/WEB-INF/lib/vaadin-charts-1.1.2-javadoc.jar;D:/Development/eclipse JUNO/Workspace/Tester/WebContent/WEB-INF/lib/vaadin-charts-1.1.2-sources.jar;D:/Development/eclipse JUNO/Workspace/Tester/WebContent/WEB-INF/lib/vaadin-charts-1.1.2.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-themes/jars/vaadin-themes-7.1.7.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin.addon/vaadin-charts/jars/vaadin-charts-1.1.2.jar;C:/Users/Mobil/.ivy2/cache/com.google.code.gson/gson/jars/gson-2.2.jar;C:/Users/Mobil/.ivy2/cache/commons-io/commons-io/jars/commons-io-1.4.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-push/jars/vaadin-push-7.1.7.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin.external.atmosphere/atmosphere-runtime/bundles/atmosphere-runtime-1.0.14.vaadin4.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin.external.atmosphere/atmosphere-compat-jbossweb/bundles/atmosphere-compat-jbossweb-1.0.14.vaadin4.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin.external.atmosphere/atmosphere-compat-tomcat/bundles/atmosphere-compat-tomcat-1.0.14.vaadin4.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin.external.slf4j/vaadin-slf4j-jdk14/jars/vaadin-slf4j-jdk14-1.6.1.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin.external.atmosphere/atmosphere-compat-tomcat7/bundles/atmosphere-compat-tomcat7-1.0.14.vaadin4.jar;C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-client-compiled/jars/vaadin-client-compiled-7.1.7.jar;C:/Users/Mobil/.ivy2/cache/javax.servlet/javax.servlet-api/jars/javax.servlet-api-3.0.1.jar -Dgwt.persistentunitcachedir=C:\Users\Mobil\AppData\Local\Temp\widgetset_com.example.tester.widgetset.TesterWidgetsetcea33ecd-83d1-4e75-9199-a122c53ad3be com.vaadin.tools.WidgetsetCompiler -war WebContent/VAADIN/widgetsets -deploy C:\Users\Mobil\AppData\Local\Temp\widgetset_com.example.tester.widgetset.TesterWidgetsetcea33ecd-83d1-4e75-9199-a122c53ad3be -extra C:\Users\Mobil\AppData\Local\Temp\widgetset_com.example.tester.widgetset.TesterWidgetsetcea33ecd-83d1-4e75-9199-a122c53ad3be -localWorkers 8 -logLevel INFO com.example.tester.widgetset.TesterWidgetset
Updating GWT module description file...
Okt 16, 2013 7:40:04 PM com.vaadin.server.widgetsetutils.ClassPathExplorer getAvailableWidgetSetsAndStylesheets
Information: Widgetsets found from classpath:
    com.vaadin.DefaultWidgetSet in jar:file:C:/Users/Mobil/.ivy2/cache/com.vaadin/vaadin-client/jars/vaadin-client-7.1.7.jar!/
    com.example.tester.widgetset.TesterWidgetset in file://D/Development/eclipse JUNO/Workspace/Tester/src
    com.vaadin.addon.charts.Widgetset in jar:file:C:/Users/Mobil/.ivy2/cache/com.vaadin.addon/vaadin-charts/jars/vaadin-charts-1.1.2.jar!/
    com.vaadin.addon.timeline.gwt.TimelineWidgetSet in jar:file:C:/Users/Mobil/.ivy2/cache/com.vaadin.addon/vaadin-charts/jars/vaadin-charts-1.1.2.jar!/
Addon styles found from classpath:

Okt 16, 2013 7:40:05 PM com.vaadin.server.widgetsetutils.ClassPathExplorer getAvailableWidgetSetsAndStylesheets
Information: Search took 13ms
Done.
Starting GWT compiler
Okt 16, 2013 7:40:05 PM java.util.prefs.WindowsPreferences <init>
Warnung: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Compiling module com.example.tester.widgetset.TesterWidgetset
   Resolving com.google.gwt.validation.client.constraints.AbstractDecimalMaxValidator
      Found type 'com.google.gwt.validation.client.constraints.AbstractDecimalMaxValidator'
         Found type 'javax.validation.constraints.DecimalMax'
            [WARN]
 Detected warnings related to 'javax.validation.Constraint'.   Is validation-<version>.jar on the classpath?
            Specify -logLevel DEBUG to see all errors.
            [WARN]
 Ignoring unresolvable annotation type javax.validation.Constraint
   Computing all possible rebind results for 'com.vaadin.client.metadata.ConnectorBundleLoader'
      Rebinding com.vaadin.client.metadata.ConnectorBundleLoader
         Invoking generator com.vaadin.server.widgetsetutils.ConnectorBundleLoaderFactory
            Populating eager bundle
               Visiting ChartOptionsConnector with ConnectorInitVisitor
                  ChartOptionsConnector will be in the eager bundle
               Will serialize class com.vaadin.addon.charts.client.ui.ChartOptionsState as a bean
               Will serialize class com.vaadin.shared.communication.URLReference using URLReference_Serializer
               Visiting VerticalLayoutConnector with ConnectorInitVisitor
                  VerticalLayoutConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.orderedlayout.VerticalLayoutState as a bean
               Will serialize class java.util.HashMap<com.vaadin.shared.Connector, com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutState.ChildComponentData> as a bean
               Will serialize class com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutState.ChildComponentData as a bean
               Visiting TableConnector with ConnectorInitVisitor
                  TableConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.table.TableState as a bean
               Visiting UIConnector with ConnectorInitVisitor
                  UIConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.ui.UIState as a bean
               Will serialize class com.vaadin.shared.ui.ui.UIState.LoadingIndicatorConfigurationState as a bean
               Will serialize class com.vaadin.shared.ui.ui.UIState.TooltipConfigurationState as a bean
               Will serialize class com.vaadin.shared.ui.ui.UIState.LocaleServiceState as a bean
               Will serialize class com.vaadin.shared.ui.ui.UIState.PushConfigurationState as a bean
               Will serialize class com.vaadin.shared.communication.PushMode as an enum
               Will serialize class com.vaadin.shared.ui.ui.UIState.LocaleData as a bean
               Will serialize java.lang.String[] as an array
               Will serialize class com.vaadin.shared.ui.ui.PageState as a bean
               Visiting NativeSelectConnector with ConnectorInitVisitor
                  NativeSelectConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.AbstractFieldState as a bean
               Visiting CustomComponentConnector with ConnectorInitVisitor
                  CustomComponentConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.AbstractComponentState as a bean
               Visiting WindowConnector with ConnectorInitVisitor
                  WindowConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.window.WindowState as a bean
               Will serialize class com.vaadin.shared.ui.window.WindowMode as an enum
               Visiting PasswordFieldConnector with ConnectorInitVisitor
                  PasswordFieldConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.textfield.AbstractTextFieldState as a bean
               Visiting InlineDateFieldConnector with ConnectorInitVisitor
                  InlineDateFieldConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.datefield.InlineDateFieldState as a bean
               Will serialize class java.util.Date as a bean
               Visiting PanelConnector with ConnectorInitVisitor
                  PanelConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.panel.PanelState as a bean
               Visiting CustomFieldConnector with ConnectorInitVisitor
                  CustomFieldConnector will be in the eager bundle
               Visiting DragAndDropWrapperConnector with ConnectorInitVisitor
                  DragAndDropWrapperConnector will be in the eager bundle
               Visiting LinkConnector with ConnectorInitVisitor
                  LinkConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.link.LinkState as a bean
               Visiting BrowserWindowOpenerConnector with ConnectorInitVisitor
                  BrowserWindowOpenerConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.BrowserWindowOpenerState as a bean
               Visiting ImageConnector with ConnectorInitVisitor
                  ImageConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.image.ImageState as a bean
               Visiting LabelConnector with ConnectorInitVisitor
                  LabelConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.label.LabelState as a bean
               Will serialize class com.vaadin.shared.ui.label.ContentMode as an enum
               Visiting BrowserFrameConnector with ConnectorInitVisitor
                  BrowserFrameConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.browserframe.BrowserFrameState as a bean
               Visiting TabsheetConnector with ConnectorInitVisitor
                  TabsheetConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.tabsheet.TabsheetState as a bean
               Visiting TreeConnector with ConnectorInitVisitor
                  TreeConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.tree.TreeState as a bean
               Visiting NativeButtonConnector with ConnectorInitVisitor
                  NativeButtonConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.button.NativeButtonState as a bean
               Visiting PopupDateFieldConnector with ConnectorInitVisitor
                  PopupDateFieldConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.datefield.PopupDateFieldState as a bean
               Visiting EmbeddedConnector with ConnectorInitVisitor
                  EmbeddedConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.embedded.EmbeddedState as a bean
               Visiting FlashConnector with ConnectorInitVisitor
                  FlashConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.flash.FlashState as a bean
               Visiting AudioConnector with ConnectorInitVisitor
                  AudioConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.AbstractMediaState as a bean
               Visiting CssLayoutConnector with ConnectorInitVisitor
                  CssLayoutConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.csslayout.CssLayoutState as a bean
               Visiting VideoConnector with ConnectorInitVisitor
                  VideoConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.video.VideoState as a bean
               Visiting CustomLayoutConnector with ConnectorInitVisitor
                  CustomLayoutConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.customlayout.CustomLayoutState as a bean
               Visiting AbsoluteLayoutConnector with ConnectorInitVisitor
                  AbsoluteLayoutConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.absolutelayout.AbsoluteLayoutState as a bean
               Visiting HorizontalLayoutConnector with ConnectorInitVisitor
                  HorizontalLayoutConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.orderedlayout.HorizontalLayoutState as a bean
               Visiting TextFieldConnector with ConnectorInitVisitor
                  TextFieldConnector will be in the eager bundle
               Visiting ListSelectConnector with ConnectorInitVisitor
                  ListSelectConnector will be in the eager bundle
               Visiting FileDownloaderConnector with ConnectorInitVisitor
                  FileDownloaderConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.communication.SharedState as a bean
               Visiting ButtonConnector with ConnectorInitVisitor
                  ButtonConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.button.ButtonState as a bean
               Visiting GridLayoutConnector with ConnectorInitVisitor
                  GridLayoutConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.gridlayout.GridLayoutState as a bean
               Will serialize class com.vaadin.shared.ui.gridlayout.GridLayoutState.ChildComponentData as a bean
               Visiting TwinColSelectConnector with ConnectorInitVisitor
                  TwinColSelectConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.twincolselect.TwinColSelectState as a bean
               Visiting TimelineConnector with ConnectorInitVisitor
                  TimelineConnector will be in the eager bundle
               Visiting FormConnector with ConnectorInitVisitor
                  FormConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.form.FormState as a bean
               Visiting JavaScriptExtension with ConnectorInitVisitor
                  JavaScriptExtension will be in the eager bundle
               Will serialize class com.vaadin.shared.JavaScriptExtensionState as a bean
               Visiting TextAreaConnector with ConnectorInitVisitor
                  TextAreaConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.textarea.TextAreaState as a bean
               Visiting ProgressBarConnector with ConnectorInitVisitor
                  ProgressBarConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.progressindicator.ProgressBarState as a bean
               Visiting UploadConnector with ConnectorInitVisitor
                  UploadConnector will be in the eager bundle
               Visiting FormLayoutConnector with ConnectorInitVisitor
                  FormLayoutConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutState as a bean
               Visiting JavaScriptManagerConnector with ConnectorInitVisitor
                  JavaScriptManagerConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.extension.javascriptmanager.JavaScriptManagerState as a bean
               Visiting ProgressIndicatorConnector with ConnectorInitVisitor
                  ProgressIndicatorConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.progressindicator.ProgressIndicatorState as a bean
               Visiting SliderConnector with ConnectorInitVisitor
                  SliderConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.slider.SliderState as a bean
               Will serialize class com.vaadin.shared.ui.slider.SliderOrientation as an enum
               Visiting ComboBoxConnector with ConnectorInitVisitor
                  ComboBoxConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.combobox.ComboBoxState as a bean
               Visiting CheckBoxConnector with ConnectorInitVisitor
                  CheckBoxConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.checkbox.CheckBoxState as a bean
               Visiting AccordionConnector with ConnectorInitVisitor
                  AccordionConnector will be in the eager bundle
               Visiting VerticalSplitPanelConnector with ConnectorInitVisitor
                  VerticalSplitPanelConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.splitpanel.VerticalSplitPanelState as a bean
               Will serialize class com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState.SplitterState as a bean
               Visiting JavaScriptComponentConnector with ConnectorInitVisitor
                  JavaScriptComponentConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.JavaScriptComponentState as a bean
               Visiting OptionGroupConnector with ConnectorInitVisitor
                  OptionGroupConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.optiongroup.OptionGroupState as a bean
               Visiting PopupViewConnector with ConnectorInitVisitor
                  PopupViewConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.popupview.PopupViewState as a bean
               Visiting ChartConnector with ConnectorInitVisitor
                  ChartConnector will be in the eager bundle
               Will serialize class com.vaadin.addon.charts.client.ui.ChartState as a bean
               Visiting TreeTableConnector with ConnectorInitVisitor
                  TreeTableConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.treetable.TreeTableState as a bean
               Visiting MenuBarConnector with ConnectorInitVisitor
                  MenuBarConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.menubar.MenuBarState as a bean
               Visiting HorizontalSplitPanelConnector with ConnectorInitVisitor
                  HorizontalSplitPanelConnector will be in the eager bundle
               Will serialize class com.vaadin.shared.ui.splitpanel.HorizontalSplitPanelState as a bean
               Will serialize class com.vaadin.shared.MouseEventDetails as a bean
               Will serialize class com.vaadin.shared.MouseEventDetails.MouseButton as an enum
            Populating CalendarConnector bundle
               Visiting CalendarConnector with ConnectorInitVisitor
                  CalendarConnector will be in the CalendarConnector bundle
               Will serialize class com.vaadin.shared.ui.calendar.CalendarState as a bean
               Will serialize class com.vaadin.shared.ui.calendar.CalendarState.Day as a bean
               Will serialize class com.vaadin.shared.ui.calendar.CalendarState.Action as a bean
               Will serialize class com.vaadin.shared.ui.calendar.CalendarState.Event as a bean
            Populating RichTextAreaConnector bundle
               Visiting RichTextAreaConnector with ConnectorInitVisitor
                  RichTextAreaConnector will be in the RichTextAreaConnector bundle
            Populating ColorPickerGradientConnector bundle
               Visiting ColorPickerGradientConnector with ConnectorInitVisitor
                  ColorPickerGradientConnector will be in the ColorPickerGradientConnector bundle
               Will serialize class com.vaadin.shared.ui.colorpicker.ColorPickerGradientState as a bean
            Populating ColorPickerAreaConnector bundle
               Visiting ColorPickerAreaConnector with ConnectorInitVisitor
                  ColorPickerAreaConnector will be in the ColorPickerAreaConnector bundle
               Will serialize class com.vaadin.shared.ui.colorpicker.ColorPickerState as a bean
            Populating ColorPickerConnector bundle
               Visiting ColorPickerConnector with ConnectorInitVisitor
                  ColorPickerConnector will be in the ColorPickerConnector bundle
               Will serialize class com.vaadin.shared.ui.colorpicker.ColorPickerState as a bean
            Populating ColorPickerGridConnector bundle
               Visiting ColorPickerGridConnector with ConnectorInitVisitor
                  ColorPickerGridConnector will be in the ColorPickerGridConnector bundle
               Will serialize class com.vaadin.shared.ui.colorpicker.ColorPickerGridState as a bean
   Computing all possible rebind results for 'com.vaadin.client.ui.dd.VAcceptCriterionFactory'
      Rebinding com.vaadin.client.ui.dd.VAcceptCriterionFactory
         Invoking generator com.vaadin.server.widgetsetutils.AcceptCriteriaFactoryGenerator
            Detecting available criteria ...
            creating mapping for com.vaadin.ui.Tree.TargetInSubtree
            creating mapping for com.vaadin.event.dd.acceptcriteria.Not
            creating mapping for com.vaadin.ui.Table.TableDropCriterion
            creating mapping for com.vaadin.event.dd.acceptcriteria.SourceIsTarget
            creating mapping for com.vaadin.event.dd.acceptcriteria.ContainsDataFlavor
            creating mapping for com.vaadin.event.dd.acceptcriteria.ServerSideCriterion
            creating mapping for com.vaadin.ui.AbstractSelect.TargetItemIs
            creating mapping for com.vaadin.ui.Tree.TreeDropCriterion
            creating mapping for com.vaadin.event.dd.acceptcriteria.SourceIs
            creating mapping for com.vaadin.ui.AbstractSelect.AcceptItem
            creating mapping for com.vaadin.event.dd.acceptcriteria.Or
            creating mapping for com.vaadin.event.dd.acceptcriteria.TargetDetailIs
            creating mapping for com.vaadin.event.dd.acceptcriteria.AcceptAll
            creating mapping for com.vaadin.event.dd.acceptcriteria.And
            Done. (0seconds)
   Computing all possible rebind results for 'com.vaadin.addon.timeline.gwt.canvas.client.impl.CanvasImpl'
      Rebinding com.vaadin.addon.timeline.gwt.canvas.client.impl.CanvasImpl
         Could not find an exact match rule. Using 'closest' rule <replace-with class='com.vaadin.addon.timeline.gwt.canvas.client.impl.ie.CanvasImplIE8'/> based on fall back values. You may need to implement a specific binding in case the fall back behavior does not replace the missing binding
   Compiling 6 permutations
      Compiling permutation 1...
      Process output
         Compiling
            Compiling permutation 4...
      Process output
         Compiling
            Compiling permutation 5...
      Process output
         Compiling
            Compiling permutation 0...
      Process output
         Compiling
            Compiling permutation 2...
      Process output
         Compiling
            Compiling permutation 3...
   Compile of permutations succeeded
Linking into D:\Development\eclipse JUNO\Workspace\Tester\WebContent\VAADIN\widgetsets\com.example.tester.widgetset.TesterWidgetset; Writing extras to C:\Users\Mobil\AppData\Local\Temp\widgetset_com.example.tester.widgetset.TesterWidgetsetcea33ecd-83d1-4e75-9199-a122c53ad3be\com.example.tester.widgetset.TesterWidgetset
   Link succeeded
   Compilation succeeded -- 129,856s

com.example.tester.widgetset in web.xml should be
com.example.tester.widgetset.TesterWidgetset.

Vaadin won’t find the first one (since it doesn’t exist), and will use the default.

Hey Thomas, thanks for the reply.

I’ve changed the value and recompiled the widgetset, but without success. (“widgetset does not contain…”)

For the sake of completeness:

TesterUI.java


package com.example.tester;

import javax.servlet.annotation.WebServlet;

import com.vaadin.addon.charts.Chart;
import com.vaadin.addon.charts.model.ChartType;
import com.vaadin.addon.charts.model.Configuration;
import com.vaadin.addon.charts.model.Cursor;
import com.vaadin.addon.charts.model.DataSeries;
import com.vaadin.addon.charts.model.DataSeriesItem;
import com.vaadin.addon.charts.model.Labels;
import com.vaadin.addon.charts.model.PlotOptionsPie;
import com.vaadin.addon.charts.model.style.SolidColor;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;

@SuppressWarnings("serial")
@Theme("tester")
public class TesterUI extends UI {

	@WebServlet(value = "/*", asyncSupported = true)
	@VaadinServletConfiguration(productionMode = false, ui = TesterUI.class)
	public static class Servlet extends VaadinServlet {
	}

	@Override
	protected void init(VaadinRequest request) {
		final VerticalLayout layout = new VerticalLayout();
		layout.setMargin(true);
		setContent(layout);

		Button button = new Button("Click Me");
		button.addClickListener(new Button.ClickListener() {
			public void buttonClick(ClickEvent event) {
				layout.addComponent(new Label("Thank you for clicking"));
			}
		});
		layout.addComponent(button);
		
        Chart chart = new Chart(ChartType.PIE);

        Configuration conf = chart.getConfiguration();

        conf.setTitle("Anfrage 1");

        PlotOptionsPie plotOptions = new PlotOptionsPie();
        plotOptions.setCursor(Cursor.POINTER);
        Labels dataLabels = new Labels();
        dataLabels.setEnabled(true);
        dataLabels.setColor(new SolidColor(0, 0, 0));
        dataLabels.setConnectorColor(new SolidColor(0, 0, 0));
        dataLabels
                .setFormatter("''+ this.point.name +': '+ this.percentage +' %'");
        plotOptions.setDataLabels(dataLabels);
        conf.setPlotOptions(plotOptions);

        DataSeries series = new DataSeries();
        
        
        series.add(new DataSeriesItem("Firefox", 45.0));
        series.add(new DataSeriesItem("IE", 26.8));
        DataSeriesItem chrome = new DataSeriesItem("Chrome", 12.8);
        chrome.setSliced(true);
        chrome.setSelected(true);
        series.add(chrome);
        series.add(new DataSeriesItem("Safari", 8.5));
        series.add(new DataSeriesItem("Opera", 6.2));
        series.add(new DataSeriesItem("Others", 0.7));
        conf.setSeries(series);
        

        chart.drawChart(conf);
        
        layout.addComponent(chart);
	}

}

Add “widgetset=com.example.MyWidgetSet” (without the .gwt.xml suffix) to your @VaadinServletConfiguration.

It finally works, thanks Henri!

solution:

@VaadinServletConfiguration(productionMode = false, ui = TesterUI.class, widgetset="com.example.tester.widgetset.TesterWidgetset")

Thanks Henri, I was having the same issue and this fixed it.

After looking around a bit, it appears that the @VaadinServletConfiguration annotation is a way to define your servlet configuration inside the application code (convenient!). What’s
not
clear about it is that having the annotation seems to mean that your servlet configuration in the web.xml file is ignored. In my opinion, this needs to be made clear to the developer. I spent more time than I’d like to admit looking around for this solution because I had no idea that the @VaadinServletConfiguration annotation existed, much less what it did. Which brings up the question, if I didn’t know it existed how did I encounter this problem? It’s because the eclipse plugin’s UI template automatically adds it to your UI class.

Anyways, another solution is simply to comment the annotation out of your UI class so that the servlet configuration is read from your web.xml file, assuming you’re using one.

Also, perhaps worth noting is that Thomas Mattsson was correct in saying that the web.xml file was incorrect, but it didn’t fix the issue because, as stated above, once you add the @VaadinServletConfiguration to your UI class (or eclipse adds it for you…) the servlet configuration from web.xml is ignored.

I’m using this chart add-on. I wanted to use just the charts jar file. Not maven or ivy. Per instructions in the readme file I downloaded, here is what it says:

Using plain Jar

If you wan’t to use the add-on jar directly, add it to your classpath. The add-on
also depends on following Apache 2 licensed libraries:

  • gson
  • commons-io

Unless you are already using them in your project add them also. They are also
included in this zip package in the “lib” directory.


So based on this, I copied the gson, commons-io and charts jar file into my lib folder. I copied the chart example from the vaadin book into my code. I still get this error:

Widgetset ‘com.vaadin.DefaultWidgetSet’ does not contain implementation for com.vaadin.addon.charts.Chart. Check its component connector’s @Connect mapping, widgetsets GWT module description file and re-compile your widgetset. In case you have downloaded a vaadin add-on package…

So, do I still need to make these changes to my web.xml and ivy files? Based on the readme, it looks like I don’t need to. Please advise. This is the first time I’m using a vaadin add-on. Please help

Thanks,
Alex

Alex, I just got charts running after seeing the error listed in this post (that is how I got here myself).

Here is how these components all fit together (my understanding at least)

Ivy.xml changes:

This allows eclipse, for IDE-based development and compilation purposes, to access the resources needed (jars, etc).
That is what the statement “If you want to use the add-on jar directly, add it to your classpath” refers to, so it’s one or the other to get the resources in your environment.


Widgetset compilation

With the changes in your .widgetset.xml in place, the compilation creates the client-side components necessary for the browser to display the charts. Which finally leads to …


Init parameter

Either in web.xml, or directly in annotations, you have to point to your widgetset, otherwise the application cannot find the components you have worked so hard to create and/or use.


If the charts are your first use of a widgetset, you may miss this important point.

I believe the documentation missed an important step in describing the init-param needed in web.xml because all the developers/documentation experts at Vaadin have been using different widgetsets for so long they forgot it was there. You really only have to do this step once, the first time you incorporate a custom widgetset of any kind into your code.

When you first start using Vaadin Charts (and don’t add the init parameter in the proper place), you get a result that helpfully points you to instructions for compiling widgetsets, etc. Those instructions do not mention the initialization parameter (only needed if this is your first use of custom widgetsets, but still…)

–PK

I’m new to vaadin and I think I’m doing something wrong cause I can’t get an add-on with client functionality to work, in my case the LoginForm add-on.

I’m getting the error "
Widgetset ‘com.vaadin.DefaultWidgetSet’ does not contain implementation for com.test.TestUi.SimpleLoginForm. Check its component connector’s @Connect 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
"

I think I’m doing what it says I’m supposed to do:

1- Copy the jar into WEB-INF/lib

I’m using Maven so I’ve got the reference to the library

2- Compile the widge set

Maven compiles it too adding the line to the widge set config file in my application.

<module>
   ...
    <inherits name="com.ejt.vaadin.loginform.WidgetSet" />
</module>

I’ve done it manually in Eclipse too clicking the
Compile Widgeset
botton the and it succeeded too

In my web.xml I have added the reference to the widge set config file
com/test/AppWidgetSet.gwt.xml

<init-param>
   <param-name>widgetset</param-name>
   <param-value>com.test.AppWidgetSet</param-value>
</init-param>

What could I be doing wrong?

Hi Keps
I had your same problem and I solved with the solution provided by Henri (adding widgetset property to @VaadinServletConfiguration in your UI class)

@VaadinServletConfiguration(productionMode = false, ui = TesterUI.class, widgetset="com.example.tester.widgetset.TesterWidgetset")

No need for me to use/alter the web.xml

Ciao
Paolo

Thanks a lot Paolo,

Your answer helped me to spot the problem. I didn’t use annotations in my UI class because I was using the web.xml file to declare the servlet. When I used annotations as you indicated it worked, so looking at my web.xml file I realised that I have declared the widgeset outside the servlet tag (silly me) when I should have done like that:

    <servlet>
        <servlet-name>Vaadin Test</servlet-name>
        <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
        <init-param>
            <description>Vaadin UI class to use</description>
            <param-name>UI</param-name>
            <param-value>com.test.TesterUI</param-value>
        </init-param>
        <init-param>
            <param-name>widgetset</param-name>
            <param-value>com.example.tester.widgetset.TesterWidgetset</param-value>
        </init-param>
    </servlet>

Thansk,
Keps

Hello,
The same problem appears in my Vaadin CDI project (vaadin 7.3.8, weld servlet 2.2.8, tomcat 8) .When I try to define a widgetset using either @VaadinServletConfiguration

@VaadinServletConfiguration(productionMode = false, ui = MyUI.class, widgetset="com.myapp.AppWidgetSet") public static class MyServlet extends VaadinCDIServlet { } or web.xml

<servlet> <servlet-name>myapp</servlet-name> <servlet-class>com.vaadin.cdi.server.VaadinCDIServlet</servlet-class> <init-param> <param-name>widgetset</param-name> <param-value>com.myapp.AppWidgetSet</param-value> </init-param> </servlet> I get the following error:

org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.enterprise.context.SessionScope When I remove the servlet everything works fine, except "widgetset does not contain … " on some addons.

Any ideas?

Problem solved by adding

<Parameter name="widgetset" value="com.myapp.AppWidgetSet" override="false"/> into context.xml

OK,

But, where is context.xml in project Vaadin ?

Thank you .

Thanks, solved my issue as well :slight_smile:

I am trying to deploy an application and it keeps complaining about missing widgetset. Works fine from eclipse but when I call webserver with 10.0.0.5 complains about missing widgetset.
I also have problems using both touchkit and leaflet even using loclahost. I followed all the advice on forum and am at a loss
I have annotations and web.xml file

[size=2]
[font=verdana]
I get the following WARN
WARNING:

The widgetset in use does not seem to be built for the Vaadin
version in use. This might cause strange problems - a
recompile/deploy is strongly recommended.
Vaadin version: 7.5.1
Widgetset version: 7.4.6

On 10.0.0.5 I get the following warning and doesn’t work

TodServlet
@WebServlet(value = “/*”, asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = TodadvisorUI.class, widgetset =“il.ac.haifa.is.todavisor.widgetset.TodadvisorWidgetset”)
public class TodServlet extends TouchKitServlet {

TodUI
@Widgetset(“il.ac.haifa.is.todavisor.widgetset.TodadvisorWidgetset”)
//@Widgetset(“com.vaadin.addon.touchkit.gwt.TouchKitWidgetSet”)
//@Widgetset(“org.vaadin.addon.leaflet.Widgetset”)
// @PreserveOnRefresh
// @CacheManifestEnabled
@Title(“ToD Advisor”)
@Theme(“todadvisor”)
public class TodadvisorUI extends UI {

gwt.xml

<?xml version="1.0" encoding="UTF-8"?>
<inherits name="com.vaadin.addon.touchkit.gwt.TouchKitWidgetSet" />

<inherits name="org.vaadin.addon.leaflet.Widgetset" />

web.xml

<?xml version="1.0" encoding="UTF-8"?> ToDAdvisor index.html index.htm index.jsp default.html default.htm default.jsp TodAdvisor UI Servlet il.ac.haifa.is.todadvisor.ui.TodServlet Vaadin UI class to start UI il.ac.haifa.is.todadvisor.TodadvisorUI widgetset il.ac.haifa.is.todavisor.widgetset.TodadvisorWidgetset manifest text/cache-manifest [/font] [/size]

For the lealet Problem Isee this instead of the widget

MapWidgetset ‘com.vaadin.addon.touchkit.gwt.TouchKitWidgetSet’ does not contain implementation for org.vaadin.addon.leaflet.LMap. Check its component connector’s @Connect 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.

I defined a number of clientside widgets (they need no servside connection, but haven’t marked them in anyway other than they inheirit from touchkit widgets. Is there something else I need to do?

Problem partially solved by not using my own custom widgetset.
I just set widgetset to the com.vaadin.addon.touchkit.gwt.TouchKitWidgetSet

However can’t use leaflet and still getting warning

After 3 days discovered the problem.
A spelling mistake in name of Widgetset :frowning: