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)?
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;
}
}
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.
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
superdevmode
that you can use in your<replace-with>
or<generate-with>
rules.