aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java
diff options
context:
space:
mode:
authorMarc Englund <marc.englund@itmill.com>2009-01-27 06:52:20 +0000
committerMarc Englund <marc.englund@itmill.com>2009-01-27 06:52:20 +0000
commit2dacdf719699ee7c8d9030b10d89ef36d7ec813b (patch)
treebd611cb99d18cc181815c638c85a1d7313189be4 /src/com/itmill/toolkit/terminal/gwt/client/ApplicationConfiguration.java
parentd1fc2160281f8cc8616e7a7f12c4eb52ddfa5e58 (diff)
downloadvaadin-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.java26
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);