Vojtech Szocs has uploaded a new change for review.

Change subject: webadmin: WiP debug using GWT Super Dev Mode
......................................................................

webadmin: WiP debug using GWT Super Dev Mode

Work in progress, needs more testing.

This patch adds the ability to debug WebAdmin using GWT
Super Dev Mode (later on, it can be generalized to cover
UserPortal as well).

Super Dev Mode (SDM) [1] is an alternative way to debug
GWT applications. Similar to Classic Dev Mode (CDM) [2],
it spawns a "code" server used to recompile application
after UI code change.

However, there are notable differences:

* unlike CDM, SDM doesn't require browser plugin,
  i.e. no need to install "GWT Developer Plugin"

* with SDM, you debug code as JavaScript inside your
  browser, i.e. Java IDE is not needed to debug UI code

* SDM leverages emerging standard known as Source Maps
  to map JavaScript code to corresponding Java code

* unlike CDM, SDM doesn't have on-the-fly recompilation
  so the user can control when to recompile application

To use Super Dev Mode:

1, build Engine
   $ make install-dev [usual options] \
       DEV_GWT_SUPER_DEV_MODE=1

2, setup & start Engine

3, launch SDM's "code" server:
   $ make gwt-debug [usual options] \
       DEV_GWT_SUPER_DEV_MODE=1

4, visit http://127.0.0.1:9876/ and save
   "Dev Mode On/Off" bookmarklets in browser

5, visit WebAdmin URL *without* "?gwt.codesvr" part,
   debug JavaScript code in browser

6, after UI code change, click "Dev Mode On"
   and activate "Compile", check SDM's "code" server

7, reload WebAdmin URL *without* "?gwt.codesvr" part,
   debug JavaScript code in browser

[1] http://www.gwtproject.org/articles/superdevmode.html
[2] http://www.gwtproject.org/doc/latest/
      DevGuideCompilingAndDebugging.html#DevGuideDevMode

Change-Id: I6e03534e8af4f9c61d93bb715b80b433127cc4e9
Signed-off-by: Vojtech Szocs <[email protected]>
---
M Makefile
M frontend/webadmin/modules/webadmin/pom.xml
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
3 files changed, 34 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/26093/1

diff --git a/Makefile b/Makefile
index a97a6f0..e3d0636 100644
--- a/Makefile
+++ b/Makefile
@@ -37,6 +37,7 @@
 DEV_BUILD_GWT_DRAFT=0
 DEV_EXTRA_BUILD_FLAGS=
 DEV_EXTRA_BUILD_FLAGS_GWT_DEFAULTS=-D gwt.userAgent=gecko1_8
+DEV_GWT_SUPER_DEV_MODE=0
 
 PACKAGE_NAME=ovirt-engine
 ENGINE_NAME=$(PACKAGE_NAME)
@@ -89,6 +90,12 @@
 endif
 DEV_BUILD_FLAGS:=$(DEV_BUILD_FLAGS) $(DEV_EXTRA_BUILD_FLAGS_GWT_DEFAULTS)
 DEV_BUILD_FLAGS:=$(DEV_BUILD_FLAGS) $(DEV_EXTRA_BUILD_FLAGS)
+
+DEV_GWT_DEBUG_TARGET:=gwt:debug
+ifneq ($(DEV_GWT_SUPER_DEV_MODE),0)
+DEV_BUILD_FLAGS:=$(DEV_BUILD_FLAGS) -Dgwt.devModeEnabled=true
+DEV_GWT_DEBUG_TARGET:=process-classes gwt:run-codeserver
+endif
 
 BUILD_FLAGS:=
 ifneq ($(BUILD_GWT),0)
@@ -421,7 +428,7 @@
                        $(DEV_EXTRA_BUILD_FLAGS) \
                        -Dgwt.noserver=true \
                        -Pgwtdev,gwt-admin,gwt-user \
-                       gwt:debug
+                       $(DEV_GWT_DEBUG_TARGET)
 
 all-dev:
        [ "$(DEV_REBUILD)" != 0 ] && rm -f "$(BUILD_FILE)" || :
diff --git a/frontend/webadmin/modules/webadmin/pom.xml 
b/frontend/webadmin/modules/webadmin/pom.xml
index e2bc1cb..29d2893 100644
--- a/frontend/webadmin/modules/webadmin/pom.xml
+++ b/frontend/webadmin/modules/webadmin/pom.xml
@@ -130,6 +130,9 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
+  <properties>
+    <gwt.devModeEnabled>false</gwt.devModeEnabled>
+  </properties>
   <build>
     
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes
         </outputDirectory>
@@ -239,13 +242,25 @@
     </profile>
     <profile>
       <id>gwtdev</id>
+      <properties>
+        <gwt.devModeEnabled>true</gwt.devModeEnabled>
+      </properties>
       <build>
         <pluginManagement>
           <plugins>
             <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>gwt-maven-plugin</artifactId>
-              <version>${gwt-maven-plugin.workingRefresh.version}</version>
+              <dependencies>
+                <dependency>
+                  <groupId>com.google.gwt</groupId>
+                  <artifactId>gwt-codeserver</artifactId>
+                  <version>${gwt.version}</version>
+                </dependency>
+              </dependencies>
+              <configuration>
+                <codeServerPort>9876</codeServerPort>
+              </configuration>
             </plugin>
           </plugins>
         </pluginManagement>
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
index f3b7664..76696e8 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/webadmin/WebAdmin.gwt.xml
@@ -39,4 +39,14 @@
     <set-property name="locale" value="${gwt.locale}" />
     <set-property-fallback name="locale" value="en_US" />
 
+    <!-- Use xsiframe linker that combines cross-site friendliness of xs linker
+         with iframe sandboxing of std linker. Note that xsiframe linker is the
+         only linker that currently supports GWT Super Dev Mode. It also seems
+         that xsiframe linker will be the default linker in GWT > 2.6 release. 
-->
+    <add-linker name="xsiframe"/>
+
+    <!-- GWT Super Dev Mode settings -->
+    <set-configuration-property name="devModeRedirectEnabled" 
value="${gwt.devModeEnabled}"/>
+    <set-property name="compiler.useSourceMaps" value="${gwt.devModeEnabled}" 
/>
+
 </module>


-- 
To view, visit http://gerrit.ovirt.org/26093
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6e03534e8af4f9c61d93bb715b80b433127cc4e9
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Vojtech Szocs <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to