Skip to content

Commit 0d15782

Browse files
committed
---
yaml --- r: 993 b: refs/heads/master c: 8d19606 h: refs/heads/master i: 991: 6eff94a v: v3
1 parent e56c56d commit 0d15782

5 files changed

Lines changed: 152 additions & 2 deletions

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
---
2-
refs/heads/master: c1d1fb72463009421db951e618b67dd1885c1053
2+
refs/heads/master: 8d1960661f84cdd440deee26f003d3855f78f318
33
refs/heads/travis: 0fa997e2fc9c6b61b2d91e6d163655aae67d44b6
44
refs/heads/gh-pages: 5a10432ecc75f29812e33a8236c900379509fe99

trunk/gcloud-java-core/src/main/java/com/google/gcloud/ServiceOptions.java

Lines changed: 113 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static java.nio.charset.StandardCharsets.UTF_8;
2323

2424
import com.google.api.client.extensions.appengine.http.UrlFetchTransport;
25+
import com.google.api.client.http.HttpRequest;
2526
import com.google.api.client.http.HttpRequestInitializer;
2627
import com.google.api.client.http.HttpTransport;
2728
import com.google.api.client.http.javanet.NetHttpTransport;
@@ -60,6 +61,8 @@ public abstract class ServiceOptions<
6061
private final AuthCredentials authCredentials;
6162
private final RetryParams retryParams;
6263
private final ServiceRpcFactory<ServiceRpcT, OptionsT> serviceRpcFactory;
64+
private final int connectTimeout;
65+
private final int readTimeout;
6366

6467
public interface HttpTransportFactory extends Serializable {
6568
HttpTransport create();
@@ -102,6 +105,8 @@ protected abstract static class Builder<
102105
private AuthCredentials authCredentials;
103106
private RetryParams retryParams;
104107
private ServiceRpcFactory<ServiceRpcT, OptionsT> serviceRpcFactory;
108+
private int connectTimeout = -1;
109+
private int readTimeout = -1;
105110

106111
protected Builder() {}
107112

@@ -121,35 +126,89 @@ protected B self() {
121126
return (B) this;
122127
}
123128

129+
/**
130+
* Sets project id.
131+
*
132+
* @return the builder.
133+
*/
124134
public B projectId(String projectId) {
125135
this.projectId = projectId;
126136
return self();
127137
}
128138

139+
/**
140+
* Sets service host.
141+
*
142+
* @return the builder.
143+
*/
129144
public B host(String host) {
130145
this.host = host;
131146
return self();
132147
}
133148

149+
/**
150+
* Sets the transport factory.
151+
*
152+
* @return the builder.
153+
*/
134154
public B httpTransportFactory(HttpTransportFactory httpTransportFactory) {
135155
this.httpTransportFactory = httpTransportFactory;
136156
return self();
137157
}
138158

159+
/**
160+
* Sets the service authentication credentials.
161+
*
162+
* @return the builder.
163+
*/
139164
public B authCredentials(AuthCredentials authCredentials) {
140165
this.authCredentials = authCredentials;
141166
return self();
142167
}
143168

169+
/**
170+
* Sets configuration parameters for request retries.
171+
*
172+
* @return the builder.
173+
*/
144174
public B retryParams(RetryParams retryParams) {
145175
this.retryParams = retryParams;
146176
return self();
147177
}
148178

179+
/**
180+
* Sets the factory for rpc services.
181+
*
182+
* @return the builder
183+
*/
149184
public B serviceRpcFactory(ServiceRpcFactory<ServiceRpcT, OptionsT> serviceRpcFactory) {
150185
this.serviceRpcFactory = serviceRpcFactory;
151186
return self();
152187
}
188+
189+
/**
190+
* Sets the timeout in milliseconds to establish a connection.
191+
*
192+
* @param connectTimeout connection timeout in milliseconds. 0 for an infinite timeout, a
193+
* negative number for the default value (20000).
194+
* @return the builder.
195+
*/
196+
public B connectTimeout(int connectTimeout) {
197+
this.connectTimeout = connectTimeout;
198+
return self();
199+
}
200+
201+
/**
202+
* Sets the timeout in milliseconds to read data from an established connection.
203+
*
204+
* @param readTimeout read timeout in milliseconds. 0 for an infinite timeout, a
205+
* negative number for the default value (20000).
206+
* @return the builder.
207+
*/
208+
public B readTimeout(int readTimeout) {
209+
this.readTimeout = readTimeout;
210+
return self();
211+
}
153212
}
154213

155214
protected ServiceOptions(Builder<ServiceRpcT, OptionsT, ?> builder) {
@@ -160,6 +219,8 @@ protected ServiceOptions(Builder<ServiceRpcT, OptionsT, ?> builder) {
160219
authCredentials = firstNonNull(builder.authCredentials, defaultAuthCredentials());
161220
retryParams = builder.retryParams;
162221
serviceRpcFactory = builder.serviceRpcFactory;
222+
connectTimeout = builder.connectTimeout;
223+
readTimeout = builder.readTimeout;
163224
}
164225

165226
private static AuthCredentials defaultAuthCredentials() {
@@ -277,33 +338,84 @@ protected static String getAppEngineProjectId() {
277338

278339
protected abstract Set<String> scopes();
279340

341+
/**
342+
* Returns the project id.
343+
*/
280344
public String projectId() {
281345
return projectId;
282346
}
283347

348+
/**
349+
* Returns the service host.
350+
*/
284351
public String host() {
285352
return host;
286353
}
287354

355+
/**
356+
* Returns the transport factory.
357+
*/
288358
public HttpTransportFactory httpTransportFactory() {
289359
return httpTransportFactory;
290360
}
291361

362+
/**
363+
* Returns the authentication credentials.
364+
*/
292365
public AuthCredentials authCredentials() {
293366
return authCredentials;
294367
}
295368

369+
/**
370+
* Returns configuration parameters for request retries.
371+
*/
296372
public RetryParams retryParams() {
297373
return retryParams != null ? retryParams : RetryParams.noRetries();
298374
}
299375

376+
/**
377+
* Returns the factory for rpc services.
378+
*/
300379
public ServiceRpcFactory<ServiceRpcT, OptionsT> serviceRpcFactory() {
301380
return serviceRpcFactory;
302381
}
303382

383+
/**
384+
* Returns a request initializer responsible for initializing requests according to service
385+
* options.
386+
*/
304387
public HttpRequestInitializer httpRequestInitializer() {
305388
HttpTransport httpTransport = httpTransportFactory.create();
306-
return authCredentials().httpRequestInitializer(httpTransport, scopes());
389+
final HttpRequestInitializer baseRequestInitializer =
390+
authCredentials().httpRequestInitializer(httpTransport, scopes());
391+
return new HttpRequestInitializer() {
392+
@Override
393+
public void initialize(HttpRequest httpRequest) throws IOException {
394+
baseRequestInitializer.initialize(httpRequest);
395+
if (connectTimeout >= 0) {
396+
httpRequest.setConnectTimeout(connectTimeout);
397+
}
398+
if (readTimeout >= 0) {
399+
httpRequest.setReadTimeout(readTimeout);
400+
}
401+
}
402+
};
403+
}
404+
405+
/**
406+
* Returns the timeout in milliseconds to establish a connection. 0 is an infinite timeout, a
407+
* negative number is the default value (20000).
408+
*/
409+
public int connectTimeout() {
410+
return connectTimeout;
411+
}
412+
413+
/**
414+
* Returns the timeout in milliseconds to read from an established connection. 0 is an infinite
415+
* timeout, a negative number is the default value (20000).
416+
*/
417+
public int readTimeout() {
418+
return readTimeout;
307419
}
308420

309421
protected int baseHashCode() {

trunk/gcloud-java-examples/README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,35 @@ Add this to your pom.xml file
2020
</dependency>
2121
```
2222

23+
To run examples from your command line:
24+
25+
1. Login using gcloud SDK (`gcloud auth login` in command line)
26+
27+
2. Set your current project using `gcloud config set project PROJECT_ID`
28+
29+
3. Compile using Maven (`mvn compile` in command line from your base project directory)
30+
31+
4. Run an example using Maven from command line.
32+
33+
Here's an example run of `DatastoreExample`.
34+
35+
Note that you have to enable the Google Cloud Datastore API on the [Google Developers Console][developers-console] before running the following commands.
36+
```
37+
$mvn exec:java -Dexec.mainClass="com.google.gcloud.examples.DatastoreExample" -Dexec.args="my_name add my\ comment"
38+
$mvn exec:java -Dexec.mainClass="com.google.gcloud.examples.DatastoreExample" -Dexec.args="my_name display"
39+
$mvn exec:java -Dexec.mainClass="com.google.gcloud.examples.DatastoreExample" -Dexec.args="my_name delete"
40+
```
41+
42+
Here's an example run of `StorageExample`.
43+
44+
Before running the example, go to the [Google Developers Console][developers-console] to ensure that Google Cloud Storage API is enabled and that you have a bucket. Also ensure that you have a test file (`test.txt` is chosen here) to upload to Cloud Storage stored locally on your machine.
45+
```
46+
$mvn exec:java -Dexec.mainClass="com.google.gcloud.examples.StorageExample" -Dexec.args="upload /path/to/test.txt <bucket_name>"
47+
$mvn exec:java -Dexec.mainClass="com.google.gcloud.examples.StorageExample" -Dexec.args="list <bucket_name>"
48+
$mvn exec:java -Dexec.mainClass="com.google.gcloud.examples.StorageExample" -Dexec.args="download <bucket_name> test.txt"
49+
$mvn exec:java -Dexec.mainClass="com.google.gcloud.examples.StorageExample" -Dexec.args="delete <bucket_name> test.txt"
50+
```
51+
2352
Contributing
2453
------------
2554

@@ -50,3 +79,4 @@ Apache 2.0 - See [LICENSE] for more information.
5079
[CONTRIBUTING]:https://github.com/GoogleCloudPlatform/gcloud-java/blob/master/CONTRIBUTING.md
5180
[LICENSE]: https://github.com/GoogleCloudPlatform/gcloud-java/blob/master/LICENSE
5281
[cloud-platform]: https://cloud.google.com/
82+
[developers-console]:https://console.developers.google.com/

trunk/gcloud-java-storage/src/main/java/com/google/gcloud/storage/Storage.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,9 +632,15 @@ public static Builder builder() {
632632
* is only valid within a certain time period.
633633
* This is particularly useful if you don't want publicly
634634
* accessible blobs, but don't want to require users to explicitly log in.
635+
* <p>
636+
* Example usage of creating a signed URL that is valid for 2 weeks:
637+
* <pre> {@code
638+
* service.signUrl(BlobInfo.of("bucket", "name"), TimeUnit.DAYS.toSeconds(14));
639+
* }</pre>
635640
*
636641
* @param blobInfo the blob associated with the signed url
637642
* @param expirationTimeInSeconds the signed URL expiration (using epoch time)
643+
* @param options optional URL signing options
638644
* @see <a href="https://cloud.google.com/storage/docs/access-control#Signed-URLs">Signed-URLs</a>
639645
*/
640646
URL signUrl(BlobInfo blobInfo, long expirationTimeInSeconds, SignUrlOption... options);

trunk/gcloud-java-storage/src/main/java/com/google/gcloud/storage/testing/RemoteGcsHelper.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ public static RemoteGcsHelper create(String projectId, String keyPath, Option...
133133
.totalRetryPeriodMillis(120000)
134134
.initialRetryDelayMillis(250)
135135
.build())
136+
.connectTimeout(60000)
137+
.readTimeout(60000)
136138
.build();
137139
return new RemoteGcsHelper(storageOptions);
138140
} catch (FileNotFoundException ex) {

0 commit comments

Comments
 (0)