]> source.dussan.org Git - vaadin-framework.git/commitdiff
Use widget set specified by init parameter (#20276)
authorArtur Signell <artur@vaadin.com>
Thu, 15 Sep 2016 07:43:27 +0000 (10:43 +0300)
committerArtur Signell <artur@vaadin.com>
Sun, 25 Sep 2016 12:30:41 +0000 (15:30 +0300)
1. If a UI has @Widgetset, use that
2. If a "widgetset" init parameter has been specified, use that
3. If there is an AppWidgetset, use that
4. Use DefaultWidgetSet

This changes the default value of the @VaadinServletConfiguration widgetset
parameter to "", to avoid always setting the "widgetset" init parameter when
@VaadinServletConfiguration is used.

Change-Id: I87f9aa294d31e62bb94b7e831dd7b25ca1ce483b

server/src/main/java/com/vaadin/annotations/VaadinServletConfiguration.java
server/src/main/java/com/vaadin/server/UIProvider.java
server/src/main/java/com/vaadin/server/VaadinServlet.java

index 4cc51815a0950806a5e64795e72a445e6c2f7917..5a5a9988c441a6a48a82144bfb8e789d77631351 100644 (file)
@@ -123,12 +123,15 @@ public @interface VaadinServletConfiguration {
 
     /**
      * The default widgetset to use for the servlet. The default value is
-     * <code>com.vaadin.DefaultWidgetSet</code>.
+     * <code>""</code>, which will cause
+     * <code>com.vaadin.DefaultWidgetSet</code> to be used unless overridden by
+     * an init parameter or unless an automatically generated
+     * <code>AppWidgetset</code> is used.
      *
      * @return the default widgetset name
      */
     @InitParameterName(VaadinServlet.PARAMETER_WIDGETSET)
-    public String widgetset() default VaadinServlet.DEFAULT_WIDGETSET;
+    public String widgetset() default "";
 
     /**
      * The legacy Property.toString() mode used. The default value is
index e0222933d3feae145547091a8ffb51ef60a74f87..d16507234d8d6c53353729cb8effb568690d1732 100644 (file)
@@ -178,15 +178,22 @@ public abstract class UIProvider implements Serializable {
             return new WidgetsetInfoImpl(uiWidgetset.value());
         }
 
+        // Second case: We might have an init parameter, use that
+        String initParameterWidgetSet = event.getService()
+                .getDeploymentConfiguration().getWidgetset(null);
+        if (initParameterWidgetSet != null) {
+            return new WidgetsetInfoImpl(initParameterWidgetSet);
+        }
+
         // Find the class AppWidgetset in the default package if one exists
         WidgetsetInfo info = getWidgetsetClassInfo();
 
-        // Second case: we have a generated class called APP_WIDGETSET_NAME
+        // Third case: we have a generated class called APP_WIDGETSET_NAME
         if (info != null) {
             return info;
         }
 
-        // third case: we have an AppWidgetset.gwt.xml file
+        // Fourth case: we have an AppWidgetset.gwt.xml file
         else {
             InputStream resource = event.getUIClass()
                     .getResourceAsStream("/" + APP_WIDGETSET_NAME + ".gwt.xml");
index b48063f9726a9c35d568cdc1a40e9bb26e24ec1e..8409507846fa04ef47fb3f627e8c394396e25db9 100644 (file)
@@ -268,6 +268,15 @@ public class VaadinServlet extends HttpServlet implements Constants {
                         stringValue = value.toString();
                     }
 
+                    if (VaadinServlet.PARAMETER_WIDGETSET.equals(name.value())
+                            && method.getDefaultValue().equals(stringValue)) {
+                        // Do not set the widgetset to anything so that the
+                        // framework can fallback to the default. Setting
+                        // anything to the init parameter will force that into
+                        // use and e.g. AppWidgetset will not be used even
+                        // though it is found.
+                        continue;
+                    }
                     initParameters.setProperty(name.value(), stringValue);
                 } catch (Exception e) {
                     // This should never happen