diff --git a/WORKSPACE b/WORKSPACE index d7499d8d5..96f63aa94 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -6,9 +6,9 @@ domain_registry_repositories() http_archive( name = "io_bazel_rules_closure", - sha256 = "7d75688c63ac09a55ca092a76c12f8d1e9ee8e7a890f3be6594a4e7d714f0e8a", - strip_prefix = "rules_closure-b8841276e73ca677c139802f1168aaad9791dec0", - url = "http://bazel-mirror.storage.googleapis.com/github.com/bazelbuild/rules_closure/archive/b8841276e73ca677c139802f1168aaad9791dec0.tar.gz", # 2016-10-02 + sha256 = "1e2e6f73c4bb219a37a667ecb637539d7d7839f99b4f97496e5ea5e16cc87431", + strip_prefix = "rules_closure-b2ff976c8585e2051153bd62fbef6ef176b41b42", + url = "http://bazel-mirror.storage.googleapis.com/github.com/bazelbuild/rules_closure/archive/b2ff976c8585e2051153bd62fbef6ef176b41b42.tar.gz", # 2016-11-29 ) load("@io_bazel_rules_closure//closure:defs.bzl", "closure_repositories") @@ -17,7 +17,10 @@ closure_repositories( omit_gson = True, omit_guava = True, omit_icu4j = True, + omit_jetty = True, + omit_jetty_util = True, omit_json = True, omit_jsr305 = True, omit_jsr330_inject = True, + omit_servlet_api = True, ) diff --git a/docs/install.md b/docs/install.md index 59b91c605..b6aa6d606 100644 --- a/docs/install.md +++ b/docs/install.md @@ -7,7 +7,7 @@ This document covers the steps necessary to download, build, and deploy Nomulus. You will need the following programs installed on your local machine: * A recent version of the [Java 7 JDK][java-jdk7]. -* [Bazel build system](http://bazel.io/) >= version 0.3.1. Make sure to +* [Bazel build system](http://bazel.io/) >= version 0.3.2. Make sure to download the JDK7-compatible version. * [Google App Engine SDK for Java][app-engine-sdk], and configure aliases to to the `gcloud` and `appcfg.sh` utilities (you'll use them a lot). diff --git a/java/google/registry/BUILD b/java/google/registry/BUILD index 4618ba5be..40aa7a1b2 100644 --- a/java/google/registry/BUILD +++ b/java/google/registry/BUILD @@ -23,7 +23,7 @@ zip_file( ], out = "mandatory_stuff.war", mappings = { - "external/appengine_api_sdk/jar": "WEB-INF/lib", + "appengine_api_sdk/jar": "WEB-INF/lib", }, visibility = ["//visibility:private"], ) @@ -59,9 +59,9 @@ zip_file( ], out = "registry_default.war", mappings = { - "java/google/registry/env/common/default": "", - "java/google/registry/env/production/default": "", - "java/google/registry/module/frontend": "WEB-INF/lib", + "domain_registry/java/google/registry/env/common/default": "", + "domain_registry/java/google/registry/env/production/default": "", + "domain_registry/java/google/registry/module/frontend": "WEB-INF/lib", }, deps = [ ":common_war", @@ -79,9 +79,9 @@ zip_file( ], out = "registry_backend.war", mappings = { - "java/google/registry/env/common/backend": "", - "java/google/registry/env/production/backend": "", - "java/google/registry/module/backend": "WEB-INF/lib", + "domain_registry/java/google/registry/env/common/backend": "", + "domain_registry/java/google/registry/env/production/backend": "", + "domain_registry/java/google/registry/module/backend": "WEB-INF/lib", }, deps = [ ":common_war", @@ -99,9 +99,9 @@ zip_file( ], out = "registry_tools.war", mappings = { - "java/google/registry/env/common/tools": "", - "java/google/registry/env/production/tools": "", - "java/google/registry/module/tools": "WEB-INF/lib", + "domain_registry/java/google/registry/env/common/tools": "", + "domain_registry/java/google/registry/env/production/tools": "", + "domain_registry/java/google/registry/module/tools": "WEB-INF/lib", }, deps = [ ":common_war", @@ -136,7 +136,7 @@ zip_file( "env/sandbox/default/WEB-INF/cron.xml", ], out = "registry_default_sandbox.war", - mappings = {"java/google/registry/env/sandbox/default": ""}, + mappings = {"domain_registry/java/google/registry/env/sandbox/default": ""}, deps = [":registry_default_war"], ) @@ -144,7 +144,7 @@ zip_file( name = "registry_backend_sandbox_war", srcs = ["env/sandbox/backend/WEB-INF/appengine-web.xml"], out = "registry_backend_sandbox.war", - mappings = {"java/google/registry/env/sandbox/backend": ""}, + mappings = {"domain_registry/java/google/registry/env/sandbox/backend": ""}, deps = [":registry_backend_war"], ) @@ -152,7 +152,7 @@ zip_file( name = "registry_tools_sandbox_war", srcs = ["env/sandbox/tools/WEB-INF/appengine-web.xml"], out = "registry_tools_sandbox.war", - mappings = {"java/google/registry/env/sandbox/tools": ""}, + mappings = {"domain_registry/java/google/registry/env/sandbox/tools": ""}, deps = [":registry_tools_war"], ) @@ -182,7 +182,7 @@ zip_file( "env/alpha/default/WEB-INF/cron.xml", ], out = "registry_default_alpha.war", - mappings = {"java/google/registry/env/alpha/default": ""}, + mappings = {"domain_registry/java/google/registry/env/alpha/default": ""}, deps = [":registry_default_war"], ) @@ -190,7 +190,7 @@ zip_file( name = "registry_backend_alpha_war", srcs = ["env/alpha/backend/WEB-INF/appengine-web.xml"], out = "registry_backend_alpha.war", - mappings = {"java/google/registry/env/alpha/backend": ""}, + mappings = {"domain_registry/java/google/registry/env/alpha/backend": ""}, deps = [":registry_backend_war"], ) @@ -198,7 +198,7 @@ zip_file( name = "registry_tools_alpha_war", srcs = ["env/alpha/tools/WEB-INF/appengine-web.xml"], out = "registry_tools_alpha.war", - mappings = {"java/google/registry/env/alpha/tools": ""}, + mappings = {"domain_registry/java/google/registry/env/alpha/tools": ""}, deps = [":registry_tools_war"], ) @@ -228,7 +228,7 @@ zip_file( "env/crash/default/WEB-INF/cron.xml", ], out = "registry_default_crash.war", - mappings = {"java/google/registry/env/crash/default": ""}, + mappings = {"domain_registry/java/google/registry/env/crash/default": ""}, deps = [":registry_default_war"], ) @@ -236,7 +236,7 @@ zip_file( name = "registry_backend_crash_war", srcs = ["env/crash/backend/WEB-INF/appengine-web.xml"], out = "registry_backend_crash.war", - mappings = {"java/google/registry/env/crash/backend": ""}, + mappings = {"domain_registry/java/google/registry/env/crash/backend": ""}, deps = [":registry_backend_war"], ) @@ -244,7 +244,7 @@ zip_file( name = "registry_tools_crash_war", srcs = ["env/crash/tools/WEB-INF/appengine-web.xml"], out = "registry_tools_crash.war", - mappings = {"java/google/registry/env/crash/tools": ""}, + mappings = {"domain_registry/java/google/registry/env/crash/tools": ""}, deps = [":registry_tools_war"], ) @@ -271,7 +271,7 @@ zip_file( name = "registry_default_local_war", srcs = ["env/local/default/WEB-INF/appengine-web.xml"], out = "registry_default_local.war", - mappings = {"java/google/registry/env/local/default": ""}, + mappings = {"domain_registry/java/google/registry/env/local/default": ""}, deps = [":registry_default_war"], ) @@ -279,7 +279,7 @@ zip_file( name = "registry_backend_local_war", srcs = ["env/local/backend/WEB-INF/appengine-web.xml"], out = "registry_backend_local.war", - mappings = {"java/google/registry/env/local/backend": ""}, + mappings = {"domain_registry/java/google/registry/env/local/backend": ""}, deps = [":registry_backend_war"], ) @@ -287,6 +287,6 @@ zip_file( name = "registry_tools_local_war", srcs = ["env/local/tools/WEB-INF/appengine-web.xml"], out = "registry_tools_local.war", - mappings = {"java/google/registry/env/local/tools": ""}, + mappings = {"domain_registry/java/google/registry/env/local/tools": ""}, deps = [":registry_tools_war"], ) diff --git a/java/google/registry/builddefs/defs.bzl b/java/google/registry/builddefs/defs.bzl index b7999e08c..37cafa730 100644 --- a/java/google/registry/builddefs/defs.bzl +++ b/java/google/registry/builddefs/defs.bzl @@ -16,11 +16,45 @@ ZIPPER = "@bazel_tools//tools/zip:zipper" -_OUTPUT_DIRS = ("bazel-out/", "bazel-genfiles/") +def long_path(ctx, file_): + """Constructs canonical runfile path relative to TEST_SRCDIR. -def runpath(f): - """Figures out the proper runfiles path for a file.""" - for prefix in _OUTPUT_DIRS: - if f.path.startswith(prefix): - return f.short_path - return f.path + Args: + ctx: A Skylark rule context. + file_: A File object that should appear in the runfiles for the test. + + Returns: + A string path relative to TEST_SRCDIR suitable for use in tests and + testing infrastructure. + """ + if file_.short_path.startswith("../"): + return file_.short_path[3:] + if file_.owner and file_.owner.workspace_root: + return file_.owner.workspace_root + "/" + file_.short_path + return ctx.workspace_name + "/" + file_.short_path + +def collect_runfiles(targets): + """Aggregates runfiles from targets. + + Args: + targets: A list of Bazel targets. + + Returns: + A list of Bazel files. + """ + data = set() + for target in targets: + if hasattr(target, "runfiles"): + data += target.runfiles.files + continue + if hasattr(target, "data_runfiles"): + data += target.data_runfiles.files + if hasattr(target, "default_runfiles"): + data += target.default_runfiles.files + return data + +def _get_runfiles(target, attribute): + runfiles = getattr(target, attribute, None) + if runfiles: + return runfiles.files + return [] diff --git a/java/google/registry/builddefs/zip_file.bzl b/java/google/registry/builddefs/zip_file.bzl index b2db66677..dac5a8678 100644 --- a/java/google/registry/builddefs/zip_file.bzl +++ b/java/google/registry/builddefs/zip_file.bzl @@ -39,10 +39,9 @@ Prefixes are matched with component granularity, not characters. Mappings with more components take precedence. Mappings with equal components are sorted asciibetically. -Mappings apply to the "short path" of a file, which is relative to the root of -the repository, not the current directory. Short paths do not take into -consideration bazel-foo/ output directories. Furthermore, if a file is located -in an external repository, then its short path will begin with external/foo/. +Mappings apply to the "long path" of a file, i.e. relative to TEST_SRCDIR, +e.g. workspace_name/pkg/file. Long paths do not take into consideration +bazel-foo/ output directories. The deps attribute allows zip_file() rules to depend on other zip_file() rules. In such cases, the contents of directly dependent zip files are unzipped and @@ -110,15 +109,22 @@ A zip file can be assembled across many rules. For example: """ -load('//java/google/registry/builddefs:defs.bzl', 'ZIPPER', 'runpath') +load('//java/google/registry/builddefs:defs.bzl', + 'ZIPPER', + 'collect_runfiles', + 'long_path') -def _impl(ctx): +def _zip_file(ctx): """Implementation of zip_file() rule.""" for s, d in ctx.attr.mappings.items(): if (s.startswith('/') or s.endswith('/') or d.startswith('/') or d.endswith('/')): fail('mappings should not begin or end with slash') - mapped = _map_sources(ctx.files.srcs, ctx.attr.mappings) + srcs = set() + srcs += ctx.files.srcs + srcs += ctx.files.data + srcs += collect_runfiles(ctx.attr.data) + mapped = _map_sources(ctx, srcs, ctx.attr.mappings) cmd = [ '#!/bin/sh', 'set -e', @@ -146,7 +152,7 @@ def _impl(ctx): ctx.file_action(output=script, content='\n'.join(cmd), executable=True) inputs = [ctx.file._zipper] inputs += [dep.zip_file for dep in ctx.attr.deps] - inputs += ctx.files.srcs + inputs += list(srcs) ctx.action( inputs=inputs, outputs=[ctx.outputs.out], @@ -154,10 +160,9 @@ def _impl(ctx): mnemonic='zip', progress_message='Creating zip with %d inputs %s' % ( len(inputs), ctx.label)) - return struct(files=set([ctx.outputs.out]), - zip_file=ctx.outputs.out) + return struct(files=set([ctx.outputs.out]), zip_file=ctx.outputs.out) -def _map_sources(srcs, mappings): +def _map_sources(ctx, srcs, mappings): """Calculates paths in zip file for srcs.""" # order mappings with more path components first mappings = sorted([(-len(source.split('/')), source, dest) @@ -168,32 +173,32 @@ def _map_sources(srcs, mappings): used = {i: False for i in mappings_indexes} mapped = [] for file_ in srcs: - short_path = runpath(file_) + run_path = long_path(ctx, file_) zip_path = None for i in mappings_indexes: source = mappings[i][0] dest = mappings[i][1] if not source: if dest: - zip_path = dest + '/' + short_path + zip_path = dest + '/' + run_path else: - zip_path = short_path - elif source == short_path: + zip_path = run_path + elif source == run_path: if dest: zip_path = dest else: - zip_path = short_path - elif short_path.startswith(source + '/'): + zip_path = run_path + elif run_path.startswith(source + '/'): if dest: - zip_path = dest + short_path[len(source):] + zip_path = dest + run_path[len(source):] else: - zip_path = short_path[len(source) + 1:] + zip_path = run_path[len(source) + 1:] else: continue used[i] = True break if not zip_path: - fail('no mapping matched: ' + short_path) + fail('no mapping matched: ' + run_path) mapped += [(file_.path, zip_path)] for i in mappings_indexes: if not used[i]: @@ -201,11 +206,12 @@ def _map_sources(srcs, mappings): return mapped zip_file = rule( - implementation=_impl, + implementation=_zip_file, output_to_genfiles = True, attrs={ 'out': attr.output(mandatory=True), 'srcs': attr.label_list(allow_files=True), + 'data': attr.label_list(cfg='data', allow_files=True), 'deps': attr.label_list(providers=['zip_file']), 'mappings': attr.string_dict(), '_zipper': attr.label(default=Label(ZIPPER), single_file=True), diff --git a/java/google/registry/ui/BUILD b/java/google/registry/ui/BUILD index 4c90a1f23..fb39ff112 100644 --- a/java/google/registry/ui/BUILD +++ b/java/google/registry/ui/BUILD @@ -11,9 +11,7 @@ filegroup( name = "runfiles", srcs = glob(["assets/**"]) + [ "brain_bin.js", - "brain_bin_map.js", "registrar_bin.js", - "registrar_bin_map.js", "//java/google/registry/ui/css:registrar_bin.css", "//java/google/registry/ui/html:html_files", ], @@ -22,20 +20,13 @@ filegroup( filegroup( name = "runfiles_debug", srcs = [ - "brain_bin.js.map", - "deps.js", - "registrar_bin.js.map", - "registrar_dbg.js", - "//java/google/registry/ui/css:css_files", - "//java/google/registry/ui/css:registrar_dbg.css", - "//java/google/registry/ui/js:js_files", - "//java/google/registry/ui/js/registrar:js_files", - "//java/google/registry/ui/soy:js_files", - "//java/google/registry/ui/soy/registrar:js_files", - "//javascript/closure:js_files_recursive", - "//javascript/template/soy:soy_usegoog_js_files", - "@closure_library//:js_files", + ":brain_bin", + ":deps", + ":registrar_bin", + ":registrar_dbg", + "//java/google/registry/ui/css:registrar_dbg", ], + data = [":deps"], ) zip_file( @@ -43,10 +34,10 @@ zip_file( srcs = [":runfiles"], out = "ui.war", mappings = { - "java/google/registry/ui/assets": "assets", - "java/google/registry/ui/css": "assets/css", - "java/google/registry/ui/html": "", - "java/google/registry/ui": "assets/js", + "domain_registry/java/google/registry/ui/assets": "assets", + "domain_registry/java/google/registry/ui/css": "assets/css", + "domain_registry/java/google/registry/ui/html": "", + "domain_registry/java/google/registry/ui": "assets/js", }, ) @@ -54,12 +45,12 @@ zip_file( name = "war_debug", srcs = [":runfiles_debug"], out = "ui_debug.war", + data = [":runfiles_debug"], mappings = { - "java/google/registry/ui/deps.js": "assets/sources/deps.js", - "java/google/registry/ui/brain_bin.js.map": "assets/js/brain_bin.js.map", - "java/google/registry/ui/registrar_bin.js.map": "assets/js/registrar_bin.js.map", - "java/google/registry/ui/registrar_dbg.js": "assets/js/registrar_dbg.js", - "java/google/registry/ui/css/registrar_dbg.css": "assets/css/registrar_dbg.css", + "domain_registry/java/google/registry/ui/brain_bin.js.map": "assets/js/brain_bin.js.map", + "domain_registry/java/google/registry/ui/registrar_bin.js.map": "assets/js/registrar_bin.js.map", + "domain_registry/java/google/registry/ui/registrar_dbg.js": "assets/js/registrar_dbg.js", + "domain_registry/java/google/registry/ui/css/registrar_dbg.css": "assets/css/registrar_dbg.css", "": "assets/sources", }, deps = [":war"], @@ -80,10 +71,7 @@ java_library( closure_js_deps( name = "deps", - deps = [ - "//java/google/registry/ui/js", - "//java/google/registry/ui/js/registrar", - ], + deps = ["//java/google/registry/ui/js/registrar"], ) ################################################################################ @@ -98,22 +86,13 @@ closure_js_binary( name = "registrar_bin", css = "//java/google/registry/ui/css:registrar_bin", entry_points = ["goog:registry.registrar.main"], + output_wrapper = "%output%//# sourceMappingURL=registrar_bin.js.map", deps = [ "//java/google/registry/ui/externs", "//java/google/registry/ui/js/registrar", ], ) -# The webserver should provide this to trusted admin users, rather than -# registrar_bin.js. This is what makes debugging in production possible. -genrule( - name = "registrar_mapped", - srcs = ["registrar_bin.js"], - outs = ["registrar_bin_map.js"], - cmd = "cat $(location registrar_bin.js) >$@ && " + - "echo '//# sourceMappingURL=registrar_bin.js.map' >>$@", -) - # This target creates a compiled JavaScript file where symbols are renamed to # include dollar signs. This is useful for testing, because you can still read # the source code, but it'll fail if your code is incorrect with regard to @@ -137,16 +116,9 @@ closure_js_binary( closure_js_binary( name = "brain_bin", entry_points = ["goog:registry.registrar.BrainFrame.main"], + output_wrapper = "%output%//# sourceMappingURL=brain_bin.js.map", deps = [ "//java/google/registry/ui/externs", "//java/google/registry/ui/js/registrar", ], ) - -genrule( - name = "brain_mapped", - srcs = ["brain_bin.js"], - outs = ["brain_bin_map.js"], - cmd = "cat $(location brain_bin.js) >$@ && " + - "echo '//# sourceMappingURL=brain_bin.js.map' >>$@", -) diff --git a/java/google/registry/ui/assets/html/brainframe-alpha.html b/java/google/registry/ui/assets/html/brainframe-alpha.html index 001fac0e7..6efcfa671 100644 --- a/java/google/registry/ui/assets/html/brainframe-alpha.html +++ b/java/google/registry/ui/assets/html/brainframe-alpha.html @@ -2,7 +2,7 @@ - +
diff --git a/java/google/registry/ui/assets/html/brainframe-map.html b/java/google/registry/ui/assets/html/brainframe-map.html deleted file mode 100644 index fdb7d0fb9..000000000 --- a/java/google/registry/ui/assets/html/brainframe-map.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - -
- diff --git a/java/google/registry/ui/assets/html/insecure-brainframe.html b/java/google/registry/ui/assets/html/insecure-brainframe.html index f00ebc4b1..72b29c07a 100644 --- a/java/google/registry/ui/assets/html/insecure-brainframe.html +++ b/java/google/registry/ui/assets/html/insecure-brainframe.html @@ -3,8 +3,8 @@ - - + +
diff --git a/java/google/registry/ui/css/BUILD b/java/google/registry/ui/css/BUILD index 88edd2fad..3e1f46e74 100644 --- a/java/google/registry/ui/css/BUILD +++ b/java/google/registry/ui/css/BUILD @@ -4,12 +4,7 @@ package( licenses(["notice"]) # Apache 2.0 -load("@io_bazel_rules_closure//closure:defs.bzl", "closure_css_library", "closure_css_binary") - -filegroup( - name = "css_files", - srcs = glob(["*.css"]), -) +load("@io_bazel_rules_closure//closure:defs.bzl", "closure_css_binary", "closure_css_library") closure_css_library( name = "kd_components_lib", @@ -23,7 +18,9 @@ closure_css_library( "forms.css", "registry.css", ], - deps = [":kd_components_lib"], + deps = [ + ":kd_components_lib", + ], ) closure_css_library( @@ -49,3 +46,9 @@ closure_css_binary( debug = 1, deps = [":registrar_lib"], ) + +closure_css_library( + name = "registrar_raw", + srcs = ["registrar_imports_raw.css"], + deps = [":registrar_lib"], +) diff --git a/java/google/registry/ui/externs/BUILD b/java/google/registry/ui/externs/BUILD index d4c3fa0ad..996349bc4 100644 --- a/java/google/registry/ui/externs/BUILD +++ b/java/google/registry/ui/externs/BUILD @@ -8,10 +8,5 @@ load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library") closure_js_library( name = "externs", - externs = glob(["*.js"]), -) - -filegroup( - name = "js_files_recursive", srcs = glob(["*.js"]), ) diff --git a/java/google/registry/ui/js/BUILD b/java/google/registry/ui/js/BUILD index df1b3b1b0..fb4132f51 100644 --- a/java/google/registry/ui/js/BUILD +++ b/java/google/registry/ui/js/BUILD @@ -6,17 +6,15 @@ licenses(["notice"]) # Apache 2.0 load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library") -filegroup( - name = "js_files", - srcs = glob(["*.js"]), -) - closure_js_library( name = "js", - srcs = [":js_files"], + srcs = glob(["*.js"]), + suppress = [ + "JSC_UNKNOWN_EXPR_TYPE", + "JSC_IMPLICITLY_NULLABLE_JSDOC", + ], deps = [ - "//java/google/registry/ui/soy:Console", - "//java/google/registry/ui/soy:Forms", - "//javascript/closure", + "//java/google/registry/ui/soy", + "@io_bazel_rules_closure//closure/library", ], ) diff --git a/java/google/registry/ui/js/registrar/BUILD b/java/google/registry/ui/js/registrar/BUILD index 24a6c16f1..247233e4a 100644 --- a/java/google/registry/ui/js/registrar/BUILD +++ b/java/google/registry/ui/js/registrar/BUILD @@ -6,29 +6,17 @@ licenses(["notice"]) # Apache 2.0 load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library") -filegroup( - name = "js_files", - srcs = glob(["*.js"]), -) - closure_js_library( name = "registrar", - srcs = [":js_files"], + srcs = glob(["*.js"]), + suppress = [ + "JSC_UNKNOWN_EXPR_TYPE", + "JSC_IMPLICITLY_NULLABLE_JSDOC", + ], deps = [ "//java/google/registry/ui/js", - "//java/google/registry/ui/soy:Forms", - "//java/google/registry/ui/soy/registrar:Console", - "//java/google/registry/ui/soy/registrar:Contact", - "//java/google/registry/ui/soy/registrar:ContactEpp", - "//java/google/registry/ui/soy/registrar:ContactSettings", - "//java/google/registry/ui/soy/registrar:Domain", - "//java/google/registry/ui/soy/registrar:DomainEpp", - "//java/google/registry/ui/soy/registrar:Epp", - "//java/google/registry/ui/soy/registrar:Host", - "//java/google/registry/ui/soy/registrar:HostEpp", - "//java/google/registry/ui/soy/registrar:Payment", - "//java/google/registry/ui/soy/registrar:SecuritySettings", - "//java/google/registry/ui/soy/registrar:WhoisSettings", - "//javascript/closure", + "//java/google/registry/ui/soy", + "//java/google/registry/ui/soy/registrar", + "@io_bazel_rules_closure//closure/library", ], ) diff --git a/java/google/registry/ui/server/registrar/ConsoleUiAction.java b/java/google/registry/ui/server/registrar/ConsoleUiAction.java index 37aeeeaa4..d5a17af2c 100644 --- a/java/google/registry/ui/server/registrar/ConsoleUiAction.java +++ b/java/google/registry/ui/server/registrar/ConsoleUiAction.java @@ -106,7 +106,6 @@ public final class ConsoleUiAction implements Runnable { Registrar registrar = Registrar.loadByClientId(sessionUtils.getRegistrarClientId(req)); data.put("xsrfToken", XsrfTokenManager.generateToken(EppConsoleAction.XSRF_SCOPE)); data.put("clientId", registrar.getClientId()); - data.put("isAdmin", userService.isUserAdmin()); data.put("showPaymentLink", registrar.getBillingMethod() == Registrar.BillingMethod.BRAINTREE); String payload = TOFU_SUPPLIER.get() diff --git a/java/google/registry/ui/soy/BUILD b/java/google/registry/ui/soy/BUILD index 096f63ddd..56db14d4b 100644 --- a/java/google/registry/ui/soy/BUILD +++ b/java/google/registry/ui/soy/BUILD @@ -6,12 +6,10 @@ licenses(["notice"]) # Apache 2.0 load("@io_bazel_rules_closure//closure:defs.bzl", "closure_java_template_library", "closure_js_template_library") -filegroup( - name = "js_files", - srcs = [ - "Console.soy.js", - "Forms.soy.js", - ], +closure_js_template_library( + name = "soy", + srcs = glob(["*.soy"]), + globals = "//java/google/registry/ui:globals.txt", ) closure_java_template_library( @@ -19,15 +17,3 @@ closure_java_template_library( srcs = glob(["*.soy"]), java_package = "google.registry.ui.soy", ) - -closure_js_template_library( - name = "Console", - srcs = ["Console.soy"], - globals = "//java/google/registry/ui:globals.txt", -) - -closure_js_template_library( - name = "Forms", - srcs = ["Forms.soy"], - globals = "//java/google/registry/ui:globals.txt", -) diff --git a/java/google/registry/ui/soy/Console.soy b/java/google/registry/ui/soy/Console.soy index 9525c33eb..8fb387134 100644 --- a/java/google/registry/ui/soy/Console.soy +++ b/java/google/registry/ui/soy/Console.soy @@ -50,13 +50,8 @@ {case google.registry.ui.ConsoleDebug.DEBUG} {case google.registry.ui.ConsoleDebug.RAW} - {if $app == 'admin'} - - {else} - - {/if} + {default} {/switch} diff --git a/java/google/registry/ui/soy/registrar/BUILD b/java/google/registry/ui/soy/registrar/BUILD index 6c6ae333a..f51b1ed6a 100644 --- a/java/google/registry/ui/soy/registrar/BUILD +++ b/java/google/registry/ui/soy/registrar/BUILD @@ -6,22 +6,12 @@ licenses(["notice"]) # Apache 2.0 load("@io_bazel_rules_closure//closure:defs.bzl", "closure_java_template_library", "closure_js_template_library") -filegroup( - name = "js_files", - srcs = [ - "Console.soy.js", - "Contact.soy.js", - "ContactEpp.soy.js", - "ContactSettings.soy.js", - "Domain.soy.js", - "DomainEpp.soy.js", - "Epp.soy.js", - "Host.soy.js", - "HostEpp.soy.js", - "Payment.soy.js", - "SecuritySettings.soy.js", - "WhoisSettings.soy.js", - ], +closure_js_template_library( + name = "registrar", + srcs = glob(["*.soy"]), + data = ["//java/google/registry/ui/css:registrar_raw"], + globals = "//java/google/registry/ui:globals.txt", + deps = ["//java/google/registry/ui/soy"], ) closure_java_template_library( @@ -29,82 +19,3 @@ closure_java_template_library( srcs = glob(["*.soy"]), java_package = "google.registry.ui.soy.registrar", ) - -closure_js_template_library( - name = "Console", - srcs = ["Console.soy"], - globals = "//java/google/registry/ui:globals.txt", - deps = ["//java/google/registry/ui/soy:Console"], -) - -closure_js_template_library( - name = "ContactEpp", - srcs = ["ContactEpp.soy"], - globals = "//java/google/registry/ui:globals.txt", -) - -closure_js_template_library( - name = "ContactSettings", - srcs = ["ContactSettings.soy"], - globals = "//java/google/registry/ui:globals.txt", - deps = ["//java/google/registry/ui/soy:Forms"], -) - -closure_js_template_library( - name = "Contact", - srcs = ["Contact.soy"], - globals = "//java/google/registry/ui:globals.txt", - deps = ["//java/google/registry/ui/soy:Forms"], -) - -closure_js_template_library( - name = "Domain", - srcs = ["Domain.soy"], - globals = "//java/google/registry/ui:globals.txt", - deps = ["//java/google/registry/ui/soy:Forms"], -) - -closure_js_template_library( - name = "DomainEpp", - srcs = ["DomainEpp.soy"], - globals = "//java/google/registry/ui:globals.txt", -) - -closure_js_template_library( - name = "Epp", - srcs = ["Epp.soy"], - globals = "//java/google/registry/ui:globals.txt", -) - -closure_js_template_library( - name = "HostEpp", - srcs = ["HostEpp.soy"], - globals = "//java/google/registry/ui:globals.txt", -) - -closure_js_template_library( - name = "Host", - srcs = ["Host.soy"], - globals = "//java/google/registry/ui:globals.txt", - deps = ["//java/google/registry/ui/soy:Forms"], -) - -closure_js_template_library( - name = "Payment", - srcs = ["Payment.soy"], - globals = "//java/google/registry/ui:globals.txt", - deps = ["//java/google/registry/ui/soy:Forms"], -) - -closure_js_template_library( - name = "SecuritySettings", - srcs = ["SecuritySettings.soy"], - globals = "//java/google/registry/ui:globals.txt", -) - -closure_js_template_library( - name = "WhoisSettings", - srcs = ["WhoisSettings.soy"], - globals = "//java/google/registry/ui:globals.txt", - deps = ["//java/google/registry/ui/soy:Forms"], -) diff --git a/java/google/registry/ui/soy/registrar/Console.soy b/java/google/registry/ui/soy/registrar/Console.soy index 8d5c6d2eb..514f2d48d 100644 --- a/java/google/registry/ui/soy/registrar/Console.soy +++ b/java/google/registry/ui/soy/registrar/Console.soy @@ -24,7 +24,6 @@ {@param xsrfToken: string} /** Security token. */ {@param clientId: string} /** Registrar client identifier. */ {@param username: string} /** Arbitrary username to display. */ - {@param isAdmin: bool} /** Is this user an App Engine account admin? */ {@param logoutUrl: string} /** Generated URL for logging out of Google. */ {@param showPaymentLink: bool} {@param productName: string} /** Name to display for this software product. */ @@ -51,18 +50,13 @@ {switch DEBUG} {case google.registry.ui.ConsoleDebug.PRODUCTION} - {if $isAdmin} - - {else} - - {/if} + {case google.registry.ui.ConsoleDebug.DEBUG} {case google.registry.ui.ConsoleDebug.RAW} - - + + {/switch} {if isNonnull(DEBUG)} diff --git a/javascript/closure/BUILD b/javascript/closure/BUILD deleted file mode 100644 index 59ac7f182..000000000 --- a/javascript/closure/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library") - -closure_js_library( - name = "closure", - exports = ["@io_bazel_rules_closure//closure/library"], -) - -closure_js_library( - name = "testing", - testonly = 1, - exports = ["@io_bazel_rules_closure//closure/library:testing"], -) - -filegroup( - name = "js_files_recursive", - srcs = ["@closure_library//:js_files"], -) diff --git a/javascript/template/soy/BUILD b/javascript/template/soy/BUILD deleted file mode 100644 index bcc5e24f6..000000000 --- a/javascript/template/soy/BUILD +++ /dev/null @@ -1,6 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -filegroup( - name = "soy_usegoog_js_files", - srcs = ["@io_bazel_rules_closure//closure/templates:soy_jssrc"], -) diff --git a/javatests/google/registry/builddefs/BUILD b/javatests/google/registry/builddefs/BUILD index d48ac464e..8c734e6e5 100644 --- a/javatests/google/registry/builddefs/BUILD +++ b/javatests/google/registry/builddefs/BUILD @@ -29,9 +29,9 @@ zip_contents_test( name = "zip_emptyMapping_leavesShortPathsInTact", src = "basic.zip", contents = { - "javatests/google/registry/builddefs/generated.txt": "generated", - "javatests/google/registry/builddefs/hello.txt": "hello", - "javatests/google/registry/builddefs/world.txt": "world", + "domain_registry/javatests/google/registry/builddefs/generated.txt": "generated", + "domain_registry/javatests/google/registry/builddefs/hello.txt": "hello", + "domain_registry/javatests/google/registry/builddefs/world.txt": "world", }, ) @@ -39,7 +39,7 @@ zip_file( name = "stripped", srcs = ["hello.txt"], out = "stripped.zip", - mappings = {"javatests/google/registry/builddefs": ""}, + mappings = {"domain_registry/javatests/google/registry/builddefs": ""}, ) zip_contents_test( @@ -57,8 +57,8 @@ zip_file( ], out = "repath.zip", mappings = { - "javatests/google/registry/builddefs": "a/b/c", - "javatests/google/registry/builddefs/generated.txt": "x/y/z/generated.txt", + "domain_registry/javatests/google/registry/builddefs": "a/b/c", + "domain_registry/javatests/google/registry/builddefs/generated.txt": "x/y/z/generated.txt", }, ) @@ -76,7 +76,7 @@ zip_file( name = "overridden", srcs = ["override/hello.txt"], out = "overridden.zip", - mappings = {"javatests/google/registry/builddefs/override": "a/b/c"}, + mappings = {"domain_registry/javatests/google/registry/builddefs/override": "a/b/c"}, deps = [":repath"], ) diff --git a/javatests/google/registry/builddefs/zip_contents_test.bzl b/javatests/google/registry/builddefs/zip_contents_test.bzl index 22b016e57..dc41e8269 100644 --- a/javatests/google/registry/builddefs/zip_contents_test.bzl +++ b/javatests/google/registry/builddefs/zip_contents_test.bzl @@ -14,15 +14,15 @@ """Build rule for unit testing the zip_file() rule.""" -load('//java/google/registry/builddefs:defs.bzl', 'ZIPPER', 'runpath') +load('//java/google/registry/builddefs:defs.bzl', 'ZIPPER') def _impl(ctx): """Implementation of zip_contents_test() rule.""" cmd = [ 'set -e', 'repo="$(pwd)"', - 'zipper="${repo}/%s"' % runpath(ctx.file._zipper), - 'archive="${repo}/%s"' % runpath(ctx.file.src), + 'zipper="${repo}/%s"' % ctx.file._zipper.short_path, + 'archive="${repo}/%s"' % ctx.file.src.short_path, ('listing="$("${zipper}" v "${archive}"' + ' | grep -v ^d | awk \'{print $3}\' | LC_ALL=C sort)"'), 'if [[ "${listing}" != "%s" ]]; then' % ( diff --git a/javatests/google/registry/server/RegistryTestServer.java b/javatests/google/registry/server/RegistryTestServer.java index bbbf59ffd..e487db87b 100644 --- a/javatests/google/registry/server/RegistryTestServer.java +++ b/javatests/google/registry/server/RegistryTestServer.java @@ -30,17 +30,22 @@ public final class RegistryTestServer { new ImmutableMap.Builder() .put( "/index.html", - Paths.get("java/google/registry/ui/html/index.html")) + Paths.get( + "../domain_registry/java/google/registry/ui/html/index.html")) .put( "/error.html", - Paths.get("java/google/registry/ui/html/error.html")) - .put("/assets/js/*", Paths.get("java/google/registry/ui")) - .put("/assets/css/*", Paths.get("java/google/registry/ui/css")) + Paths.get( + "../domain_registry/java/google/registry/ui/html/error.html")) .put( - "/assets/sources/deps.js", - Paths.get("java/google/registry/ui/deps.js")) - .put("/assets/sources/*", Paths.get("")) - .put("/assets/*", Paths.get("java/google/registry/ui/assets")) + "/assets/js/*", + Paths.get("../domain_registry/java/google/registry/ui")) + .put( + "/assets/css/*", + Paths.get("../domain_registry/java/google/registry/ui/css")) + .put("/assets/sources/*", Paths.get("..")) + .put( + "/assets/*", + Paths.get("../domain_registry/java/google/registry/ui/assets")) .build(); private static final ImmutableList ROUTES = ImmutableList.of( diff --git a/javatests/google/registry/server/RegistryTestServerMain.java b/javatests/google/registry/server/RegistryTestServerMain.java index 2427bd9c7..da11d65e3 100644 --- a/javatests/google/registry/server/RegistryTestServerMain.java +++ b/javatests/google/registry/server/RegistryTestServerMain.java @@ -16,6 +16,7 @@ package google.registry.server; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; import com.google.common.collect.ImmutableList; import com.google.common.net.HostAndPort; import google.registry.testing.AppEngineRule; @@ -27,6 +28,7 @@ import org.junit.runner.Description; import org.junit.runners.model.Statement; /** Command-line interface for {@link RegistryTestServer}. */ +@Parameters(separators = " =", commandDescription = "Runs web development server.") public final class RegistryTestServerMain { private static final String RESET = "\u001b[0m"; diff --git a/javatests/google/registry/server/StaticResourceServlet.java b/javatests/google/registry/server/StaticResourceServlet.java index 510ef1176..b4d31b153 100644 --- a/javatests/google/registry/server/StaticResourceServlet.java +++ b/javatests/google/registry/server/StaticResourceServlet.java @@ -17,7 +17,6 @@ package google.registry.server; import static com.google.common.base.MoreObjects.firstNonNull; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Verify.verify; -import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST; import static javax.servlet.http.HttpServletResponse.SC_FORBIDDEN; import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND; @@ -122,12 +121,7 @@ public final class StaticResourceServlet extends HttpServlet { Optional doHead(HttpServletRequest req, HttpServletResponse rsp) throws IOException { verify(req.getRequestURI().startsWith(prefix)); - Path file = root.resolve(req.getRequestURI().substring(prefix.length())).normalize(); - if (!file.startsWith(root)) { - logger.infofmt("Evil request: %s (%s) (%s + %s)", req.getRequestURI(), file, root, prefix); - rsp.sendError(SC_BAD_REQUEST, "Naughty naughty!"); - return Optional.absent(); - } + Path file = root.resolve(req.getRequestURI().substring(prefix.length())); if (!Files.exists(file)) { logger.infofmt("Not found: %s (%s)", req.getRequestURI(), file); rsp.sendError(SC_NOT_FOUND, "Not found"); diff --git a/javatests/google/registry/ui/js/BUILD b/javatests/google/registry/ui/js/BUILD index 471f59776..26bc202ae 100644 --- a/javatests/google/registry/ui/js/BUILD +++ b/javatests/google/registry/ui/js/BUILD @@ -11,8 +11,8 @@ closure_js_library( name = "testing", srcs = ["testing.js"], deps = [ - "//javascript/closure", - "//javascript/closure:testing", + "@io_bazel_rules_closure//closure/library", + "@io_bazel_rules_closure//closure/library:testing", ], ) @@ -25,7 +25,7 @@ closure_js_test( deps = [ ":testing", "//java/google/registry/ui/js", - "//javascript/closure", - "//javascript/closure:testing", + "@io_bazel_rules_closure//closure/library", + "@io_bazel_rules_closure//closure/library:testing", ], ) diff --git a/javatests/google/registry/ui/js/registrar/BUILD b/javatests/google/registry/ui/js/registrar/BUILD index 3161b1f1a..2107c6404 100644 --- a/javatests/google/registry/ui/js/registrar/BUILD +++ b/javatests/google/registry/ui/js/registrar/BUILD @@ -13,8 +13,8 @@ closure_js_library( deps = [ "//java/google/registry/ui/js", "//java/google/registry/ui/js/registrar", - "//javascript/closure", - "//javascript/closure:testing", + "@io_bazel_rules_closure//closure/library", + "@io_bazel_rules_closure//closure/library:testing", ], ) @@ -28,9 +28,9 @@ closure_js_test( ":console_test_util", "//java/google/registry/ui/js", "//java/google/registry/ui/js/registrar", - "//java/google/registry/ui/soy/registrar:Console", - "//javascript/closure", - "//javascript/closure:testing", + "//java/google/registry/ui/soy/registrar", "//javatests/google/registry/ui/js:testing", + "@io_bazel_rules_closure//closure/library", + "@io_bazel_rules_closure//closure/library:testing", ], ) diff --git a/third_party/javascript/closure/BUILD b/third_party/javascript/closure/BUILD deleted file mode 100644 index d2503402f..000000000 --- a/third_party/javascript/closure/BUILD +++ /dev/null @@ -1,15 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -licenses(["notice"]) # Apache License 2.0 - -load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library") - -closure_js_library( - name = "closure", - exports = ["//third_party/closure/library"], -) - -filegroup( - name = "js_files_recursive", - srcs = ["@closure_library//:js_files"], -)