I guess the title says it all:
Is there some kind of flag that allows my GWT app to check whether it is currently running in Super Dev Mode (something along the lines of GWT.isProdMode(), maybe)?
I guess the title says it all:
Is there some kind of flag that allows my GWT app to check whether it is currently running in Super Dev Mode (something along the lines of GWT.isProdMode(), maybe)?
On
Maybe there is an "official" way, but this should work:
Storage stockStore = Storage.getSessionStorageIfSupported();
if (stockStore != null)
{
boolean isSuperDevMode = stockStore.getItem("__gwtDevModeHook:" + GWT.getModuleName()) != null);
}
On
You could use GWTHelper.isSuperDevMode() method implemented below.
public final class GWTHelper {
public static boolean isSuperDevMode() {
final Storage storage = Storage.getSessionStorageIfSupported();
if (storage == null) {
return false;
}
final String devModeKey = "__gwtDevModeHook:" + GWT.getModuleName();
return storage.getItem(devModeKey) != null;
}
}
On
To check for dev app server: GWT.getHostPageBaseURL() returns http://127.0.0.1:8888/
Server side: request.getRemoteHost() should return the same (though I haven't tested this).
To check for Super Dev Mode (vs dev app server without SDM): If GWT.getModuleBaseURL() & GWT.getModuleBaseForStaticFiles() differ, you're in Super Dev Mode.
property name="superdevmode" solution didn't work for me.
On
I used following method:
private static native boolean isSuperDevMode()/*-{
return typeof $wnd.__gwt_sdm !== 'undefined';
}-*/;
Works in GWT 2.7.0.
On
May I suggest:
public boolean isSuperDevMode()
{
return Window.Location.getPort().equals("8888");
}
On
As it was already mentioned, there is a superdevmode property that you can use.
Here is a real-life example:
Create a class containing a method that tells that we are not in SuperDevMode:
public class SuperDevModeIndicator {
public boolean isSuperDevMode() {
return false;
}
}
Extend previous class and override a method to tell that we are in SuperDevMode:
public class SuperDevModeIndicatorTrue extends SuperDevModeIndicator {
@Override
public boolean isSuperDevMode() {
return true;
}
}
Use only one, appropriate class depending on a superdevmode property - use deferred binding - put this in your *.gwt.xml:
<!-- deferred binding for Super Dev Mode indicator -->
<replace-with class="com.adam.project.client.SuperDevModeIndicatorTrue">
<when-type-is class="com.adam.project.client.SuperDevModeIndicator"/>
<when-property-is name="superdevmode" value="on" />
</replace-with>
Instantiate SuperDevModeIndicator class via deferred binding:
SuperDevModeIndicator superDevModeIndicator = GWT.create(SuperDevModeIndicator.class);
Use it to check whether you are in SuperDevMode or not:
superDevModeIndicator.isSuperDevMode();
Voila!
Here you will find documentation on Deferred binding.
There's an open issue about having a public accessor like
GWT.isProdMode().In the mean time, if you really need to know, there's a deferred binding property named
superdevmodethat you can use in your<replace-with>or<generate-with>rules.