diff options
author | Marc Englund <marc.englund@itmill.com> | 2009-01-27 06:52:20 +0000 |
---|---|---|
committer | Marc Englund <marc.englund@itmill.com> | 2009-01-27 06:52:20 +0000 |
commit | 2dacdf719699ee7c8d9030b10d89ef36d7ec813b (patch) | |
tree | bd611cb99d18cc181815c638c85a1d7313189be4 /src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java | |
parent | d1fc2160281f8cc8616e7a7f12c4eb52ddfa5e58 (diff) | |
download | vaadin-framework-2dacdf719699ee7c8d9030b10d89ef36d7ec813b.tar.gz vaadin-framework-2dacdf719699ee7c8d9030b10d89ef36d7ec813b.zip |
Remove need for "NoEntry" widgetset definitions, fail if multiple widgetsets get initialized. For #2494
svn changeset:6639/svn branch:trunk
Diffstat (limited to 'src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java')
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java index 919ab0807c..06dee4db43 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java @@ -4,10 +4,14 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.JavaScriptObject; public class ApplicationConfiguration { + // can only be inited once, to avoid multiple-entrypoint-problem + private static WidgetSet initedWidgetSet; + private String id; private String themeUri; private String pathInfo; @@ -105,6 +109,28 @@ public class ApplicationConfiguration { * the widgetset that is running the apps */ public static void initConfigurations(WidgetSet widgetset) { + String wsname = widgetset.getClass().getName(); + String module = GWT.getModuleName(); + int lastdot = module.lastIndexOf("."); + String base = module.substring(0, lastdot); + String simpleName = module.substring(lastdot + 1); + if (!wsname.startsWith(base) || !wsname.endsWith(simpleName)) { + // WidgetSet module name does not match implementation name; + // probably inherited WidgetSet with entry-point. Skip. + GWT.log("Ignored init for " + wsname + " when starting " + module, + null); + return; + } + + if (initedWidgetSet != null) { + // Something went wrong: multiple widgetsets inited + String msg = "Tried to init " + widgetset.getClass().getName() + + ", but " + initedWidgetSet.getClass().getName() + + " is already inited."; + System.err.println(msg); + throw new IllegalStateException(msg); + } + initedWidgetSet = widgetset; ArrayList appIds = new ArrayList(); loadAppIdListFromDOM(appIds); |