Unify debug launch configs and auto-detect browser
Use the same permutation selector applied by the server at runtime to automatically detect the browser making the request and build/refresh that UI permutation. Change-Id: I31603a80e23a8e4e2c46325be4dac808d8f98a5c
This commit is contained in:
parent
ab2319061d
commit
cda2121828
@ -37,7 +37,7 @@ Running the Daemon
|
||||
Duplicate the existing launch configuration:
|
||||
|
||||
* Run -> Debug Configurations ...
|
||||
* Java Application -> `buck_daemon_ui_*`
|
||||
* Java Application -> `gerrit_daemon`
|
||||
* Right click, Duplicate
|
||||
|
||||
* Modify the name to be unique.
|
||||
|
@ -90,6 +90,7 @@ java_library2(
|
||||
'//gerrit-cache-h2:cache-h2',
|
||||
'//gerrit-common:server',
|
||||
'//gerrit-extension-api:api',
|
||||
'//gerrit-gwtexpui:linker_server',
|
||||
'//gerrit-gwtexpui:server',
|
||||
'//gerrit-httpd:httpd',
|
||||
'//gerrit-lucene:lucene',
|
||||
|
@ -26,6 +26,7 @@ import com.google.gerrit.server.config.ConfigUtil;
|
||||
import com.google.gerrit.server.config.GerritServerConfig;
|
||||
import com.google.gerrit.server.config.SitePaths;
|
||||
import com.google.gerrit.server.util.TimeUtil;
|
||||
import com.google.gwtexpui.linker.server.UserAgentRule;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Singleton;
|
||||
@ -558,60 +559,53 @@ public class JettyServer {
|
||||
}
|
||||
dir = dir.getParentFile(); // pop classes
|
||||
|
||||
if ("buck-out".equals(dir.getName())) {
|
||||
final File dstwar = makeWarTempDir();
|
||||
String pkg = "gerrit-gwtui";
|
||||
String target = targetForBrowser(System.getProperty("gerrit.browser"));
|
||||
final File gen = new File(dir, "gen");
|
||||
String out = new File(new File(gen, pkg), target).getAbsolutePath();
|
||||
final File zip = new File(out + ".zip");
|
||||
final File root = dir.getParentFile();
|
||||
final String name = "//" + pkg + ":" + target;
|
||||
|
||||
File ui = new File(dstwar, "gerrit_ui");
|
||||
File p = new File(ui, "permutations");
|
||||
mkdir(ui);
|
||||
p.createNewFile();
|
||||
p.deleteOnExit();
|
||||
|
||||
app.addFilter(new FilterHolder(new Filter() {
|
||||
private long last;
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse res,
|
||||
FilterChain chain) throws IOException, ServletException {
|
||||
HttpServletRequest req = (HttpServletRequest) request;
|
||||
build(root, gen, name);
|
||||
if (last != zip.lastModified()) {
|
||||
last = zip.lastModified();
|
||||
unpack(zip, dstwar);
|
||||
}
|
||||
chain.doFilter(req, res);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig config) {
|
||||
}
|
||||
@Override
|
||||
public void destroy() {
|
||||
}
|
||||
}), "/", EnumSet.of(DispatcherType.REQUEST));
|
||||
return Resource.newResource(dstwar.toURI());
|
||||
} else if ("target".equals(dir.getName())) {
|
||||
return useMavenDeveloperBuild(dir);
|
||||
} else {
|
||||
if (!"buck-out".equals(dir.getName())) {
|
||||
throw new FileNotFoundException("Cannot find web root from " + u);
|
||||
}
|
||||
}
|
||||
|
||||
private static String targetForBrowser(String browser) {
|
||||
if (browser == null || browser.isEmpty()) {
|
||||
return "ui_dbg";
|
||||
} else if (browser.startsWith("ui_")) {
|
||||
return browser;
|
||||
} else {
|
||||
return "ui_" + browser;
|
||||
}
|
||||
final File gen = new File(dir, "gen");
|
||||
final File root = dir.getParentFile();
|
||||
final File dstwar = makeWarTempDir();
|
||||
File ui = new File(dstwar, "gerrit_ui");
|
||||
File p = new File(ui, "permutations");
|
||||
mkdir(ui);
|
||||
p.createNewFile();
|
||||
p.deleteOnExit();
|
||||
|
||||
app.addFilter(new FilterHolder(new Filter() {
|
||||
private final UserAgentRule rule = new UserAgentRule();
|
||||
private String lastTarget;
|
||||
private long lastTime;
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse res,
|
||||
FilterChain chain) throws IOException, ServletException {
|
||||
String pkg = "gerrit-gwtui";
|
||||
String target = "ui_" + rule.select((HttpServletRequest) request);
|
||||
File zip = new File(new File(gen, pkg), target + ".zip");
|
||||
|
||||
synchronized (this) {
|
||||
build(root, gen, "//" + pkg + ":" + target);
|
||||
|
||||
if (!target.equals(lastTarget) || lastTime != zip.lastModified()) {
|
||||
lastTarget = target;
|
||||
lastTime = zip.lastModified();
|
||||
unpack(zip, dstwar);
|
||||
}
|
||||
}
|
||||
|
||||
chain.doFilter(request, res);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig config) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
}
|
||||
}), "/", EnumSet.of(DispatcherType.REQUEST));
|
||||
return Resource.newResource(dstwar.toURI());
|
||||
}
|
||||
|
||||
private static void build(File root, File gen, String target)
|
||||
@ -664,25 +658,4 @@ public class JettyServer {
|
||||
}
|
||||
return properties;
|
||||
}
|
||||
|
||||
private Resource useMavenDeveloperBuild(File dir) throws IOException {
|
||||
dir = dir.getParentFile(); // pop target
|
||||
dir = dir.getParentFile(); // pop the module we are in
|
||||
|
||||
// Drop down into gerrit-gwtui to find the WAR assets we need.
|
||||
//
|
||||
dir = new File(new File(dir, "gerrit-gwtui"), "target");
|
||||
final File[] entries = dir.listFiles();
|
||||
if (entries == null) {
|
||||
throw new FileNotFoundException("No " + dir);
|
||||
}
|
||||
for (File e : entries) {
|
||||
if (e.isDirectory() /* must be a directory */
|
||||
&& e.getName().startsWith("gerrit-gwtui-")
|
||||
&& new File(e, "gerrit_ui/gerrit_ui.nocache.js").isFile()) {
|
||||
return Resource.newResource(e.toURI());
|
||||
}
|
||||
}
|
||||
throw new FileNotFoundException("No " + dir + "/gerrit-gwtui-*");
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/gerrit/gerrit-main/src/main/java/Main.java"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="Main"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="daemon --console-log --show-stack-trace -d ${resource_loc:/gerrit}/../test_site"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dgerrit.browser=ui_dbg"/>
|
||||
</launchConfiguration>
|
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/gerrit/gerrit-main/src/main/java/Main.java"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="Main"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="daemon --console-log --show-stack-trace -d ${resource_loc:/gerrit}/../test_site"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dgerrit.browser=ui_firefox"/>
|
||||
</launchConfiguration>
|
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/gerrit/gerrit-main/src/main/java/Main.java"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="Main"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="daemon --console-log --show-stack-trace -d ${resource_loc:/gerrit}/../test_site"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dgerrit.browser=ui_ie9"/>
|
||||
</launchConfiguration>
|
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/gerrit/gerrit-main/src/main/java/Main.java"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="Main"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="daemon --console-log --show-stack-trace -d ${resource_loc:/gerrit}/../test_site"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dgerrit.browser=ui_safari"/>
|
||||
</launchConfiguration>
|
@ -9,8 +9,8 @@
|
||||
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="Main"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="daemon --console-log --show-stack-trace -d ${resource_loc:/gerrit}/../test_site"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dgerrit.browser=ui_chrome"/>
|
||||
</launchConfiguration>
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/gerrit/buck-out/gen/lib/gwt/dev/gwt-dev-2.5.0.jar"/>
|
||||
<listEntry value="/gerrit/buck-out/gen/lib/gwt/dev/gwt-dev-2.5.1.jar"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
@ -9,6 +9,7 @@
|
||||
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-startupUrl / -war ${resource_loc:/gerrit}/buck-out/gen/gerrit-gwtui/ui_dbg__tmp/war -server com.google.gerrit.gwtdebug.GerritDebugLauncher com.google.gerrit.GerritGwtUI"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit"/>
|
Loading…
Reference in New Issue
Block a user