Revision created by MOE tool push_codebase.
[gae.git] / java / src / main / com / google / appengine / api / search / SearchServiceConfig.java
blobaa42b7a6c2a2dd3db6a5c9670ebe758e4bd1794e
1 package com.google.appengine.api.search;
3 import com.google.appengine.api.NamespaceManager;
5 /**
6 * Configuration options for Search API.
7 */
8 public final class SearchServiceConfig {
10 private final Double deadline;
11 private final String namespace;
13 private SearchServiceConfig(SearchServiceConfig.Builder builder) {
14 deadline = builder.deadline;
15 namespace = builder.namespace;
18 /**
19 * Builder for {@link SearchServiceConfig}.
21 public static final class Builder {
23 private Double deadline;
24 private String namespace;
26 private Builder(SearchServiceConfig config) {
27 deadline = config.deadline;
28 namespace = config.namespace;
31 private Builder() {
34 public SearchServiceConfig.Builder setDeadline(Double deadlineInSeconds)
35 throws SearchServiceException {
36 if (deadlineInSeconds != null && deadlineInSeconds <= 0.0) {
37 throw new IllegalArgumentException("Invalid Deadline. Must be a positive number.");
39 this.deadline = deadlineInSeconds;
40 return this;
43 public SearchServiceConfig.Builder setNamespace(String namespace) {
44 if (namespace != null) {
45 NamespaceManager.validateNamespace(namespace);
47 this.namespace = namespace;
48 return this;
51 /**
52 * Builds a configuration.
54 * @return the configuration built by this builder
56 public SearchServiceConfig build() {
57 return new SearchServiceConfig(this);
61 /**
62 * Creates a new {@link SearchServiceConfig.Builder}.
64 * @return the newly created {@link SearchServiceConfig.Builder} instance
66 public static SearchServiceConfig.Builder newBuilder() {
67 return new SearchServiceConfig.Builder();
70 /**
71 * Converts this config instance to a builder.
73 * @return the newly created {@link SearchServiceConfig.Builder} instance
75 public SearchServiceConfig.Builder toBuilder() {
76 return new SearchServiceConfig.Builder(this);
79 /**
80 * Returns the API deadline in seconds.
82 * @return the deadline in seconds or null if no deadline has been set
84 public Double getDeadline() {
85 return deadline;
88 public String getNamespace() {
89 return namespace;