AirshipConfigOptions { public void validate() { String modeString = inProduction ? "production" : "development"; if (!APP_CREDENTIAL_PATTERN.matcher(appKey).matches()) { throw new IllegalArgumentException("AirshipConfigOptions: " + appKey + " is not a valid " + modeString + " app key"); } if (!APP_CREDENTIAL_PATTERN.matcher(appSecret).matches()) { throw new IllegalArgumentException("AirshipConfigOptions: " + appSecret + " is not a valid " + modeString + " app secret"); } if (backgroundReportingIntervalMS < MIN_BG_REPORTING_INTERVAL_MS) { Logger.warn("AirshipConfigOptions - The backgroundReportingIntervalMS %s may decrease battery life.", backgroundReportingIntervalMS); } else if (backgroundReportingIntervalMS > MAX_BG_REPORTING_INTERVAL_MS) { Logger.warn("AirshipConfigOptions - The backgroundReportingIntervalMS %s may provide less detailed analytic reports.", backgroundReportingIntervalMS); } } private  AirshipConfigOptions(@NonNull Builder builder); void validate(); @NonNull static Builder newBuilder(); @NonNull
    static final String SITE_US; @NonNull
    static final String SITE_EU; @NonNull
    static final String ADM_TRANSPORT; @NonNull
    static final String FCM_TRANSPORT; @NonNull
    static final String HMS_TRANSPORT; @NonNull
    final String appKey; @NonNull
    final String appSecret; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
    @NonNull
    final String deviceUrl; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
    @NonNull
    final String analyticsUrl; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
    @NonNull
    final String remoteDataUrl; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
    @NonNull
    final String walletUrl; @Nullable
    final Uri appStoreUri; @Nullable
    final String fcmSenderId; @NonNull
    final List<String> allowedTransports; @Nullable
    final PushProvider customPushProvider; @NonNull
    final List<String> urlAllowList; @NonNull
    final List<String> urlAllowListScopeJavaScriptInterface; @NonNull
    final List<String> urlAllowListScopeOpenUrl; final boolean analyticsEnabled; final long backgroundReportingIntervalMS; final int logLevel; final boolean autoLaunchApplication; final boolean channelCreationDelayEnabled; final boolean channelCaptureEnabled; final boolean dataCollectionOptInEnabled; final boolean extendedBroadcastsEnabled; @DrawableRes
    final int notificationIcon; @DrawableRes
    final int notificationLargeIcon; @ColorInt
    final int notificationAccentColor; @Nullable
    final String notificationChannel; final boolean inProduction; }
@Test public void testValidate() { AirshipConfigOptions valid = AirshipConfigOptions.newBuilder() .setAppKey("-----1abc123_-90000000") .setAppSecret("0A00000000000000000000") .build(); valid.validate(); }