Releases: googleapis/google-cloud-java
0.9.0
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
0.8.3
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
0.8.1
0.8.0
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
Naming, interface changes
- SPI classes ending in
Api
have been renamed so that they end inClient
(#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
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 usereturnImmediately=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
'sposition
tolong
to fix integer overflow on big files (#1390)
0.5.1
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
'snamespace(String)
setter in favor ofsetNamespace(String)
, undo deprecatingTransaction.Response.getGeneratedKeys()
(#1358)
- Avoid shading
javax
package ingoogle-cloud-nio
shaded jar (#1362)
0.5.0
Naming changes
- Getters and setters with the
get
andset
prefix have been added to all classes/builders. Older getters/setters (withoutget/set
prefix) have been deprecated - Builder factory methods
builder()
have been deprecated, you should usenewBuilder()
instead defaultInstance()
factory methods have been deprecated, you should usegetDefaultInstance()
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 viagcloud
(#1303) - Add
reset()
method toLocalDatastoreHelper
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 preventsReadChannel
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
Features
BigQuery
- Add
of(String)
factory method to DatasetInfo (#1275)
bigquery.create(DatasetInfo.of("dataset-name"));
Core
google-cloud
now depends onprotobuf 3.0.0
andgrpc 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
}
- Add support for customer-supplied encryption keys (#1236)
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
usingMap<Str, ? extends Object>
rather thanMap<Str, Object>
(#1259)
Datastore
- Retry
ABORTED
Datastore commits only when the commit wasNON_TRANSACTIONAL
(#1235)
Logging
- Remove unnecessary
MetricInfo
parameter fromMetric.updateAsync()
(#1221) - Remove unnecessary
SinkInfo
parameter fromSink.updateAsync()
(#1222) Logging.deleteSink
now returnsfalse
onNOT_FOUND
(#1222)
Storage
0.3.0
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
GCLOUD_PROJECT
environment variable is now deprecated, useGOOGLE_CLOUD_PROJECT
to set your default project id.- The project URL is now: https://googlecloudplatform.github.io/google-cloud-java/
- The GitHub repo is now: https://github.com/GoogleCloudPlatform/google-cloud-java/