diff --git a/java/google/registry/billing/BUILD b/java/google/registry/billing/BUILD new file mode 100644 index 000000000..053b8b32b --- /dev/null +++ b/java/google/registry/billing/BUILD @@ -0,0 +1,32 @@ +package( + default_visibility = ["//visibility:public"], +) + +licenses(["notice"]) # Apache 2.0 + +java_library( + name = "billing", + srcs = glob(["*.java"]), + deps = [ + "//java/google/registry/request", + "//java/google/registry/request/auth", + "@com_google_dagger", + "@com_google_guava", + "@joda_time", + "@org_apache_beam_runners_google_cloud_dataflow_java", + "@org_apache_beam_sdks_java_core", + ], +) + +java_binary( + name = "counter", + srcs = ["MinWordCount.java"], + main_class = "google.registry.billing.MinWordCount", + deps = [ + "@com_google_dagger", + "@com_google_guava", + "@joda_time", + "@org_apache_beam_runners_google_cloud_dataflow_java", + "@org_apache_beam_sdks_java_core", + ], +) diff --git a/java/google/registry/billing/GenerateInvoicesAction.java b/java/google/registry/billing/GenerateInvoicesAction.java new file mode 100644 index 000000000..5280546ec --- /dev/null +++ b/java/google/registry/billing/GenerateInvoicesAction.java @@ -0,0 +1,45 @@ +// Copyright 2017 The Nomulus Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package google.registry.billing; + +import static google.registry.request.Action.Method.POST; + +import google.registry.request.Action; +import google.registry.request.auth.Auth; +import javax.inject.Inject; + +/** + * Generates invoices for the month and stores them on GCS. + * + *

Currently this is just a stub runner that verifies we can deploy dataflow jobs from App + * Engine. + */ +@Action( + path = GenerateInvoicesAction.PATH, + method = POST, + auth = Auth.AUTH_INTERNAL_ONLY +) +public class GenerateInvoicesAction implements Runnable { + + @Inject GenerateInvoicesAction() {} + + static final String PATH = "/_dr/task/generateInvoices"; + + @Override + public void run() { + // MinWordCount minWordCount = new MinWordCount(); + // minWordCount.run(); + } +} diff --git a/java/google/registry/billing/MinWordCount.java b/java/google/registry/billing/MinWordCount.java new file mode 100644 index 000000000..b4a53b6e4 --- /dev/null +++ b/java/google/registry/billing/MinWordCount.java @@ -0,0 +1,42 @@ +// Copyright 2017 The Nomulus Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package google.registry.billing; + +import org.apache.beam.sdk.transforms.DoFn; + +/** A minimal word count, serving as proof of concept for the Beam pipeline. */ +public class MinWordCount implements Runnable { + + public static void main(String[] args) { + MinWordCount wordCount = new MinWordCount(); + wordCount.run(); + } + + @Override + public void run() { + // This is a stub function for a basic proof-of-concept Beam pipeline. + } + + static class ExtractWordsFn extends DoFn { + @ProcessElement + public void processElement(ProcessContext c) { + for (String word : c.element().split("[^\\p{L}]+")) { + if (!word.isEmpty()) { + c.output(word); + } + } + } + } +} diff --git a/java/google/registry/env/common/backend/WEB-INF/web.xml b/java/google/registry/env/common/backend/WEB-INF/web.xml index 5965f59dc..d37a3780a 100644 --- a/java/google/registry/env/common/backend/WEB-INF/web.xml +++ b/java/google/registry/env/common/backend/WEB-INF/web.xml @@ -57,6 +57,19 @@ /_dr/task/brdaCopy + + + + + backend-servlet + /_dr/task/generateInvoices + + + +