Refactor ICANN reporting and billing into common package

This moves the default yearMonth logic into a common ReportingModule, rather than the coarse-scoped BackendModule, which may not want the default parameter extraction logic, as well as moving the 'yearMonth' parameter constant to the common package it's used in. This also provides a basis for future consolidation of the ReportingEmailUtils and BillingEmailUtils classes, which have modest overlap.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=183130311
This commit is contained in:
larryruili 2018-01-24 13:16:51 -08:00 committed by Ben McIlwain
parent 9d532cb507
commit 74ced1e907
71 changed files with 233 additions and 142 deletions

View file

@ -11,7 +11,6 @@ java_library(
"//java/google/registry/backup",
"//java/google/registry/batch",
"//java/google/registry/bigquery",
"//java/google/registry/billing",
"//java/google/registry/config",
"//java/google/registry/cron",
"//java/google/registry/dns",
@ -31,6 +30,8 @@ java_library(
"//java/google/registry/rde",
"//java/google/registry/rde/imports",
"//java/google/registry/reporting",
"//java/google/registry/reporting/billing",
"//java/google/registry/reporting/icann",
"//java/google/registry/request",
"//java/google/registry/request:modules",
"//java/google/registry/request/auth",

View file

@ -16,9 +16,7 @@ package google.registry.module.backend;
import static google.registry.model.registry.Registries.assertTldExists;
import static google.registry.model.registry.Registries.assertTldsExist;
import static google.registry.request.RequestParameters.PARAM_YEAR_MONTH;
import static google.registry.request.RequestParameters.extractOptionalDatetimeParameter;
import static google.registry.request.RequestParameters.extractOptionalParameter;
import static google.registry.request.RequestParameters.extractRequiredParameter;
import static google.registry.request.RequestParameters.extractSetOfParameters;
@ -26,16 +24,11 @@ import com.google.common.collect.ImmutableSet;
import dagger.Module;
import dagger.Provides;
import google.registry.batch.ExpandRecurringBillingEventsAction;
import google.registry.request.HttpException.BadRequestException;
import google.registry.request.Parameter;
import google.registry.request.RequestParameters;
import google.registry.util.Clock;
import java.util.Optional;
import javax.servlet.http.HttpServletRequest;
import org.joda.time.DateTime;
import org.joda.time.YearMonth;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
/**
* Dagger module for injecting common settings for all Backend tasks.
@ -63,30 +56,4 @@ public class BackendModule {
return extractOptionalDatetimeParameter(
req, ExpandRecurringBillingEventsAction.PARAM_CURSOR_TIME);
}
/** Extracts an optional YearMonth in yyyy-MM format from the request. */
@Provides
@Parameter(PARAM_YEAR_MONTH)
static Optional<YearMonth> provideYearMonthOptional(HttpServletRequest req) {
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM");
Optional<String> optionalYearMonthStr = extractOptionalParameter(req, PARAM_YEAR_MONTH);
try {
return optionalYearMonthStr.map(s -> YearMonth.parse(s, formatter));
} catch (IllegalArgumentException e) {
throw new BadRequestException(
String.format(
"yearMonth must be in yyyy-MM format, got %s instead",
optionalYearMonthStr.orElse("UNSPECIFIED YEARMONTH")));
}
}
/**
* Provides the yearMonth in yyyy-MM format, if not specified in the request, defaults to one
* month prior to run time.
*/
@Provides
static YearMonth provideYearMonth(
@Parameter(PARAM_YEAR_MONTH) Optional<YearMonth> yearMonthOptional, Clock clock) {
return yearMonthOptional.orElseGet(() -> new YearMonth(clock.nowUtc().minusMonths(1)));
}
}

View file

@ -28,10 +28,6 @@ import google.registry.batch.MapreduceEntityCleanupAction;
import google.registry.batch.RefreshDnsOnHostRenameAction;
import google.registry.batch.ResaveAllEppResourcesAction;
import google.registry.batch.VerifyEntityIntegrityAction;
import google.registry.billing.BillingModule;
import google.registry.billing.CopyDetailReportsAction;
import google.registry.billing.GenerateInvoicesAction;
import google.registry.billing.PublishInvoicesAction;
import google.registry.cron.CommitLogFanoutAction;
import google.registry.cron.CronModule;
import google.registry.cron.TldFanoutAction;
@ -69,9 +65,14 @@ import google.registry.rde.imports.RdeDomainImportAction;
import google.registry.rde.imports.RdeHostImportAction;
import google.registry.rde.imports.RdeHostLinkAction;
import google.registry.rde.imports.RdeImportsModule;
import google.registry.reporting.IcannReportingModule;
import google.registry.reporting.IcannReportingStagingAction;
import google.registry.reporting.IcannReportingUploadAction;
import google.registry.reporting.ReportingModule;
import google.registry.reporting.billing.BillingModule;
import google.registry.reporting.billing.CopyDetailReportsAction;
import google.registry.reporting.billing.GenerateInvoicesAction;
import google.registry.reporting.billing.PublishInvoicesAction;
import google.registry.reporting.icann.IcannReportingModule;
import google.registry.reporting.icann.IcannReportingStagingAction;
import google.registry.reporting.icann.IcannReportingUploadAction;
import google.registry.request.RequestComponentBuilder;
import google.registry.request.RequestModule;
import google.registry.request.RequestScope;
@ -101,6 +102,7 @@ import google.registry.tmch.TmchSmdrlAction;
MapreduceModule.class,
RdeModule.class,
RdeImportsModule.class,
ReportingModule.class,
RequestModule.class,
SheetModule.class,
TmchModule.class,