Skip to content

Releases: googleapis/google-cloud-java

0.9.0

13 Feb 16:11
Compare
Choose a tag to compare

Pub/Sub High-Performance Rewrite

The Pub/Sub client has been completely rewritten to enable high throughput. The handwritten layer on top of the SPI layer has been deprecated, and two handwritten classes have been added in the SPI layer, Publisher and Subscriber, for publishing and subscribing. (Note for those concerned: synchronous pull is still possible in SubscriberClient.) The handwritten layer was deprecated because the SPI layer can be kept up to date more easily with new service features. Since the change is so disruptive, we have retained the deprecated classes, but moved them under com.google.cloud.pubsub.deprecated. They will be removed before the Pub/Sub client goes to GA.

Logging

  • add zone to GAE Flex logging enhancer (#1589)
  • fix(logging): Make LoggingHandler.Enhancer interface public (#1607)

SPI layer changes

  • SPI layer: Regenerating with RpcStreamObserver (#1611)
    • This change is a prerequisite to enabling the shading of Guava

Docs

  • Javadocs: adding links to external types (#1600)
  • fix a typo in README.md (#1604)

0.8.3

03 Feb 23:47
Compare
Choose a tag to compare

Fixes

  • (Storage) Allow path in URIs passed to newFileSystem (#1470)
  • (Storage) Add a PathMatcher for CloudStorageFileSystem (#1469)
  • (Logging) Preventing logging re-entrance at FINE level (#1523)
  • (Logging) Set timestamp from LogRecord (#1533)
  • (Logging) Initialize the default MonitoredResource from a GAE environment (#1535)
  • (BigQuery) BigQuery: Add support to FormatOptions for AVRO (#1576)

SPI layer changes

  • use RpcFuture and remove old BundlingSettings (#1572)
  • fix DefaultLoggingRpc (#1584)

0.8.1

10 Jan 01:12
Compare
Choose a tag to compare

Dependency updates

The dependency on grpc was bumped from 1.0.1 to 1.0.3. (#1504)

Interface changes

  • SPI layer: Converted Error Reporting, Monitoring, and Pub/Sub to use resource name types, and removed formatX/parseX methods (#1454)

Test improvements

  • Fixed more races in pubsub tests (#1473)

0.8.0

09 Dec 00:24
Compare
Choose a tag to compare

Select clients going from Alpha to Beta

In this release, clients for four APIs are moving to beta:

  • Google Cloud BigQuery
  • Stackdriver Logging
  • Google Cloud Datastore
  • Google Cloud Storage

Their versions will have “-beta” on the end call out that fact. All other clients are still Alpha.

Features

  • QueryParameter support added to BigQuery, DATE/TIME/DATETIME added to LegacySQLTypeName (#1451)

Interface changes

  • Logging api layer: using resource name classes instead of strings where appropriate (#1454)

Test improvements

Several tests were flaky on AppVeyor, so improvements were made to make them more reliable.

  • BlockingProcessStreamReader (#1457)
  • BigQuery integration tests (#1456)
  • PubSub integration tests (#1453)
  • DNS tests: removed LocalDnsHelper and its test (#1446)

Despite that, integration tests were still failing on AppVeyor, so they have been disabled until they can all run reliably - tracking issue: #1429

Documentation, Snippets

0.7.0

25 Nov 01:57
Compare
Choose a tag to compare

Naming, interface changes

  • SPI classes ending in Api have been renamed so that they end in Client (#1417)
  • Deleted the client for Natural Language v1beta1, added the client for Natural Language v1 (#1417)
  • PubSub SPI classes now take resource name classes instead of strings (#1403)

Features

  • Speech SPI layer: AsyncRecognize now returns a new OperationFuture type which enables an easier way to get the final result of the long-running operation. (#1419)

Documentation, Snippets

0.6.0

15 Nov 03:00
Compare
Choose a tag to compare

Credentials changes

AuthCredentials classes have been deleted. Use classes from google-auth-library-java for authentication.

google-cloud will still try to infer credentials from the environment when no credentials are provided:

Storage storage = StorageOptions.getDefaultInstance().getService();

You can also explicitly provide credentials. For instance, to use a JSON credentials file try the following code:

Storage storage = StorageOptions.newBuilder()
    .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json"))
    .build()
    .getService();

For more details see the Authentication section of the main README.

Features

PubSub

  • All pullAsync methods now use returnImmediately=false and are not subject to client-side timeouts (#1387)

Translate

  • Add support for the TranslateOption.model(String) option which allows to set the language translation model used to translate text. This option is only available to whitelisted users (#1393)

Fixes

Storage

  • Change BaseWriteChannel's position to long to fix integer overflow on big files (#1390)

0.5.1

06 Nov 19:08
Compare
Choose a tag to compare

Fixes

All

  • Reduce gRPC dependency footprint. In particular, some gRPC-related dependencies are removed from google-cloud-core module. Get rid of duplicate classes (#1365)

Datastore

  • Deprecate DatastoreOptions.Builder's namespace(String) setter in favor of setNamespace(String), undo deprecating Transaction.Response.getGeneratedKeys() (#1358)

  • Avoid shading javax package in google-cloud-nio shaded jar (#1362)

0.5.0

29 Oct 21:44
Compare
Choose a tag to compare

Naming changes

  • Getters and setters with the get and set prefix have been added to all classes/builders. Older getters/setters (without get/set prefix) have been deprecated
  • Builder factory methods builder() have been deprecated, you should use newBuilder() instead
  • defaultInstance() factory methods have been deprecated, you should use getDefaultInstance() instead

See the following example of using google-cloud-storage after the naming changes:

Storage storage = StorageOptions.getDefaultInstance().getService();
BlobId blobId = BlobId.of("bucket", "blob_name");
Blob blob = storage.get(blobId);
if (blob != null) {
  byte[] prevContent = blob.getContent();
  System.out.println(new String(prevContent, UTF_8));
  WritableByteChannel channel = blob.writer();
  channel.write(ByteBuffer.wrap("Updated content".getBytes(UTF_8)));
  channel.close();
}

Features

Datastore

  • Add support to LocalDatastoreHelper for more recent version of the Datastore emulator installed via gcloud (#1303)
  • Add reset() method to LocalDatastoreHelper to clear the status of the Datastore emulator (#1293)

PubSub

  • Add support for PubSub emulator host variable. If the PUBSUB_EMULATOR_HOST environment variable is set, the PubSub client uses it to locate the PubSub emulator. (#1317)

Fixes

Datastore

  • Allow LocalDatastoreHelper to properly cache downloaded copies of the Datastore emulator (#1302)

Storage

  • Fix regression in Storage.signUrl to support blob names containing / characters (#1346)
  • Allow Storage.reader to read gzip blobs in compressed chunks. This prevents ReadChannel from trying (and failing) to uncompress gzipped chunks (#1301)

Storage NIO

  • All dependencies are now shaded in the google-cloud-nio shaded jar (#1327)

0.4.0

29 Sep 17:27
Compare
Choose a tag to compare

Features

BigQuery

  • Add of(String) factory method to DatasetInfo (#1275)
bigquery.create(DatasetInfo.of("dataset-name"));

Core

  • google-cloud now depends on protobuf 3.0.0 and grpc 1.0.1 (#1273)

PubSub

  • Add support for IAM methods for sinks and subscriptions (#1231)
// Example of replacing a subscription policy
Policy policy = pubsub.getSubscriptionPolicy(subscriptionName);
Policy updatedPolicy = policy.toBuilder()
    .addIdentity(Role.viewer(), Identity.allAuthenticatedUsers())
    .build();
updatedPolicy = pubsub.replaceSubscriptionPolicy(subscriptionName, updatedPolicy);

// Example of asynchronously replacing a topic policy
Policy policy = pubsub.getTopicPolicy(topicName);
Policy updatedPolicy = policy.toBuilder()
    .addIdentity(Role.viewer(), Identity.allAuthenticatedUsers())
    .build();
Future<Policy> future = pubsub.replaceTopicPolicyAsync(topicName, updatedPolicy);
// ...
updatedPolicy = future.get();

Storage

  • Add support for create/get/update/delete/list ACLs for blobs and buckets (#1228)
// Example of updating the ACL for a blob
BlobId blobId = BlobId.of(bucketName, blobName, blobGeneration);
Acl acl = storage.updateAcl(blobId, Acl.of(User.ofAllAuthenticatedUsers(), Role.OWNER));

// Example of listing the ACL entries for a bucket
List<Acl> acls = storage.listAcls(bucketName);
for (Acl acl : acls) {
   // do something with ACL entry
}
Key key = ...;
String base64Key = ...;
byte[] content = {0xD, 0xE, 0xA, 0xD};
BlobInfo blobInfo = BlobInfo.builder(bucketName, blobName).build();

// Example of creating a blob with a customer-supplied encryption key (as Key object)
storage.create(blobInfo, content, Storage.BlobTargetOption.encryptionKey(key));

// Example of reading a blob with a customer-supplied decryption key (as base64 String)
byte[] readBytes =
    storage.readAllBytes(bucketName, blobName, Storage.BlobSourceOption.decryptionKey(base64Key));

Fixes

BigQuery

  • Support operations on tables/datasets/jobs in projects other than the one set in BigQueryOptions (#1217)
  • Allow constructing a RowToInsert using Map<Str, ? extends Object> rather than Map<Str, Object> (#1259)

Datastore

  • Retry ABORTED Datastore commits only when the commit was NON_TRANSACTIONAL (#1235)

Logging

  • Remove unnecessary MetricInfo parameter from Metric.updateAsync() (#1221)
  • Remove unnecessary SinkInfo parameter from Sink.updateAsync() (#1222)
  • Logging.deleteSink now returns false on NOT_FOUND (#1222)

Storage

  • Retry calls that open a resumable upload session in WriteChannel, when they fail with a retryable error (#1233)
  • Fix generation of signed URLs for blobs containing spaces and other special chars (#1277 - thanks to @ostronom)

0.3.0

31 Aug 13:23
Compare
Choose a tag to compare

gcloud-java renamed to google-cloud

gcloud-java has been deprecated and renamed to google-cloud.

If you are using Maven, add this to your pom.xml file

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud</artifactId>
  <version>0.3.0</version>
</dependency>

If you are using Gradle, add this to your dependencies

compile 'com.google.cloud:google-cloud:0.3.0'

If you are using SBT, add this to your dependencies

libraryDependencies += "com.google.cloud" % "google-cloud" % "0.3.0"

gcloud-java-<service> renamed to google-cloud-<service>

Service-specific artifacts have also been renamed from gcloud-java-<service> to google-cloud-<service>. See the following for examples of adding google-cloud-datastore as a dependency:

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-datastore</artifactId>
  <version>0.3.0</version>
</dependency>

If you are using Gradle, add this to your dependencies

compile 'com.google.cloud:google-cloud-datastore:0.3.0'

If you are using SBT, add this to your dependencies

libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "0.3.0"

Other changes