diff --git a/app/client/BUILD b/app/client/BUILD
index 164c8ca..db476d6 100644
--- a/app/client/BUILD
+++ b/app/client/BUILD
@@ -2,40 +2,42 @@ load(
"@com_github_grpc_grpc_web//bazel:closure_grpc_web_library.bzl",
"closure_grpc_web_library",
)
-
load(
"@io_bazel_rules_closure//closure:defs.bzl",
"closure_js_library",
"closure_proto_library",
- "closure_js_binary"
+ "closure_js_binary",
)
closure_proto_library(
- name = "hello_world_service_closure_proto",
- deps = ["//app/local_server/service:hello_world_service_proto"]
+ name = "hello_world_service_closure_proto",
+ deps = ["//app/local_server/service:hello_world_service_proto"],
)
-
closure_grpc_web_library(
- name = "hello_world_service_grpc",
- deps = ["//app/local_server/service:hello_world_service_proto"],
- mode = "grpcweb" # mode can be grpcweb or grpcwebtext. For more details,
- # see https://github.com/grpc/grpc-web#wire-format-mode
+ name = "hello_world_service_grpc",
+ # |mode| can be grpcweb or grpcwebtext.
+ # For more details, see https://github.com/grpc/grpc-web#wire-format-mode
+ mode = "grpcweb",
+ deps = ["//app/local_server/service:hello_world_service_proto"],
)
-
closure_js_library(
- name = "hello_world_service_js_library",
- srcs = ["sample.js"],
- deps = [":hello_world_service_grpc",
- ":hello_world_service_closure_proto"],
+ name = "hello_world_service_js_library",
+ srcs = [
+ "application_main.js",
+ "entrypoint.js",
+ ],
+ deps = [
+ ":hello_world_service_closure_proto",
+ ":hello_world_service_grpc",
+ ],
)
-
closure_js_binary(
- name = "hello_world_service_js_binary",
- deps = [
- ":hello_world_service_js_library"
- ],
- entry_points = ["goog:app.hello"],
+ name = "hello_world_service_js_binary",
+ entry_points = ["goog:app.entrypoint"],
+ deps = [
+ ":hello_world_service_js_library",
+ ],
)
diff --git a/app/client/application_main.js b/app/client/application_main.js
new file mode 100644
index 0000000..2f0f69d
--- /dev/null
+++ b/app/client/application_main.js
@@ -0,0 +1,42 @@
+goog.module('app.ApplicationMain');
+
+const HelloWorldRequest = goog.require(
+ 'proto.com.google.startuposexample.app.localserver.service.HelloWorldRequest');
+const HelloWorldServiceClient = goog.require(
+ 'proto.com.google.startuposexample.app.localserver.service.HelloWorldServiceClient');
+
+/**
+ * The main class of our sample application.
+ */
+exports = class ApplicationMain {
+ /**
+ * Creates a new instance of our application.
+ *
+ * @param {string} serverAddr
+ */
+ constructor(serverAddr) {
+ /**
+ * @private
+ * @const {!HelloWorldServiceClient}
+ */
+ this.service_ = new HelloWorldServiceClient(serverAddr, null, null);
+ }
+
+ /**
+ * Hello
+ *
+ * @export
+ *
+ * @return {void}
+ */
+ hello() {
+ const request = new HelloWorldRequest();
+ request.setMessage(document.getElementById('request-message')['value']);
+
+ const metadata = {};
+ this.service_.helloWorld(request, metadata, (code, message) => {
+ document.getElementById('response-message')['value'] =
+ message.getMessage();
+ });
+ }
+};
diff --git a/app/client/entrypoint.js b/app/client/entrypoint.js
new file mode 100644
index 0000000..8cabb44
--- /dev/null
+++ b/app/client/entrypoint.js
@@ -0,0 +1,5 @@
+goog.module('app.entrypoint');
+
+const Application = goog.require('app.ApplicationMain');
+
+goog.exportSymbol('app', new Application('http://localhost:8080'));
diff --git a/app/client/sample.html b/app/client/sample.html
index 07191c0..5e7e702 100644
--- a/app/client/sample.html
+++ b/app/client/sample.html
@@ -14,7 +14,7 @@
-
+
diff --git a/app/client/sample.js b/app/client/sample.js
deleted file mode 100644
index 0131180..0000000
--- a/app/client/sample.js
+++ /dev/null
@@ -1,20 +0,0 @@
-goog.module('app.hello');
-
-var HelloWorldRequest = goog.require('proto.com.google.startuposexample.app.localserver.service.HelloWorldRequest');
-var HelloWorldServiceClient = goog.require('proto.com.google.startuposexample.app.localserver.service.HelloWorldServiceClient');
-
-
-/**
- * Hello
- */
-const hello = function () {
- var client = new HelloWorldServiceClient('http://localhost:8080', null, null);
- var request = new HelloWorldRequest();
- var metadata = {};
- request.setMessage(document.getElementById('request-message')['value']);
- client.helloWorld(request, metadata, function(code, message) {
- document.getElementById('response-message')['value'] = message.getMessage();
- });
-};
-
-goog.exportSymbol('hello', hello);
diff --git a/app/local_server/BUILD b/app/local_server/BUILD
index b09e17f..126ceea 100644
--- a/app/local_server/BUILD
+++ b/app/local_server/BUILD
@@ -1,12 +1,11 @@
load("@io_bazel_rules_docker//container:container.bzl", "container_image")
java_library(
- name = "local_server_lib",
- srcs = [
- "LocalServer.java"
- ],
- deps = [
- "@startupos//common:dagger_with_annotation_processor",
+ name = "local_server_lib",
+ srcs = [
+ "LocalServer.java",
+ ],
+ deps = [
"//app/local_server/service:hello_world_service",
"//third_party/maven/com/google/flogger",
"//third_party/maven/com/google/flogger:flogger_system_backend",
@@ -14,20 +13,20 @@ java_library(
"//third_party/maven/io/grpc:grpc_netty",
"//third_party/maven/io/grpc:grpc_services",
"//third_party/maven/javax/inject:javax_inject",
+ "@startupos//common:dagger_with_annotation_processor",
],
)
java_binary(
- name = "local_server",
- main_class = "com.google.startuposexample.app.localserver.LocalServer",
- runtime_deps = [":local_server_lib"],
+ name = "local_server",
+ main_class = "com.google.startuposexample.app.localserver.LocalServer",
+ runtime_deps = [":local_server_lib"],
)
-
container_image(
name = "local_server_image",
base = "@java_base//image",
- files = [":local_server_deploy.jar"],
cmd = ["local_server_deploy.jar"],
- ports = ["8001"]
+ files = [":local_server_deploy.jar"],
+ ports = ["8001"],
)
diff --git a/app/local_server/service/BUILD b/app/local_server/service/BUILD
index 27e6719..6eda34a 100644
--- a/app/local_server/service/BUILD
+++ b/app/local_server/service/BUILD
@@ -30,6 +30,6 @@ java_library(
":hello_world_service_java_proto",
"//third_party/maven/io/grpc:grpc_core",
"//third_party/maven/io/grpc:grpc_stub",
- "//third_party/maven/javax/inject:javax_inject"
+ "//third_party/maven/javax/inject:javax_inject",
],
)
diff --git a/app/run_sample.sh b/app/run_sample.sh
index 8b7dc49..4b68098 100755
--- a/app/run_sample.sh
+++ b/app/run_sample.sh
@@ -16,22 +16,21 @@ else
fi
echo "Building prerequisites: local_server, grpc web proxy, service js binary"
-bazel build //app/local_server:local_server \
+bazel build //app/local_server:local_server_deploy.jar \
@startupos_binaries//:grpcwebproxy \
//app/client:hello_world_service_js_binary
echo "Copying js binary"
rm -f app/client/app.js
-cp bazel-bin/app/client/hello_world_service_js_binary.js app/client/app.js
-
+cp "bazel-bin/app/client/hello_world_service_js_binary.js" "app/client/app.js"
echo "Running local_server"
-bazel run //app/local_server:local_server &
+java -jar "bazel-bin/app/local_server/local_server_deploy.jar" &
echo "Opening browser"
-$RUNNER $html_file
+$RUNNER "$html_file"
echo "Running grpc web proxy"
bazel run @startupos_binaries//:grpcwebproxy -- \
- --backend_addr=localhost:8001 \
+ --backend_addr="localhost:8001" \
--run_tls_server=false